146 DPRINT(
"DevicePath %S\n", CurDevice->DevicePath);
149 RootDevice = CurDevice;
153 LastDevice->
lpNext = CurDevice;
157 LastDevice = CurDevice;
167 *OutPath = RootDevice;
272 DPRINT(
"Failed DRV_QUERYDEVICEINTERFACESIZE with %lx bRecord %u Index %u\n", dwResult, bRecord,
Index);
287 DPRINT(
"Failed DRV_QUERYDEVICEINTERFACE with %lx bRecord %u Index %u\n", dwResult, bRecord,
Index);
356 DPRINT(
"WaveInPins %u WaveOutPins %u %S\n", WaveInPins, WaveOutPins, CurInfo->
DevicePath);
364 INIT_GUID(CurInfo->
DeviceGuid[0], 0xbd6dd71a, 0x3deb, 0x11d1, 0xb1, 0x71, 0x00, 0xc0, 0x4f, 0xc2, 0x00, 0x00 + *WaveInCount);
375 INIT_GUID(CurInfo->
DeviceGuid[1], 0xbd6dd71b, 0x3deb, 0x11d1, 0xb1, 0x71, 0x00, 0xc0, 0x4f, 0xc2, 0x00, 0x00 + *WaveOutCount);
390 ULONG WaveOutCount, WaveInCount;
413 CurInfo = *OutRootInfo;
431 CurInfo = CurInfo->
lpNext;
464 CurInfo = CurInfo->
lpNext;
491 CurInfo = CurInfo->
lpNext;
HRESULT EnumAudioDeviceInterfaces(LPFILTERINFO *OutRootInfo)
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
_In_ ULONG _In_ ULONG _In_ ULONG Length
_Inout_ PUSB_DEVICE_HANDLE DeviceHandle
BOOL FindDeviceByGuid(LPCGUID pGuidSrc, LPFILTERINFO *Filter)
BOOL FindWinMMDeviceIndex(LPFILTERINFO CurInfo, BOOL bRecord)
WCHAR DevicePath[ANYSIZE_ARRAY]
UINT WINAPI waveOutMessage(HWAVEOUT hWaveOut, UINT uMessage, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
struct tagFILTERINFO * lpNext
DWORD GetFilterPinCommunication(IN HANDLE hFilter, IN ULONG PinId, OUT PKSPIN_COMMUNICATION Communication)
BOOL WINAPI SetupDiGetDeviceInterfaceDetailW(HDEVINFO DeviceInfoSet, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData, PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData, DWORD DeviceInterfaceDetailDataSize, PDWORD RequiredSize, PSP_DEVINFO_DATA DeviceInfoData)
#define INVALID_HANDLE_VALUE
IN PVOID IN PVOID IN USHORT IN USHORT Size
DWORD WINAPI GetLastError(VOID)
#define DRV_QUERYDEVICEINTERFACESIZE
BOOL GetDeviceListInterfaces(HDEVINFO DeviceHandle, IN LPGUID InterfaceGuid, LPFILTERINFO *OutPath)
_In_ const GUID _In_ ULONG PinCount
UINT WINAPI waveInMessage(HWAVEIN hWaveIn, UINT uMessage, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
DWORD OpenDeviceKey(HDEVINFO Handle, PSP_DEVINFO_DATA FILTERINFOData, DWORD KeyType, REGSAM DesiredAccess, OUT HKEY *OutKey)
VOID FindAudioFilterPins(LPFILTERINFO CurInfo, OUT PULONG WaveInPins, OUT PULONG WaveOutPins)
struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_DEVICE_INTERFACE_DETAIL_DATA_W
WCHAR DevicePath[MAX_PATH]
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
UINT WINAPI waveOutGetNumDevs(void)
ULONG GetPinIdFromFilter(LPFILTERINFO Filter, BOOL bCapture, ULONG Offset)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define DICS_FLAG_CONFIGSPECIFIC
_In_ WDFCOLLECTION _In_ ULONG Index
#define UlongToHandle(ul)
DWORD GetFilterPinCount(IN HANDLE hFilter, OUT PULONG NumPins)
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W * PSP_DEVICE_INTERFACE_DETAIL_DATA_W
DWORD OpenDeviceList(IN LPGUID InterfaceGuid, OUT HDEVINFO *OutHandle)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
static const GUID InterfaceGuid
#define SetupDiGetClassDevs
HKEY WINAPI SetupDiOpenDevRegKey(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Scope, DWORD HwProfile, DWORD KeyType, REGSAM samDesired)
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING DeviceID
_In_ ULONG _In_ ULONG Offset
#define INIT_GUID(guid, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
BOOL CloseDeviceList(HDEVINFO Handle)
BOOL WINAPI SetupDiEnumDeviceInterfaces(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, CONST GUID *InterfaceClassGuid, DWORD MemberIndex, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
#define DIGCF_DEVICEINTERFACE
IN PVOID IN PVOID InterfaceData
UINT WINAPI waveInGetNumDevs(void)
DWORD OpenFilter(IN LPCWSTR lpFileName, IN PHANDLE OutHandle)
#define DRV_QUERYDEVICEINTERFACE
BOOL FindDeviceByMappedId(IN ULONG DeviceID, LPFILTERINFO *Filter, BOOL bPlayback)
#define HeapFree(x, y, z)
HRESULT EnumerateAudioFilter(LPFILTERINFO CurInfo, OUT PULONG WaveInCount, OUT PULONG WaveOutCount)
DWORD GetFilterPinDataFlow(IN HANDLE hFilter, IN ULONG PinId, OUT PKSPIN_DATAFLOW DataFlow)