13#define USBAUDIO_TAG 'AbsU'
14#define USB_AUDIO_CONTROL_TERMINAL_DESCRIPTOR_TYPE (0x24)
17#define USB_AUDIO_STREAMING_TERMINAL_TYPE (0x0101)
19#define USB_AUDIO_MICROPHONE_TERMINAL_TYPE (0x0201)
20#define USB_AUDIO_DESKTOP_MICROPHONE_TERMINAL_TYPE (0x0202)
21#define USB_AUDIO_PERSONAL_MICROPHONE_TERMINAL_TYPE (0x0203)
22#define USB_AUDIO_OMMNI_MICROPHONE_TERMINAL_TYPE (0x0204)
23#define USB_AUDIO_ARRAY_MICROPHONE_TERMINAL_TYPE (0x0205)
24#define USB_AUDIO_ARRAY_PROCESSING_MICROPHONE_TERMINAL_TYPE (0x0206)
26#define USB_AUDIO_SPEAKER_TERMINAL_TYPE (0x0301)
27#define USB_HEADPHONES_SPEAKER_TERMINAL_TYPE (0x0302)
28#define USB_AUDIO_HMDA_TERMINAL_TYPE (0x0303)
29#define USB_AUDIO_DESKTOP_SPEAKER_TERMINAL_TYPE (0x0304)
30#define USB_AUDIO_ROOM_SPEAKER_TERMINAL_TYPE (0x0305)
31#define USB_AUDIO_COMMUNICATION_SPEAKER_TERMINAL_TYPE (0x0306)
32#define USB_AUDIO_SUBWOOFER_TERMINAL_TYPE (0x0307)
33#define USB_AUDIO_UNDEFINED_TERMINAL_TYPE (0xFFFF)
35#define USB_AUDIO_INPUT_TERMINAL (0x02)
36#define USB_AUDIO_OUTPUT_TERMINAL (0x03)
38#define DEFINE_KSPROPERTY_ITEM_AUDIO_VOLUME(Handler)\
39 DEFINE_KSPROPERTY_ITEM(\
40 KSPROPERTY_AUDIO_VOLUMELEVEL,\
42 sizeof(KSNODEPROPERTY_AUDIO_CHANNEL),\
44 (Handler), NULL, 0, NULL, NULL, 0)
47#define DEFINE_KSPROPERTY_TABLE_AUDIO_VOLUME(TopologySet, Handler)\
48DEFINE_KSPROPERTY_TABLE(TopologySet) {\
49 DEFINE_KSPROPERTY_ITEM_AUDIO_VOLUME(Handler)\
52#define DEFINE_KSPROPERTY_ITEM_AUDIO_MUTE(Handler)\
53 DEFINE_KSPROPERTY_ITEM(\
54 KSPROPERTY_AUDIO_MUTE,\
56 sizeof(KSNODEPROPERTY_AUDIO_CHANNEL),\
58 (Handler), NULL, 0, NULL, NULL, 0)
60#define DEFINE_KSPROPERTY_TABLE_AUDIO_MUTE(TopologySet, Handler)\
61DEFINE_KSPROPERTY_TABLE(TopologySet) {\
62 DEFINE_KSPROPERTY_ITEM_AUDIO_MUTE(Handler)\
239 OUT PULONG NonStreamingTerminalDescriptorCount,
240 OUT PULONG TotalTerminalDescriptorCount);
399 _In_opt_ const KSATTRIBUTE_LIST* AttributeRange);
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
_Must_inspect_result_ typedef _Out_ PHIDP_CAPS Capabilities
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
enum _SYSTEM_POWER_STATE SYSTEM_POWER_STATE
PDEVICE_OBJECT LowerDevice
PDEVICE_EXTENSION DeviceExtension
PUSB_COMMON_DESCRIPTOR Descriptor
WORK_QUEUE_ITEM StarvationWorkItem
WORK_QUEUE_ITEM CaptureWorkItem
PKSWORKER StarvationWorker
PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor
PDEVICE_EXTENSION DeviceExtension
PDEVICE_OBJECT LowerDevice
LIST_ENTRY DoneIrpListHead
PNODE_CONTEXT NodeContext
PUSBD_INTERFACE_INFORMATION InterfaceInfo
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor
PUSB_DEVICE_DESCRIPTOR DeviceDescriptor
USBD_CONFIGURATION_HANDLE ConfigurationHandle
PDEVICE_OBJECT LowerDevice
NTSTATUS NTAPI USBAudioPinCreate(_In_ PKSPIN Pin, _In_ PIRP Irp)
struct USB_AUDIO_CONTROL_OUTPUT_TERMINAL_DESCRIPTOR * PUSB_AUDIO_CONTROL_OUTPUT_TERMINAL_DESCRIPTOR
NTSTATUS NTAPI USBAudioPnPStart(_In_ PKSDEVICE Device, _In_ PIRP Irp, _In_opt_ PCM_RESOURCE_LIST TranslatedResourceList, _In_opt_ PCM_RESOURCE_LIST UntranslatedResourceList)
PUSB_AUDIO_CONTROL_INPUT_TERMINAL_DESCRIPTOR UsbAudioGetStreamingTerminalDescriptorByIndex(IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor, IN ULONG Index)
VOID NTAPI CountTerminalUnits(IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor, OUT PULONG NonStreamingTerminalDescriptorCount, OUT PULONG TotalTerminalDescriptorCount)
struct __DEVICE_EXTENSION__ DEVICE_EXTENSION
VOID NTAPI USBAudioPinReset(_In_ PKSPIN Pin)
struct USB_AUDIO_CONTROL_FEATURE_UNIT_DESCRIPTOR * PUSB_AUDIO_CONTROL_FEATURE_UNIT_DESCRIPTOR
struct FILTER_CONTEXT * PFILTER_CONTEXT
struct PIN_CONTEXT * PPIN_CONTEXT
NTSTATUS NTAPI USBAudioPnPQueryStop(_In_ PKSDEVICE Device, _In_ PIRP Irp)
NTSTATUS NTAPI USBAudioPnPQueryRemove(_In_ PKSDEVICE Device, _In_ PIRP Irp)
struct NODE_CONTEXT * PNODE_CONTEXT
struct __DEVICE_EXTENSION__ * PDEVICE_EXTENSION
NTSTATUS NTAPI USBAudioPnPQueryPower(_In_ PKSDEVICE Device, _In_ PIRP Irp, _In_ DEVICE_POWER_STATE DeviceTo, _In_ DEVICE_POWER_STATE DeviceFrom, _In_ SYSTEM_POWER_STATE SystemTo, _In_ SYSTEM_POWER_STATE SystemFrom, _In_ POWER_ACTION Action)
VOID NTAPI USBAudioPnPStop(_In_ PKSDEVICE Device, _In_ PIRP Irp)
struct USB_AUDIO_CONTROL_SELECTOR_UNIT_DESCRIPTOR * PUSB_AUDIO_CONTROL_SELECTOR_UNIT_DESCRIPTOR
NTSTATUS SubmitUrbSync(IN PDEVICE_OBJECT Device, IN PURB Urb)
struct USB_AUDIO_CONTROL_INTERFACE_HEADER_DESCRIPTOR * PUSB_AUDIO_CONTROL_INTERFACE_HEADER_DESCRIPTOR
VOID NTAPI USBAudioPnPCancelRemove(_In_ PKSDEVICE Device, _In_ PIRP Irp)
NTSTATUS NTAPI USBAudioPinProcess(_In_ PKSPIN Pin)
NTSTATUS NTAPI USBAudioAddDevice(_In_ PKSDEVICE Device)
struct USB_AUDIO_CONTROL_INPUT_TERMINAL_DESCRIPTOR * PUSB_AUDIO_CONTROL_INPUT_TERMINAL_DESCRIPTOR
NTSTATUS NTAPI UsbAudioCaptureComplete(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
VOID NTAPI USBAudioPnPSurpriseRemoval(_In_ PKSDEVICE Device, _In_ PIRP Irp)
struct USB_AUDIO_CONTROL_MIXER_UNIT_DESCRIPTOR * PUSB_AUDIO_CONTROL_MIXER_UNIT_DESCRIPTOR
NTSTATUS NTAPI USBAudioPinClose(_In_ PKSPIN Pin, _In_ PIRP Irp)
NTSTATUS NTAPI UsbAudioPinDataIntersect(_In_ PVOID Context, _In_ PIRP Irp, _In_ PKSP_PIN Pin, _In_ PKSDATARANGE DataRange, _In_ PKSDATARANGE MatchingDataRange, _In_ ULONG DataBufferSize, _Out_ PVOID Data, _Out_ PULONG DataSize)
NTSTATUS NTAPI USBAudioCreateFilterContext(PKSDEVICE Device)
NTSTATUS NTAPI USBAudioPnPQueryCapabilities(_In_ PKSDEVICE Device, _In_ PIRP Irp, _Inout_ PDEVICE_CAPABILITIES Capabilities)
struct USB_AUDIO_STREAMING_FORMAT_TYPE_DESCRIPTOR * PUSB_AUDIO_STREAMING_FORMAT_TYPE_DESCRIPTOR
struct USB_AUDIO_STREAMING_INTERFACE_DESCRIPTOR * PUSB_AUDIO_STREAMING_INTERFACE_DESCRIPTOR
PVOID NTAPI AllocFunction(IN ULONG ItemSize)
NTSTATUS NTAPI USBAudioPinSetDeviceState(_In_ PKSPIN Pin, _In_ KSSTATE ToState, _In_ KSSTATE FromState)
NTSTATUS NTAPI UsbAudioRenderComplete(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
VOID NTAPI FreeFunction(IN PVOID Item)
VOID NTAPI USBAudioPnPCancelStop(_In_ PKSDEVICE Device, _In_ PIRP Irp)
NTSTATUS NTAPI USBAudioPinSetDataFormat(_In_ PKSPIN Pin, _In_opt_ PKSDATAFORMAT OldFormat, _In_opt_ PKSMULTIPLE_ITEM OldAttributeList, _In_ const KSDATARANGE *DataRange, _In_opt_ const KSATTRIBUTE_LIST *AttributeRange)
VOID NTAPI USBAudioPnPSetPower(_In_ PKSDEVICE Device, _In_ PIRP Irp, _In_ DEVICE_POWER_STATE To, _In_ DEVICE_POWER_STATE From)
VOID NTAPI USBAudioPnPRemove(_In_ PKSDEVICE Device, _In_ PIRP Irp)
_Must_inspect_result_ _In_ WDFDEVICE Device
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ WDFCOLLECTION _In_ WDFOBJECT Item
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFIOTARGET _In_ _Strict_type_match_ WDF_IO_TARGET_SENT_IO_ACTION Action