15 const GUID KSCATEGORY_SYSAUDIO = {0xA7C7A5B1
L, 0x5AF3, 0x11D1, {0x9C, 0xED, 0x00, 0xA0, 0x24, 0xBF, 0x04, 0x07}};
16 const GUID KSCATEGORY_WDMAUD = {0x3E227E76
L, 0x690D, 0x11D2, {0x81, 0x61, 0x00, 0x00, 0xF8, 0x77, 0x5B, 0xF1}};
41 DPRINT1(
"WdmAudOpenSysAudioDevices failed with %x\n",
Status);
98 DPRINT(
"WdmaudAddDevice called\n");
131 DPRINT1(
"WdmRegisterDeviceInterface failed with %x\n",
Status);
179 DPRINT(
"WdmAudUnload called\n");
190 DPRINT(
"WdmAudPnp called\n");
221 DPRINT1(
"KsReferenceSoftwareBusObject failed with %x\n",
Status);
236 DPRINT1(
"Failed to open sysaudio!\n");
253 Irp->IoStatus.Information = 0;
271 if (DeviceExtension->SysAudioNotification)
277 Irp->IoStatus.Information = 0;
344 Irp->IoStatus.Information = 0;
358 DPRINT(
"Wdmaud.sys loaded\n");
#define DO_DEVICE_INITIALIZING
NTSTATUS NTAPI WdmAudClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI NTSTATUS NTAPI KsDefaultDispatchPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI NTSTATUS NTAPI KsDefaultDispatchPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define STATUS_INSUFFICIENT_RESOURCES
KSDDKAPI NTSTATUS NTAPI KsReferenceSoftwareBusObject(IN KSDEVICE_HEADER Header)
KSDDKAPI VOID NTAPI KsDereferenceSoftwareBusObject(IN KSDEVICE_HEADER Header)
struct WDMAUD_CLIENT * PWDMAUD_CLIENT
VOID NTAPI IoStartTimer(IN PDEVICE_OBJECT DeviceObject)
KSDDKAPI NTSTATUS NTAPI KsAllocateDeviceHeader(OUT KSDEVICE_HEADER *OutHeader, IN ULONG ItemsCount, IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL)
KSDDKAPI VOID NTAPI KsSetDevicePnpAndBaseObject(IN KSDEVICE_HEADER Header, IN PDEVICE_OBJECT PnpDeviceObject, IN PDEVICE_OBJECT BaseDevice)
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
NTSTATUS NTAPI WdmAudCleanup(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
ULONG SysAudioDeviceCount
NTSTATUS NTAPI WdmAudCreate(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define InterlockedCompareExchange
KSDEVICE_HEADER DeviceHeader
PDEVICE_OBJECT PhysicalDeviceObject
NTSTATUS NTAPI WdmAudPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
VOID NTAPI WdmAudUnload(IN PDRIVER_OBJECT driver)
PIO_WORKITEM NTAPI IoAllocateWorkItem(IN PDEVICE_OBJECT DeviceObject)
LONG NTAPI KeSetEvent(IN PKEVENT Event, IN KPRIORITY Increment, IN BOOLEAN Wait)
const GUID KSCATEGORY_WDMAUD
ULONG WdmAudGetWaveInDeviceCount()
NTSTATUS NTAPI WdmAudDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
_In_ PDEVICE_OBJECT DeviceObject
VOID FreeItem(IN PVOID Item)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
struct WDMAUD_DEVICE_EXTENSION * PWDMAUD_DEVICE_EXTENSION
PDEVICE_OBJECT NTAPI IoAttachDeviceToDeviceStack(IN PDEVICE_OBJECT SourceDevice, IN PDEVICE_OBJECT TargetDevice)
NTSTATUS WdmAudOpenSysaudio(IN PDEVICE_OBJECT DeviceObject, IN PWDMAUD_CLIENT *pClient)
FORCEINLINE VOID KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock)
KEVENT InitializationCompletionEvent
IO_WORKITEM_ROUTINE WdmAudInitWorkerRoutine
NTSTATUS NTAPI WdmaudAddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject)
#define IoCompleteRequest
NTSTATUS WdmAudMixerInitialize(IN PDEVICE_OBJECT DeviceObject)
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
IO_TIMER_ROUTINE WdmAudTimerRoutine
#define NT_SUCCESS(StatCode)
_In_ WDFCOLLECTION _In_ ULONG Index
NTSTATUS NTAPI IoInitializeTimer(IN PDEVICE_OBJECT DeviceObject, IN PIO_TIMER_ROUTINE TimerRoutine, IN PVOID Context)
#define KeAcquireSpinLock(sl, irql)
#define PNP_DEVICE_NOT_DISABLEABLE
const GUID KSCATEGORY_SYSAUDIO
#define STATUS_UNSUCCESSFUL
NTSTATUS NTAPI IoUnregisterPlugPlayNotification(_In_ PVOID NotificationEntry)
VOID WdmAudCloseAllMixers(IN PDEVICE_OBJECT DeviceObject, IN PWDMAUD_CLIENT ClientInfo, IN ULONG Index)
#define InterlockedDecrement
LIST_ENTRY SysAudioDeviceList
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
ULONG WdmAudGetWaveOutDeviceCount()
struct @1664::@1665 driver
#define IRP_MJ_SYSTEM_CONTROL
NTSTATUS WdmAudOpenSysAudioDevices(IN PDEVICE_OBJECT DeviceObject, IN PWDMAUD_DEVICE_EXTENSION DeviceExtension)
VOID NTAPI IoQueueWorkItem(IN PIO_WORKITEM IoWorkItem, IN PIO_WORKITEM_ROUTINE WorkerRoutine, IN WORK_QUEUE_TYPE QueueType, IN PVOID Context)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
#define KeInitializeEvent(pEvt, foo, foo2)
KSDDKAPI NTSTATUS NTAPI KsDefaultForwardIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define InitializeListHead(ListHead)
PDEVICE_OBJECT NextDeviceObject
#define KeReleaseSpinLock(sl, irql)
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)
#define RtlZeroMemory(Destination, Length)
NTSTATUS NTAPI WdmAudReadWrite(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI DriverEntry(IN PDRIVER_OBJECT Driver, IN PUNICODE_STRING Registry_path)
_Must_inspect_result_ _In_ WDFDRIVER Driver
LIST_ENTRY WdmAudClientList
ULONG WdmAudGetMixerDeviceCount()
ULONG GetSysAudioDeviceCount(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS WdmAudRegisterDeviceInterface(IN PDEVICE_OBJECT PhysicalDeviceObject, IN PWDMAUD_DEVICE_EXTENSION DeviceExtension)
#define IRP_MN_QUERY_PNP_DEVICE_STATE
#define IRP_MJ_DEVICE_CONTROL