5#pragma warning(disable:4201)
6#pragma warning(disable:4214)
9DEFINE_GUID(GUID_HDAUDIO_BUS_INTERFACE, 0xd2eaf88b, 0xab18, 0x41a8, 0xb6, 0x64, 0x8d, 0x59, 0x21, 0x67, 0x67, 0x1b);
10DEFINE_GUID(GUID_HDAUDIO_BUS_INTERFACE_BDL, 0xb4d65397, 0x5634, 0x40b0, 0xb0, 0x68, 0xf5, 0xb9, 0xf8, 0xb9, 0x67, 0xa5);
11DEFINE_GUID(GUID_HDAUDIO_BUS_INTERFACE_V2, 0xb52af5fb, 0x424b, 0x4bb9, 0xa1, 0x60, 0x5b, 0x38, 0xbe, 0x94, 0xe5, 0x68);
12DEFINE_GUID(GUID_HDAUDIO_BUS_CLASS, 0xbbd1a745, 0xadd6, 0x4575, 0x9c, 0x2e, 0x9b, 0x42, 0x8d, 0x1c, 0x32, 0x66);
14#ifndef _HDAUDIO_CODEC_TRANSFER_
15#define _HDAUDIO_CODEC_TRANSFER_
262 ULONG RequestedBufferSize,
375#pragma warning(default:4201)
376#pragma warning(default:4214)
VOID(WINAPI * PINTERFACE_DEREFERENCE)(PVOID Context)
VOID(WINAPI * PINTERFACE_REFERENCE)(PVOID Context)
static BOOLEAN NTAPI Isr(PKINTERRUPT Interrupt, PVOID ServiceContext)
enum _HDAUDIO_STREAM_STATE * PHDAUDIO_STREAM_STATE
struct _HDAUDIO_BUS_INTERFACE * PHDAUDIO_BUS_INTERFACE
struct _HDAUDIO_BUS_INTERFACE_BDL HDAUDIO_BUS_INTERFACE_BDL
struct _HDAUDIO_BUS_INTERFACE_BDL * PHDAUDIO_BUS_INTERFACE_BDL
struct _HDAUDIO_CODEC_RESPONSE HDAUDIO_CODEC_RESPONSE
VOID(NTAPI * PHDAUDIO_TRANSFER_COMPLETE_CALLBACK)(HDAUDIO_CODEC_TRANSFER *, PVOID)
struct _HDAUDIO_STREAM_FORMAT HDAUDIO_STREAM_FORMAT
_Must_inspect_result_ NTSTATUS(NTAPI * PUNREGISTER_EVENT_CALLBACK)(_In_ PVOID _context, _In_ UCHAR Tag)
_Must_inspect_result_ NTSTATUS(NTAPI * PCHANGE_BANDWIDTH_ALLOCATION)(_In_ PVOID _context, _In_ HANDLE Handle, _In_ PHDAUDIO_STREAM_FORMAT StreamFormat, _Out_ PHDAUDIO_CONVERTER_FORMAT ConverterFormat)
_Must_inspect_result_ NTSTATUS(NTAPI * PFREE_DMA_BUFFER_WITH_NOTIFICATION)(_In_ PVOID _context, _In_ HANDLE Handle, _In_ PMDL BufferMdl, _In_ SIZE_T BufferSize)
_Must_inspect_result_ NTSTATUS(NTAPI * PFREE_DMA_ENGINE)(_In_ PVOID _context, _In_ HANDLE Handle)
struct _HDAUDIO_BUS_INTERFACE_V2 HDAUDIO_BUS_INTERFACE_V2
enum _HDAUDIO_STREAM_STATE HDAUDIO_STREAM_STATE
VOID(NTAPI * PGET_RESOURCE_INFORMATION)(_In_ PVOID _context, _Out_ PUCHAR CodecAddress, _Out_ PUCHAR FunctionGroupStartNode)
struct _HDAUDIO_CODEC_RESPONSE * PHDAUDIO_CODEC_RESPONSE
_Must_inspect_result_ NTSTATUS(NTAPI * PSETUP_DMA_ENGINE_WITH_BDL)(_In_reads_bytes_(BufferLength) PVOID _context, _In_ HANDLE Handle, _In_ ULONG BufferLength, _In_ ULONG Lvi, _In_ PHDAUDIO_BDL_ISR Isr, _In_ PVOID Context, _Out_ PUCHAR StreamId, _Out_ PULONG FifoSize)
struct _HDAUDIO_CONVERTER_FORMAT * PHDAUDIO_CONVERTER_FORMAT
struct _HDAUDIO_BUFFER_DESCRIPTOR * PHDAUDIO_BUFFER_DESCRIPTOR
_Must_inspect_result_ NTSTATUS(NTAPI * PALLOCATE_DMA_BUFFER)(_In_ PVOID _context, _In_ HANDLE Handle, _In_ SIZE_T RequestedBufferSize, _Out_ PMDL *BufferMdl, _Out_ PSIZE_T AllocatedBufferSize, _Out_ PUCHAR StreamId, _Out_ PULONG FifoSize)
struct _HDAUDIO_BUS_INTERFACE HDAUDIO_BUS_INTERFACE
_Must_inspect_result_ NTSTATUS(NTAPI * PREGISTER_NOTIFICATION_EVENT)(_In_ PVOID _context, _In_ HANDLE Handle, _In_ PKEVENT NotificationEvent)
_Must_inspect_result_ NTSTATUS(NTAPI * PGET_LINK_POSITION_REGISTER)(_In_ PVOID _context, _In_ HANDLE Handle, _Out_ PULONG *Position)
struct _HDAUDIO_CODEC_TRANSFER * PHDAUDIO_CODEC_TRANSFER
_Must_inspect_result_ NTSTATUS(NTAPI * PALLOCATE_RENDER_DMA_ENGINE)(_In_ PVOID _context, _In_ PHDAUDIO_STREAM_FORMAT StreamFormat, _In_ BOOLEAN Stripe, _Out_ PHANDLE Handle, _Out_ PHDAUDIO_CONVERTER_FORMAT ConverterFormat)
struct _HDAUDIO_DEVICE_INFORMATION HDAUDIO_DEVICE_INFORMATION
_Must_inspect_result_ NTSTATUS(NTAPI * PALLOCATE_CAPTURE_DMA_ENGINE)(_In_ PVOID _context, _In_ UCHAR CodecAddress, _In_ PHDAUDIO_STREAM_FORMAT StreamFormat, _Out_ PHANDLE Handle, _Out_ PHDAUDIO_CONVERTER_FORMAT ConverterFormat)
_Must_inspect_result_ NTSTATUS(NTAPI * PTRANSFER_CODEC_VERBS)(_In_ PVOID _context, _In_ ULONG Count, _Inout_updates_(Count) PHDAUDIO_CODEC_TRANSFER CodecTransfer, _In_opt_ PHDAUDIO_TRANSFER_COMPLETE_CALLBACK Callback, _In_opt_ PVOID Context)
struct _HDAUDIO_CODEC_COMMAND * PHDAUDIO_CODEC_COMMAND
void(NTAPI * PHDAUDIO_BDL_ISR)(_In_ VOID *Context, _In_ ULONG InterruptBitMask)
struct _HDAUDIO_CONVERTER_FORMAT HDAUDIO_CONVERTER_FORMAT
struct _HDAUDIO_STREAM_FORMAT * PHDAUDIO_STREAM_FORMAT
_Must_inspect_result_ NTSTATUS(NTAPI * PFREE_DMA_BUFFER)(_In_ PVOID _context, _In_ HANDLE Handle)
_Must_inspect_result_ NTSTATUS(NTAPI * PGET_DEVICE_INFORMATION)(_In_ PVOID _context, _Out_ PHDAUDIO_DEVICE_INFORMATION DeviceInformation)
_Must_inspect_result_ NTSTATUS(NTAPI * PREGISTER_EVENT_CALLBACK)(_In_ PVOID _context, _In_ PHDAUDIO_UNSOLICITED_RESPONSE_CALLBACK Routine, _In_opt_ PVOID Context, _Out_ PUCHAR Tag)
_Must_inspect_result_ NTSTATUS(NTAPI * PUNREGISTER_NOTIFICATION_EVENT)(_In_ PVOID _context, _In_ HANDLE Handle, _In_ PKEVENT NotificationEvent)
_Must_inspect_result_ NTSTATUS(NTAPI * PFREE_CONTIGUOUS_DMA_BUFFER)(_In_ PVOID _context, _In_ HANDLE Handle)
VOID(NTAPI * PHDAUDIO_UNSOLICITED_RESPONSE_CALLBACK)(HDAUDIO_CODEC_RESPONSE, PVOID)
struct _HDAUDIO_BUS_INTERFACE_V2 * PHDAUDIO_BUS_INTERFACE_V2
struct _HDAUDIO_CODEC_COMMAND HDAUDIO_CODEC_COMMAND
VOID(NTAPI * PGET_WALL_CLOCK_REGISTER)(_In_ PVOID _context, _Out_ PULONG *Wallclock)
struct _HDAUDIO_DEVICE_INFORMATION * PHDAUDIO_DEVICE_INFORMATION
_Must_inspect_result_ NTSTATUS(NTAPI * PSET_DMA_ENGINE_STATE)(_In_ PVOID _context, _In_ HDAUDIO_STREAM_STATE StreamState, _In_ ULONG NumberOfHandles, _In_reads_(NumberOfHandles) PHANDLE Handles)
struct _HDAUDIO_BUFFER_DESCRIPTOR HDAUDIO_BUFFER_DESCRIPTOR
struct _HDAUDIO_CODEC_TRANSFER HDAUDIO_CODEC_TRANSFER
_Must_inspect_result_ NTSTATUS(NTAPI * PALLOCATE_DMA_BUFFER_WITH_NOTIFICATION)(_In_ PVOID _context, _In_ HANDLE Handle, _In_ ULONG NotificationCount, _In_ SIZE_T RequestedBufferSize, _Out_ PMDL *BufferMdl, _Out_ PSIZE_T AllocatedBufferSize, _Out_ PSIZE_T OffsetFromFirstPage, _Out_ PUCHAR StreamId, _Out_ PULONG FifoSize)
_Must_inspect_result_ NTSTATUS(NTAPI * PALLOCATE_CONTIGUOUS_DMA_BUFFER)(_In_ PVOID _context, _In_ HANDLE Handle, ULONG RequestedBufferSize, _Out_ PVOID *DataBuffer, _Out_ PHDAUDIO_BUFFER_DESCRIPTOR *BdlBuffer)
#define _In_reads_bytes_(size)
#define _Inout_updates_(size)
#define _Must_inspect_result_
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
ULONG InterruptOnCompletion
PINTERFACE_REFERENCE InterfaceReference
PTRANSFER_CODEC_VERBS TransferCodecVerbs
PINTERFACE_DEREFERENCE InterfaceDereference
PUNREGISTER_EVENT_CALLBACK UnregisterEventCallback
PGET_RESOURCE_INFORMATION GetResourceInformation
PALLOCATE_CONTIGUOUS_DMA_BUFFER AllocateContiguousDmaBuffer
PGET_WALL_CLOCK_REGISTER GetWallClockRegister
PCHANGE_BANDWIDTH_ALLOCATION ChangeBandwidthAllocation
PGET_DEVICE_INFORMATION GetDeviceInformation
PSETUP_DMA_ENGINE_WITH_BDL SetupDmaEngineWithBdl
PFREE_DMA_ENGINE FreeDmaEngine
PSET_DMA_ENGINE_STATE SetDmaEngineState
PGET_LINK_POSITION_REGISTER GetLinkPositionRegister
PALLOCATE_RENDER_DMA_ENGINE AllocateRenderDmaEngine
PALLOCATE_CAPTURE_DMA_ENGINE AllocateCaptureDmaEngine
PFREE_CONTIGUOUS_DMA_BUFFER FreeContiguousDmaBuffer
PREGISTER_EVENT_CALLBACK RegisterEventCallback
PALLOCATE_CAPTURE_DMA_ENGINE AllocateCaptureDmaEngine
PALLOCATE_DMA_BUFFER_WITH_NOTIFICATION AllocateDmaBufferWithNotification
PFREE_DMA_ENGINE FreeDmaEngine
PINTERFACE_REFERENCE InterfaceReference
PGET_DEVICE_INFORMATION GetDeviceInformation
PCHANGE_BANDWIDTH_ALLOCATION ChangeBandwidthAllocation
PFREE_DMA_BUFFER FreeDmaBuffer
PUNREGISTER_NOTIFICATION_EVENT UnregisterNotificationEvent
PSET_DMA_ENGINE_STATE SetDmaEngineState
PREGISTER_EVENT_CALLBACK RegisterEventCallback
PREGISTER_NOTIFICATION_EVENT RegisterNotificationEvent
PGET_LINK_POSITION_REGISTER GetLinkPositionRegister
PUNREGISTER_EVENT_CALLBACK UnregisterEventCallback
PINTERFACE_DEREFERENCE InterfaceDereference
PTRANSFER_CODEC_VERBS TransferCodecVerbs
PGET_WALL_CLOCK_REGISTER GetWallClockRegister
PFREE_DMA_BUFFER_WITH_NOTIFICATION FreeDmaBufferWithNotification
PALLOCATE_DMA_BUFFER AllocateDmaBuffer
PGET_RESOURCE_INFORMATION GetResourceInformation
PALLOCATE_RENDER_DMA_ENGINE AllocateRenderDmaEngine
PALLOCATE_RENDER_DMA_ENGINE AllocateRenderDmaEngine
PUNREGISTER_EVENT_CALLBACK UnregisterEventCallback
PSET_DMA_ENGINE_STATE SetDmaEngineState
PTRANSFER_CODEC_VERBS TransferCodecVerbs
PGET_DEVICE_INFORMATION GetDeviceInformation
PREGISTER_EVENT_CALLBACK RegisterEventCallback
PINTERFACE_REFERENCE InterfaceReference
PALLOCATE_CAPTURE_DMA_ENGINE AllocateCaptureDmaEngine
PGET_WALL_CLOCK_REGISTER GetWallClockRegister
PFREE_DMA_ENGINE FreeDmaEngine
PCHANGE_BANDWIDTH_ALLOCATION ChangeBandwidthAllocation
PFREE_DMA_BUFFER FreeDmaBuffer
PGET_RESOURCE_INFORMATION GetResourceInformation
PALLOCATE_DMA_BUFFER AllocateDmaBuffer
PINTERFACE_DEREFERENCE InterfaceDereference
PGET_LINK_POSITION_REGISTER GetLinkPositionRegister
struct _HDAUDIO_CODEC_COMMAND::@2032::@2035 Verb16
struct _HDAUDIO_CODEC_COMMAND::@2032::@2034 Verb8
ULONGLONG CompleteResponse
ULONG IsUnsolicitedResponse
struct _HDAUDIO_CODEC_RESPONSE::@2036::@2038::@2040::@2042 Unsolicited
HDAUDIO_CODEC_RESPONSE Input
HDAUDIO_CODEC_COMMAND Output
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback