mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
212 lines
5.0 KiB
212 lines
5.0 KiB
/***************************************************************************
|
|
*
|
|
* Copyright (C) 2000-2000 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: kshlp.h
|
|
* Content: WDM/CSA helper functions.
|
|
* History:
|
|
* Date By Reason
|
|
* ==== == ======
|
|
* 05/16/2000 jstokes Created.
|
|
*
|
|
***************************************************************************/
|
|
|
|
#ifndef __KSHLP_H__
|
|
#define __KSHLP_H__
|
|
|
|
#include <windows.h>
|
|
#include <ks.h>
|
|
#include <ksmedia.h>
|
|
|
|
#define KSPIN_DATAFLOW_CAPTURE KSPIN_DATAFLOW_OUT
|
|
#define KSPIN_DATAFLOW_RENDER KSPIN_DATAFLOW_IN
|
|
|
|
// Device-specific DirectSound property sets
|
|
typedef struct tagKSDSPROPERTY
|
|
{
|
|
GUID PropertySet;
|
|
ULONG PropertyId;
|
|
ULONG NodeId;
|
|
ULONG AccessFlags;
|
|
} KSDSPROPERTY, *PKSDSPROPERTY;
|
|
|
|
// KS stream data
|
|
typedef struct tagKSSTREAMIO
|
|
{
|
|
KSSTREAM_HEADER Header;
|
|
OVERLAPPED Overlapped;
|
|
BOOL fPendingIrp;
|
|
} KSSTREAMIO, *PKSSTREAMIO;
|
|
|
|
// System audio device properties
|
|
typedef struct tagKSSADPROPERTY
|
|
{
|
|
KSPROPERTY Property;
|
|
ULONG DeviceId;
|
|
ULONG Reserved;
|
|
} KSSADPROPERTY, *PKSSADPROPERTY;
|
|
|
|
// Topology node information
|
|
typedef struct tagKSNODE
|
|
{
|
|
ULONG NodeId;
|
|
ULONG CpuResources;
|
|
} KSNODE, *PKSNODE;
|
|
|
|
typedef struct tagKSVOLUMENODE
|
|
{
|
|
KSNODE Node;
|
|
KSPROPERTY_STEPPING_LONG VolumeRange;
|
|
} KSVOLUMENODE, *PKSVOLUMENODE;
|
|
|
|
// Our own version of NTSTATUS
|
|
typedef LONG NTSTATUS;
|
|
|
|
#define NT_SUCCESS(s) ((NTSTATUS)(s) >= 0)
|
|
#define NT_INFORMATION(s) ((ULONG)(s) >> 30 == 1)
|
|
#define NT_WARNING(s) ((ULONG)(s) >> 30 == 2)
|
|
#define NT_ERROR(s) ((ULONG)(s) >> 30 == 3)
|
|
|
|
// Reserved node identifiers
|
|
#define NODE_UNINITIALIZED 0xFFFFFFFF
|
|
#define NODE_WILDCARD 0xFFFFFFFE
|
|
|
|
#define NODE_PIN_UNINITIALIZED 0xFFFFFFFF
|
|
|
|
#define IS_VALID_NODE(nodeid) \
|
|
(NODE_UNINITIALIZED != (nodeid))
|
|
|
|
// Node implementation
|
|
#define KSAUDIO_CPU_RESOURCES_UNINITIALIZED 'ENON'
|
|
|
|
#define IS_HARDWARE_NODE(impl) \
|
|
(KSAUDIO_CPU_RESOURCES_NOT_HOST_CPU == (impl))
|
|
|
|
#define IS_SOFTWARE_NODE(impl) \
|
|
(KSAUDIO_CPU_RESOURCES_HOST_CPU == (impl))
|
|
|
|
#ifdef __cplusplus
|
|
|
|
HRESULT
|
|
PostDevIoctl
|
|
(
|
|
HANDLE hDevice,
|
|
DWORD dwControlCode,
|
|
LPVOID pvIn = NULL,
|
|
DWORD cbIn = 0,
|
|
LPVOID pvOut = NULL,
|
|
DWORD cbOut = 0,
|
|
LPDWORD pcbReturned = NULL,
|
|
LPOVERLAPPED pOverlapped = NULL
|
|
);
|
|
|
|
HRESULT
|
|
KsGetProperty
|
|
(
|
|
HANDLE hDevice,
|
|
REFGUID guidPropertySet,
|
|
ULONG ulPropertyId,
|
|
LPVOID pvData,
|
|
ULONG cbData,
|
|
PULONG pcbDataReturned = NULL
|
|
);
|
|
|
|
HRESULT
|
|
KsSetProperty
|
|
(
|
|
HANDLE hDevice,
|
|
REFGUID guidPropertySet,
|
|
ULONG ulPropertyId,
|
|
LPVOID pvData,
|
|
ULONG cbData
|
|
);
|
|
|
|
HRESULT
|
|
KsGetPinProperty
|
|
(
|
|
HANDLE hDevice,
|
|
ULONG ulPropertyId,
|
|
ULONG ulPinId,
|
|
LPVOID pvData,
|
|
ULONG cbData,
|
|
PULONG pcbDataReturned = NULL
|
|
);
|
|
|
|
HRESULT
|
|
KsSetPinProperty
|
|
(
|
|
HANDLE hDevice,
|
|
ULONG ulPropertyId,
|
|
ULONG ulPinId,
|
|
LPVOID pvData,
|
|
ULONG cbData
|
|
);
|
|
|
|
HRESULT
|
|
KsGetNodeProperty
|
|
(
|
|
HANDLE hDevice,
|
|
REFGUID guidPropertySet,
|
|
ULONG ulPropertyId,
|
|
ULONG ulNodeId,
|
|
LPVOID pvData,
|
|
ULONG cbData,
|
|
PULONG pcbDataReturned = NULL
|
|
);
|
|
|
|
HRESULT
|
|
KsSetNodeProperty
|
|
(
|
|
HANDLE hDevice,
|
|
REFGUID guidPropertySet,
|
|
ULONG ulPropertyId,
|
|
ULONG ulNodeId,
|
|
LPVOID pvData,
|
|
ULONG cbData
|
|
);
|
|
|
|
HRESULT
|
|
KsGetMultiplePinProperties
|
|
(
|
|
HANDLE hDevice,
|
|
ULONG ulPropertyId,
|
|
ULONG ulPinId,
|
|
PKSMULTIPLE_ITEM * ppKsMultipleItem
|
|
);
|
|
|
|
HRESULT
|
|
KsGetMultipleTopologyProperties
|
|
(
|
|
HANDLE hDevice,
|
|
ULONG ulPropertyId,
|
|
PKSMULTIPLE_ITEM * ppKsMultipleItem
|
|
);
|
|
|
|
|
|
HRESULT
|
|
KsSetTopologyNodeEnable
|
|
(
|
|
HANDLE hDevice,
|
|
ULONG ulNodeId,
|
|
BOOL fEnable
|
|
);
|
|
|
|
HRESULT
|
|
KsGetTopologyNodeEnable
|
|
(
|
|
HANDLE hDevice,
|
|
ULONG ulNodeId,
|
|
PBOOL pfEnable
|
|
);
|
|
|
|
HRESULT
|
|
KsTopologyNodeReset
|
|
(
|
|
HANDLE hDevice,
|
|
ULONG ulNodeId,
|
|
BOOL fReset
|
|
);
|
|
|
|
#endif // __cplusplus
|
|
|
|
#endif // __KSHLP_H__
|