ReactOS 0.4.16-dev-197-g92996da
main.c File Reference
#include "sysaudio.h"
#include <debug.h>
Include dependency graph for main.c:

Go to the source code of this file.

Macros

#define NDEBUG
 
#define TAG_SYSAUDIO   'AsyS'
 

Functions

PVOID AllocateItem (IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
 
VOID FreeItem (IN PVOID Item)
 
VOID NTAPI SysAudio_Unload (IN PDRIVER_OBJECT DriverObject)
 
NTSTATUS NTAPI SysAudio_Shutdown (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
 
NTSTATUS NTAPI SysAudio_Pnp (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
 
NTSTATUS NTAPI SysAudio_AddDevice (IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject)
 
NTSTATUS NTAPI DriverEntry (IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
 

Variables

const GUID KSCATEGORY_SYSAUDIO = {0xA7C7A5B1L, 0x5AF3, 0x11D1, {0x9C, 0xED, 0x00, 0xA0, 0x24, 0xBF, 0x04, 0x07}}
 
const GUID KSCATEGORY_AUDIO_DEVICE = {0xFBF6F530L, 0x07B9, 0x11D2, {0xA7, 0x1E, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}}
 
const GUID KSCATEGORY_PREFERRED_WAVEOUT_DEVICE = {0xD6C5066EL, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}}
 
const GUID KSCATEGORY_PREFERRED_WAVEIN_DEVICE = {0xD6C50671L, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}}
 
const GUID KSCATEGORY_PREFERRED_MIDIOUT_DEVICE = {0xD6C50674L, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}}
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 14 of file main.c.

◆ TAG_SYSAUDIO

#define TAG_SYSAUDIO   'AsyS'

Definition at line 17 of file main.c.

Function Documentation

◆ AllocateItem()

PVOID AllocateItem ( IN POOL_TYPE  PoolType,
IN SIZE_T  NumberOfBytes 
)

Definition at line 26 of file main.c.

29{
31}
#define TAG_SYSAUDIO
Definition: main.c:17
FORCEINLINE PVOID ExAllocatePoolZero(ULONG PoolType, SIZE_T NumberOfBytes, ULONG Tag)
Definition: precomp.h:45
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
Definition: wdfdevice.h:3815
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
Definition: iotypes.h:1036

Referenced by _KsEdit(), Alloc(), AllocateInterfaceDescriptorsArray(), AllocEventData(), ComputeCompatibleFormat(), DispatchCreateSysAudio(), DispatchCreateSysAudioPin(), EventCallback(), FDO_CreateChildPdo(), FDO_DeviceRelations(), GetConnectRequest(), CPortPinWaveRT::HandleKsProperty(), HDA_FDOQueryBusRelations(), HDA_InitCodec(), HDA_PDOHandleQueryDeviceText(), HDA_PDOQueryBusInformation(), HDA_PDOQueryId(), IKsDevice_PnpStartDevice(), IKsFilter_CopyFilterDescriptor(), IKsFilter_CreateDescriptors(), IKsFilterFactory_fnInitialize(), InsertAudioDevice(), InstantiatePins(), KopAddDevice(), KopDispatchCreate(), KsAddItemToObjectBag(), KsAllocateDefaultClockEx(), KsAllocateDeviceHeader(), KsAllocateExtraData(), KsAllocateObjectBag(), KsAllocateObjectCreateItem(), KsAllocateObjectHeader(), KsCacheMedium(), KsCreateBusEnumObject(), KsCreateDefaultAllocatorEx(), KsCreateDefaultClock(), KsFilterFactoryUpdateCacheData(), KsGetBusEnumIdentifier(), KsGetImageNameAndResourceId(), KsInitializeDevice(), KsLoadResource(), KsMapModuleName(), KsMergeAutomationTables(), KspAddCreateItemToList(), KspBusQueryReferenceString(), KspCreateDeviceAssociation(), KspCreateDeviceReference(), KspCreateFilter(), KspCreateFilterFactory(), KspCreateObjectType(), KspCreatePDO(), KspCreatePin(), KspEnableEvent(), KspEnumerateBusRegistryKeys(), KspMergePropertySet(), KspPropertyHandler(), KspQueryBusInformation(), KspQueryBusRelations(), KspQueryId(), KspReadMediaCategory(), KspRegisterDeviceInterfaces(), KsProbeStreamIrp(), KspStartBusDevice(), KsRegisterWorker(), KsServiceBusEnumPnpRequest(), KsSetInformationFile(), KsStreamPointerClone(), NewDispatchObject(), PcAddAdapterDevice(), PcAddToPropertyTable(), PcCreateItemDispatch(), PcCreateSubdeviceDescriptor(), PcNewResourceList(), PcNewResourceSublist(), PcRegisterIoTimeout(), PcRegisterSubdevice(), PortClsPower(), PropertyItemDispatch(), QueryKeyValue(), RegisterConnection(), SysAudioAllocateDeviceHeader(), USBCCG_InitIdsWithInterfaceDescriptor(), USBCCGP_BuildConfigurationDescriptor(), USBCCGP_EnumWithAssociationDescriptor(), USBCCGP_EnumWithAudioLegacy(), USBCCGP_GetDescriptor(), USBCCGP_GetStringDescriptor(), USBCCGP_InitFunctionDescriptor(), USBCCGP_LegacyEnum(), USBCCGP_PdoAppendInterfaceNumber(), USBCCGP_PdoHandleDeviceRelations(), USBCCGP_PdoHandleQueryDeviceText(), USBCCGP_PdoHandleQueryId(), USBCCGP_PDOSelectConfiguration(), USBCCGP_ScanConfigurationDescriptor(), USBCCGP_SelectConfiguration(), USBCCGP_SelectInterface(), USBSTOR_AllocateIrpContext(), USBSTOR_FdoHandleDeviceRelations(), USBSTOR_GetDescriptor(), USBSTOR_GetEndpointStatus(), USBSTOR_PdoHandleDeviceRelations(), USBSTOR_PdoHandleQueryCompatibleId(), USBSTOR_PdoHandleQueryDeviceId(), USBSTOR_PdoHandleQueryDeviceText(), USBSTOR_PdoHandleQueryHardwareId(), USBSTOR_PdoHandleQueryInstanceId(), USBSTOR_ResetPipeWithHandle(), USBSTOR_SelectConfigurationAndInterface(), USBSTOR_SendCapacity(), USBSTOR_SendModeSense(), WdmAudControlOpenMixer(), WdmAudOpenSysaudio(), WdmAudOpenSysAudioDeviceInterfaces(), WdmAudOpenSysAudioDevices(), and WdmAudReadWrite().

◆ DriverEntry()

NTSTATUS NTAPI DriverEntry ( IN PDRIVER_OBJECT  DriverObject,
IN PUNICODE_STRING  RegistryPath 
)

Definition at line 238 of file main.c.

241{
242 DPRINT("System audio graph builder (sysaudio) started\n");
243
244 /* Let ks handle these */
249
250 /* Let ks handle these */
253
254 /* Use provided ks unload function */
255 DriverObject->DriverUnload = KsNullDriverUnload;
256
257 /* Sysaudio needs to do work on pnp, so handle it */
258 DriverObject->MajorFunction[IRP_MJ_PNP] = SysAudio_Pnp;
260 DriverObject->DriverExtension->AddDevice = SysAudio_AddDevice;
261
262 /* done */
263 return STATUS_SUCCESS;
264}
#define IRP_MJ_PNP
Definition: cdrw_usr.h:52
KSDDKAPI NTSTATUS NTAPI KsDefaultForwardIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: api.c:227
KSDDKAPI NTSTATUS NTAPI KsDefaultDispatchPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: api.c:166
KSDDKAPI NTSTATUS NTAPI KsSetMajorFunctionHandler(IN PDRIVER_OBJECT DriverObject, IN ULONG MajorFunction)
Definition: irp.c:2050
KSDDKAPI VOID NTAPI KsNullDriverUnload(IN PDRIVER_OBJECT DriverObject)
Definition: irp.c:1178
NTSTATUS NTAPI SysAudio_AddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject)
Definition: main.c:129
NTSTATUS NTAPI SysAudio_Shutdown(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: main.c:49
NTSTATUS NTAPI SysAudio_Pnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: main.c:89
#define IRP_MJ_CLOSE
Definition: rdpdr.c:45
#define IRP_MJ_DEVICE_CONTROL
Definition: rdpdr.c:52
#define IRP_MJ_WRITE
Definition: rdpdr.c:47
#define IRP_MJ_CREATE
Definition: rdpdr.c:44
#define STATUS_SUCCESS
Definition: shellext.h:65
#define DPRINT
Definition: sndvol32.h:73
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213
#define IRP_MJ_SYSTEM_CONTROL
#define IRP_MJ_SHUTDOWN
#define IRP_MJ_POWER

◆ FreeItem()

VOID FreeItem ( IN PVOID  Item)

Definition at line 34 of file main.c.

36{
38}
#define ExFreePoolWithTag(_P, _T)
Definition: module.h:1109
_In_ WDFCOLLECTION _In_ WDFOBJECT Item

Referenced by _KsEdit(), AllocEventData(), ComputeCompatibleFormat(), Dispatch_fnClose(), DispatchCreateSysAudioPin(), Enum(), Free(), FreeEventData(), CPortPinWaveRT::HandleKsProperty(), HDA_FDORemoveDevice(), HDA_InitCodec(), IKsAllocator_fnRelease(), IKsDevice_PnpPostStart(), IKsDevice_PnpStartDevice(), IKsFilter_CopyFilterDescriptor(), IKsFilter_CreateDescriptors(), IKsFilter_fnRelease(), IKsFilterFactory_fnRelease(), IKsPin_fnRelease(), InsertAudioDevice(), InstantiatePins(), IoCompletion(), KopAddDevice(), KopDispatchClose(), KopDispatchCreate(), KsAllocateExtraData(), KsAllocateObjectCreateItem(), KsAllocateObjectHeader(), KsCacheMedium(), KsCreateBusEnumObject(), KsCreateDefaultAllocatorEx(), KsCreateDefaultClock(), KsDiscardEvent(), KsDispatchSetSecurity(), KsFilterFactoryUpdateCacheData(), KsFreeDefaultClock(), KsFreeDeviceHeader(), KsFreeObjectBag(), KsFreeObjectHeader(), KsGetImageNameAndResourceId(), KsLoadResource(), KsMapModuleName(), KsMergeAutomationTables(), KspCreateDeviceAssociation(), KspCreateDeviceReference(), KspCreateFilter(), KspCreateObjectType(), KspCreatePin(), KspEnumerateBusRegistryKeys(), KspFreeCreateItems(), KspFreeDeviceInterfaces(), KspMergePropertySet(), KspPinPropertyHandler(), KspReadMediaCategory(), KspRegisterDeviceAssociation(), KspRegisterDeviceInterfaces(), KspRemoveDeviceAssociations(), KspValidateConnectRequest(), KsRegisterFilterWithNoKSPins(), KsRemoveItemFromObjectBag(), KsServiceBusEnumPnpRequest(), KsSetInformationFile(), KsStreamPointerClone(), KsStreamPointerDelete(), KsTopologyPropertyHandler(), KsUnregisterWorker(), KsValidateAllocatorCreateRequest(), KsValidateClockCreateRequest(), KsValidateTopologyNodeCreateRequest(), NewDispatchObject(), PcAddAdapterDevice(), PcAddToPropertyTable(), PcCompletePendingPropertyRequest(), PcCreateItemDispatch(), PcCreatePinDispatch(), PcCreateSubdeviceDescriptor(), PcNewResourceList(), PcRegisterIoTimeout(), PcUnregisterIoTimeout(), PDO_HandleInternalDeviceControl(), Pin_fnClose(), PropertyItemDispatch(), PwrCompletionFunction(), QueryKeyValue(), RegisterConnection(), SysAudio_Shutdown(), USBCCGP_BuildConfigurationDescriptor(), USBCCGP_GetDescriptor(), USBCCGP_GetDescriptors(), USBCCGP_GetStringDescriptor(), USBCCGP_PDOSelectConfiguration(), USBCCGP_SelectInterface(), USBSTOR_AllocateIrpContext(), USBSTOR_CSWCompletionRoutine(), USBSTOR_GetDescriptor(), USBSTOR_GetDescriptors(), USBSTOR_GetEndpointStatus(), USBSTOR_HandleTransferError(), USBSTOR_ResetPipeWithHandle(), USBSTOR_SelectConfigurationAndInterface(), USBSTOR_SendModeSense(), USBSTOR_SendRequest(), WdmAudCleanup(), WdmAudControlOpenMixer(), WdmAudGetDeviceInterface(), WdmAudGetMixerEvent(), WdmAudOpenSysAudioDevices(), WdmAudReadWrite(), and CResourceList::~CResourceList().

◆ SysAudio_AddDevice()

NTSTATUS NTAPI SysAudio_AddDevice ( IN PDRIVER_OBJECT  DriverObject,
IN PDEVICE_OBJECT  PhysicalDeviceObject 
)

Definition at line 129 of file main.c.

132{
134 UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Device\\sysaudio");
135 UNICODE_STRING SymlinkName = RTL_CONSTANT_STRING(L"\\DosDevices\\sysaudio");
137 SYSAUDIODEVEXT *DeviceExtension;
138
139 DPRINT("SysAudio_AddDevice called\n");
140
141 /* Create the device */
143 sizeof(SYSAUDIODEVEXT),
144 &DeviceName,
146 0,
147 FALSE,
148 &DeviceObject);
149
150 /* Check for success */
151 if (!NT_SUCCESS(Status))
152 {
153 DPRINT("Failed to create \\Device\\sysaudio !\n");
154 return Status;
155 }
156
157 /* Register device interfaces */
159 if (!NT_SUCCESS(Status))
160 {
161 /* Failed to register
162 * Create a hack interface
163 */
164 Status = IoCreateSymbolicLink(&SymlinkName, &DeviceName);
165 if (!NT_SUCCESS(Status))
166 {
168 DPRINT1("Failed to create sysaudio symlink!\n");
169 return Status;
170 }
171 }
172 /* Acquire device extension */
173 DeviceExtension = (SYSAUDIODEVEXT*)DeviceObject->DeviceExtension;
174 /* Initialize device extension */
175 RtlZeroMemory(DeviceExtension, sizeof(SYSAUDIODEVEXT));
176
177 /* Initialize the mutex */
178 KeInitializeSpinLock(&DeviceExtension->Lock);
179
180 /* Initialize the ks audio device list */
181 InitializeListHead(&DeviceExtension->KsAudioDeviceList);
182
183 /* Allocate kernel streaming device header */
184 Status = SysAudioAllocateDeviceHeader(DeviceExtension);
185 if (!NT_SUCCESS(Status))
186 {
187 DPRINT1("KsAllocateDeviceHeader failed with %x\n", Status);
188 goto cleanup;
189 }
190
191 /* Register device notification hooks */
194 if (!NT_SUCCESS(Status))
195 {
196 DPRINT1("Failed to register device notifications\n");
197 goto cleanup;
198 }
199
200 /* Load kmixer */
201 Status = SysAudioOpenKMixer(DeviceExtension);
202 if (!NT_SUCCESS(Status))
203 {
204 DPRINT1("SysAudioOpenKMixer failed with %x\n", Status);
205 goto cleanup;
206 }
207
208 /* set io flags */
210 /* clear initializing flag */
211 DeviceObject->Flags &= ~ DO_DEVICE_INITIALIZING;
212
213 /* atttach to device stack */
216
217 /* register shutdown notification */
219
220 /* Done */
221 return STATUS_SUCCESS;
222
223cleanup:
224
225 if (DeviceExtension->KsAudioNotificationEntry)
227
228 if (DeviceExtension->EchoCancelNotificationEntry)
230
231 IoDeleteSymbolicLink(&SymlinkName);
233 return Status;
234}
LONG NTSTATUS
Definition: precomp.h:26
#define DPRINT1
Definition: precomp.h:8
PDEVICE_OBJECT PhysicalDeviceObject
Definition: btrfs_drv.h:1157
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
static void cleanup(void)
Definition: main.c:1335
KSDDKAPI VOID NTAPI KsSetDevicePnpAndBaseObject(IN KSDEVICE_HEADER Header, IN PDEVICE_OBJECT PnpDeviceObject, IN PDEVICE_OBJECT BaseDevice)
Definition: api.c:257
NTSTATUS SysAudioRegisterNotifications(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT DeviceObject)
Definition: deviface.c:172
NTSTATUS SysAudioRegisterDeviceInterfaces(IN PDEVICE_OBJECT DeviceObject)
Definition: deviface.c:214
NTSTATUS SysAudioAllocateDeviceHeader(IN SYSAUDIODEVEXT *DeviceExtension)
Definition: dispatcher.c:104
NTSTATUS SysAudioOpenKMixer(IN SYSAUDIODEVEXT *DeviceExtension)
Definition: dispatcher.c:132
#define DO_DIRECT_IO
Definition: env_spec_w32.h:396
#define InitializeListHead(ListHead)
Definition: env_spec_w32.h:944
#define KeInitializeSpinLock(sl)
Definition: env_spec_w32.h:604
Status
Definition: gdiplustypes.h:25
_Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT * NextDeviceObject
Definition: ndis.h:4642
PDEVICE_OBJECT NTAPI IoAttachDeviceToDeviceStack(IN PDEVICE_OBJECT SourceDevice, IN PDEVICE_OBJECT TargetDevice)
Definition: device.c:966
NTSTATUS NTAPI IoCreateDevice(IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject)
Definition: device.c:1031
NTSTATUS NTAPI IoRegisterShutdownNotification(PDEVICE_OBJECT DeviceObject)
Definition: device.c:1694
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
Definition: device.c:1251
#define L(x)
Definition: ntvdm.h:50
NTSTATUS NTAPI IoUnregisterPlugPlayNotification(_In_ PVOID NotificationEntry)
Definition: pnpnotify.c:480
#define FILE_DEVICE_KS
Definition: winioctl.h:92
KSDEVICE_HEADER KsDeviceHeader
Definition: sysaudio.h:25
PVOID EchoCancelNotificationEntry
Definition: sysaudio.h:32
PVOID KsAudioNotificationEntry
Definition: sysaudio.h:31
LIST_ENTRY KsAudioDeviceList
Definition: sysaudio.h:30
KSPIN_LOCK Lock
Definition: sysaudio.h:33
#define RTL_CONSTANT_STRING(s)
Definition: tunneltest.c:14
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
Definition: wdfdevice.h:3275
#define DO_POWER_PAGABLE

Referenced by DriverEntry().

◆ SysAudio_Pnp()

NTSTATUS NTAPI SysAudio_Pnp ( IN PDEVICE_OBJECT  DeviceObject,
IN PIRP  Irp 
)

Definition at line 89 of file main.c.

92{
93 PIO_STACK_LOCATION IrpStack;
94 UNICODE_STRING SymlinkName = RTL_CONSTANT_STRING(L"\\DosDevices\\sysaudio");
95 SYSAUDIODEVEXT *DeviceExtension;
96
97 /* Get current irp stack */
99
100 /* Fetch the device extension */
101 DeviceExtension = (SYSAUDIODEVEXT*)DeviceObject->DeviceExtension;
102 ASSERT(DeviceExtension);
103
104 if (IrpStack->MinorFunction == IRP_MN_REMOVE_DEVICE)
105 {
106 /* Unregister the echo cancel hook */
107 if (DeviceExtension->EchoCancelNotificationEntry)
109
110 /* Unregister the ks audio hook */
111 if (DeviceExtension->KsAudioNotificationEntry)
113
114 /* Destroy our symbolic link */
115 IoDeleteSymbolicLink(&SymlinkName);
116 }
117 else if (IrpStack->MinorFunction == IRP_MN_QUERY_PNP_DEVICE_STATE)
118 {
119 /* Sysaudio can not be disabled */
120 Irp->IoStatus.Information |= PNP_DEVICE_NOT_DISABLEABLE;
121 }
122
123 /* Perform default pnp actions */
125}
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
_In_ PIRP Irp
Definition: csq.h:116
KSDDKAPI NTSTATUS NTAPI KsDefaultDispatchPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: api.c:110
#define ASSERT(a)
Definition: mode.c:44
#define IRP_MN_QUERY_PNP_DEVICE_STATE
#define PNP_DEVICE_NOT_DISABLEABLE
Definition: iotypes.h:1006
#define IRP_MN_REMOVE_DEVICE

Referenced by DriverEntry().

◆ SysAudio_Shutdown()

NTSTATUS NTAPI SysAudio_Shutdown ( IN PDEVICE_OBJECT  DeviceObject,
IN PIRP  Irp 
)

Definition at line 49 of file main.c.

52{
53 PKSAUDIO_DEVICE_ENTRY DeviceEntry;
54 PSYSAUDIODEVEXT DeviceExtension;
56
57 DPRINT("SysAudio_Shutdown called\n");
58
59 DeviceExtension = (PSYSAUDIODEVEXT)DeviceObject->DeviceExtension;
60
61 while(!IsListEmpty(&DeviceExtension->KsAudioDeviceList))
62 {
63 Entry = RemoveHeadList(&DeviceExtension->KsAudioDeviceList);
65
66 DPRINT("Freeing item %wZ\n", &DeviceEntry->DeviceName);
67
68 /* dereference audio device file object */
69 ObDereferenceObject(DeviceEntry->FileObject);
70
71 /* close audio device handle */
72 ZwClose(DeviceEntry->Handle);
73
74 /* free device string */
75 RtlFreeUnicodeString(&DeviceEntry->DeviceName);
76
77 /* free audio device entry */
78 FreeItem(DeviceEntry);
79 }
80
81 Irp->IoStatus.Information = 0;
82 Irp->IoStatus.Status = STATUS_SUCCESS;
84 return STATUS_SUCCESS;
85}
VOID FreeItem(IN PVOID Item)
Definition: main.c:34
#define IsListEmpty(ListHead)
Definition: env_spec_w32.h:954
#define RemoveHeadList(ListHead)
Definition: env_spec_w32.h:964
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define IoCompleteRequest
Definition: irp.c:1240
base of all file and directory entries
Definition: entries.h:83
Definition: sysaudio.h:13
PFILE_OBJECT FileObject
Definition: sysaudio.h:18
HANDLE Handle
Definition: sysaudio.h:17
UNICODE_STRING DeviceName
Definition: sysaudio.h:15
Definition: typedefs.h:120
struct SYSAUDIODEVEXT * PSYSAUDIODEVEXT
struct KSAUDIO_DEVICE_ENTRY * PKSAUDIO_DEVICE_ENTRY
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
#define IO_NO_INCREMENT
Definition: iotypes.h:598
#define ObDereferenceObject
Definition: obfuncs.h:203

Referenced by DriverEntry().

◆ SysAudio_Unload()

VOID NTAPI SysAudio_Unload ( IN PDRIVER_OBJECT  DriverObject)

Definition at line 42 of file main.c.

43{
44 DPRINT("SysAudio_Unload called\n");
45}

Variable Documentation

◆ KSCATEGORY_AUDIO_DEVICE

const GUID KSCATEGORY_AUDIO_DEVICE = {0xFBF6F530L, 0x07B9, 0x11D2, {0xA7, 0x1E, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}}

Definition at line 20 of file main.c.

◆ KSCATEGORY_PREFERRED_MIDIOUT_DEVICE

const GUID KSCATEGORY_PREFERRED_MIDIOUT_DEVICE = {0xD6C50674L, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}}

Definition at line 23 of file main.c.

◆ KSCATEGORY_PREFERRED_WAVEIN_DEVICE

const GUID KSCATEGORY_PREFERRED_WAVEIN_DEVICE = {0xD6C50671L, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}}

Definition at line 22 of file main.c.

◆ KSCATEGORY_PREFERRED_WAVEOUT_DEVICE

const GUID KSCATEGORY_PREFERRED_WAVEOUT_DEVICE = {0xD6C5066EL, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}}

Definition at line 21 of file main.c.

◆ KSCATEGORY_SYSAUDIO

const GUID KSCATEGORY_SYSAUDIO = {0xA7C7A5B1L, 0x5AF3, 0x11D1, {0x9C, 0xED, 0x00, 0xA0, 0x24, 0xBF, 0x04, 0x07}}

Definition at line 19 of file main.c.