ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

sysaudio.h
Go to the documentation of this file.
00001 #include <ntifs.h>
00002 #include <ntddk.h>
00003 #include <portcls.h>
00004 #include <ks.h>
00005 #include <ksmedia.h>
00006 #include <math.h>
00007 #define NDEBUG
00008 #include <debug.h>
00009 #include <stdio.h>
00010 
00011 typedef struct
00012 {
00013     HANDLE PinHandle;                       // handle to audio irp pin
00014     ULONG References;                       // number of clients having a reference to this audio irp pin
00015 }PIN_INFO;
00016 
00017 typedef struct
00018 {
00019     LIST_ENTRY Entry;                                  // device entry for KsAudioDeviceList
00020     UNICODE_STRING DeviceName;                         // symbolic link of audio device
00021 
00022     HANDLE Handle;                          // handle to audio device
00023     PFILE_OBJECT FileObject;                // file objecto to audio device
00024 
00025     //PIN_INFO * Pins;                        // array of PIN_INFO
00026 }KSAUDIO_DEVICE_ENTRY, *PKSAUDIO_DEVICE_ENTRY;
00027 
00028 typedef struct
00029 {
00030     KSDEVICE_HEADER KsDeviceHeader;                     // ks streaming header - must always be first item in device extension
00031     PDEVICE_OBJECT PhysicalDeviceObject;                // pdo
00032     PDEVICE_OBJECT NextDeviceObject;                    // lower device object
00033     ULONG NumberOfKsAudioDevices;                       // number of audio devices
00034 
00035     LIST_ENTRY KsAudioDeviceList;                       // audio device list
00036     PVOID KsAudioNotificationEntry;                     // ks audio notification hook
00037     PVOID EchoCancelNotificationEntry;                  // ks echo cancel notification hook
00038     KSPIN_LOCK Lock;                                    // audio device list mutex
00039 
00040     PFILE_OBJECT KMixerFileObject;                      // mixer file object
00041     HANDLE KMixerHandle;                                // mixer file handle
00042 
00043 }SYSAUDIODEVEXT, *PSYSAUDIODEVEXT;
00044 
00045 // struct DISPATCH_CONTEXT
00046 //
00047 // This structure is used to dispatch read / write / device io requests
00048 // It is stored in the file object FsContext2 member
00049 // Note: FsContext member is reserved for ks object header
00050 
00051 typedef struct
00052 {
00053     KSOBJECT_HEADER ObjectHeader;                        // pin object header
00054     HANDLE Handle;                                       // audio irp pin handle
00055     ULONG PinId;                                         // pin id of device
00056     PKSAUDIO_DEVICE_ENTRY AudioEntry;                 // pointer to audio device entry
00057 
00058     HANDLE hMixerPin;                                    // handle to mixer pin
00059 }DISPATCH_CONTEXT, *PDISPATCH_CONTEXT;
00060 
00061 NTSTATUS
00062 SysAudioAllocateDeviceHeader(
00063     IN SYSAUDIODEVEXT *DeviceExtension);
00064 
00065 NTSTATUS
00066 SysAudioRegisterDeviceInterfaces(
00067     IN PDEVICE_OBJECT DeviceObject);
00068 
00069 NTSTATUS
00070 SysAudioRegisterNotifications(
00071     IN PDRIVER_OBJECT  DriverObject,
00072     IN PDEVICE_OBJECT DeviceObject);
00073 
00074 NTSTATUS
00075 SysAudioHandleProperty(
00076     PDEVICE_OBJECT DeviceObject,
00077     PIRP Irp);
00078 
00079 NTSTATUS
00080 SysAudioOpenKMixer(
00081     IN SYSAUDIODEVEXT *DeviceExtension);
00082 
00083 NTSTATUS
00084 OpenDevice(
00085     IN PUNICODE_STRING DeviceName,
00086     IN PHANDLE HandleOut,
00087     IN PFILE_OBJECT * FileObjectOut);
00088 
00089 PKSAUDIO_DEVICE_ENTRY
00090 GetListEntry(
00091     IN PLIST_ENTRY Head,
00092     IN ULONG Index);
00093 
00094 NTSTATUS
00095 NTAPI
00096 DispatchCreateSysAudioPin(
00097     IN  PDEVICE_OBJECT DeviceObject,
00098     IN  PIRP Irp);
00099 
00100 ULONG
00101 GetDeviceCount(
00102     PSYSAUDIODEVEXT DeviceExtension,
00103     BOOL WaveIn);
00104 
00105 NTSTATUS
00106 GetPinInstanceCount(
00107     PKSAUDIO_DEVICE_ENTRY Entry,
00108     PKSPIN_CINSTANCES PinInstances,
00109     PKSPIN_CONNECT PinConnect);
00110 
00111 NTSTATUS
00112 ComputeCompatibleFormat(
00113     IN PKSAUDIO_DEVICE_ENTRY Entry,
00114     IN ULONG PinId,
00115     IN PKSDATAFORMAT_WAVEFORMATEX ClientFormat,
00116     OUT PKSDATAFORMAT_WAVEFORMATEX MixerFormat);
00117 
00118 PVOID
00119 AllocateItem(
00120     IN POOL_TYPE PoolType,
00121     IN SIZE_T NumberOfBytes);
00122 
00123 VOID
00124 FreeItem(
00125     IN PVOID Item);
00126 

Generated on Sat May 26 2012 04:27:15 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.