31 #define NTSTRSAFE_LIB //for Windows 2000 compatibility 35 #pragma code_seg("PAGE") 49 DBGPRINT((
"CCMITopology::NonDelegatingQueryInterface"));
75 DBGPRINT((
"CCMITopology::~CCMITopology"));
77 storeMixerSettingsToRegistry();
95 DBGPRINT((
"UnknownAdapter->QueryInterface() failed"));
109 loadMixerSettingsFromRegistry();
117 ASSERT(OutFilterDescriptor);
118 DBGPRINT((
"CCMITopology::GetDescription"));
125 STDMETHODIMP CCMITopology::loadMixerSettingsFromRegistry()
128 DBGPRINT((
"CCMITopology::loadMixerSettingsFromRegistry"));
141 DBGPRINT((
"CMIAdapter->getDeviceObject() failed"));
150 DBGPRINT((
"PcNewRegistryKey() failed"));
158 DBGPRINT((
"DriverKey->NewSubKey() failed"));
163 if(KeyInfo ==
NULL) {
164 DBGPRINT((
"ExAllocatePoolWithTag() failed"));
170 PropertyRequest.
Instance = &Channel;
177 PropertyRequest.
Node =
i;
182 DBGPRINT((
"RtlStringCbPrintfW() failed"));
228 DBGPRINT((
"RtlStringCbPrintfW() failed"));
277 SettingsKey->Release();
278 DriverKey->Release();
285 STDMETHODIMP CCMITopology::storeMixerSettingsToRegistry()
288 DBGPRINT((
"CCMITopology::storeMixerSettingsToRegistry"));
305 DBGPRINT((
"PcNewRegistryKey() failed"));
314 DBGPRINT((
"DriverKey->NewSubKey() failed"));
320 PropertyRequest.
Instance = &Channel;
327 PropertyRequest.
Node =
i;
329 PropertyRequest.
Node =
i;
334 DBGPRINT((
"RtlStringCbPrintfW() failed"));
349 DBGPRINT((
"RtlStringCbPrintfW() failed"));
369 DBGPRINT((
"RtlStringCbPrintfW() failed"));
384 DBGPRINT((
"RtlStringCbPrintfW() failed"));
403 DBGPRINT((
"RtlStringCbPrintfW() failed"));
418 DBGPRINT((
"RtlStringCbPrintfW() failed"));
439 SettingsKey->Release();
440 DriverKey->Release();
445 STDMETHODIMP CCMITopology::loadMixerSettingsFromMemory()
448 DBGPRINT((
"CCMITopology::loadMixerSettingsFromMemory"));
468 DBGPRINT((
"CCMITopology::storeMixerSettingsToMemory"));
484 DBGPRINT((
"[PropertyHandler_OnOff]"));
492 if (PropertyRequest->
Node ==
ULONG(-1)) {
502 switch (PropertyRequest->
Node) {
522 default:
return ntStatus;
561 default:
return ntStatus;
580 default:
return ntStatus;
618 default:
return ntStatus;
637 default:
return ntStatus;
657 default:
return ntStatus;
677 default:
return ntStatus;
697 channel = (1 << channel);
715 switch (PropertyRequest->
Node) {
962 bool supported =
false;
964 switch (PropertyRequest->
Node) {
981 switch (PropertyRequest->
Node) {
1035 DBGPRINT((
"[BasicSupportHandler]"));
1069 switch (PropertyRequest->
Node) {
1071 Range->Bounds.SignedMaximum = 0;
1072 Range->Bounds.SignedMinimum = (-60 << 16);
1073 Range->SteppingDelta = (4 << 16);
1077 Range->Bounds.SignedMaximum = 0;
1078 Range->Bounds.SignedMinimum = (-56 << 16);
1079 Range->SteppingDelta = (8 << 16);
1084 Range->Reserved = 0;
1105 DBGPRINT((
"[PropertyHandler_Level]"));
1166 if (mixerValue != ((*
Level >> 18)+0x0F)) {
1167 *
Level = (mixerValue - 0x0F) << 18;
1172 if (*
Level <= (-30 << 16)) {
1174 that->
NodeCache[(2*PropertyRequest->
Node)+channel] = -30 << 16;
1180 mixerValue = ((*
Level >> 18) + 0x0F) & 0x0F;
1197 if (mixerValue != ((*
Level >> 19)+0x07)) {
1198 *
Level = (mixerValue - 0x07) << 19;
1202 if (*
Level <= (-56 << 16)) {
1205 }
else if (*
Level >= 0) {
1209 mixerValue = ((*
Level >> 19) + 0x07) & 0x07;
1223 switch(PropertyRequest->
Node) {
1243 DBGPRINT((
"[PropertyHandler_CpuResources]"));
1247 if (PropertyRequest->
Node == (
ULONG)-1) {
1295 DBGPRINT((
"[PropertyHandler_ComponentId]"));
1313 }
else if (PropertyRequest->
ValueSize == 0) {
1341 DBGPRINT((
"[PropertyHandler_Private]"));
1495 that->storeMixerSettingsToRegistry();
NTSTATUS NTAPI PropertyHandler_OnOff(PPCPROPERTY_REQUEST PropertyRequest)
struct KSCOMPONENTID * PKSCOMPONENTID
NTSTATUS NTAPI CreateMiniportTopologyCMI(PUNKNOWN *Unknown, REFCLSID, PUNKNOWN UnknownOuter, POOL_TYPE PoolType)
IPortTopology * PPORTTOPOLOGY
IMiniportTopology * PMINIPORTTOPOLOGY
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
#define FMT_480_MULTI_PCM
#define STATUS_INVALID_PARAMETER
const VolumeTable VolTable[]
#define KSPROPERTY_CMI_GET
const GUID KSNODETYPE_MUTE
#define STATUS_INVALID_DEVICE_REQUEST
const GUID KSNODETYPE_VOLUME
UInt32 invertValidBitSPDI
const GUID KSPROPTYPESETID_General
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR Level
BOOL Init(PUSERCONNECT UserCon)
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
#define KSPROPERTY_TYPE_GET
#define STATUS_BUFFER_TOO_SMALL
#define IsEqualGUIDAligned(guid1, guid2)
const GUID KSNODETYPE_LOUDNESS
UInt32 enableSPDOCopyright
struct KSPROPERTY_MEMBERSHEADER * PKSPROPERTY_MEMBERSHEADER
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
PCMITOPOLOGY TopoMiniport
NTSTATUS NTAPI PropertyHandler_Private(PPCPROPERTY_REQUEST PropertyRequest)
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
NTSTRSAFEVAPI RtlStringCbPrintfA(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cbDest, _In_ _Printf_format_string_ NTSTRSAFE_PCSTR pszFormat,...)
#define FMT_960_MULTI_PCM
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
#define REG_OPTION_NON_VOLATILE
#define KSPROPERTY_TYPE_BASICSUPPORT
const PCPROPERTY_ITEM * PropertyItem
#define KSPROPERTY_CMI_SET
struct KSPROPERTY_STEPPING_LONG * PKSPROPERTY_STEPPING_LONG
IRegistryKey * PREGISTRYKEY
#define NT_SUCCESS(StatCode)
NTSTRSAFEVAPI RtlStringCbPrintfW(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cbDest, _In_ _Printf_format_string_ NTSTRSAFE_PCWSTR pszFormat,...)
struct _KEY_VALUE_PARTIAL_INFORMATION * PKEY_VALUE_PARTIAL_INFORMATION
#define MANUFACTURER_CM8738
struct _MINIPORT * PMINIPORT
NTSTATUS NTAPI PropertyHandler_CpuResources(PPCPROPERTY_REQUEST PropertyRequest)
NTSTATUS NTAPI PropertyHandler_ComponentId(PPCPROPERTY_REQUEST PropertyRequest)
#define STATUS_UNSUCCESSFUL
#define ExAllocatePoolWithTag(hernya, size, tag)
friend NTSTATUS NTAPI PropertyHandler_OnOff(PPCPROPERTY_REQUEST PropertyRequest)
NTSTATUS NTAPI PcNewRegistryKey(OUT PREGISTRYKEY *OutRegistryKey, IN PUNKNOWN OuterUnknown OPTIONAL, IN ULONG RegistryKeyType, IN ACCESS_MASK DesiredAccess, IN PVOID DeviceObject OPTIONAL, IN PVOID SubDevice OPTIONAL, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN ULONG CreateOptions OPTIONAL, OUT PULONG Disposition OPTIONAL)
struct PropertyItem PropertyItem
#define KSPROPERTY_MEMBER_STEPPEDRANGES
static NTSTATUS BasicSupportHandler(PPCPROPERTY_REQUEST PropertyRequest)
NTSTATUS NTAPI PropertyHandler_Level(PPCPROPERTY_REQUEST PropertyRequest)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
IResourceList * PRESOURCELIST
#define STATUS_BUFFER_OVERFLOW
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
IN PVOID IN PVOID IN USHORT IN USHORT IN PINTERFACE Interface
static PCNODE_DESCRIPTOR TopologyNodes[]
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
friend NTSTATUS NTAPI PropertyHandler_Level(PPCPROPERTY_REQUEST PropertyRequest)
#define FMT_882_MULTI_PCM
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
bool enableSPDIFInMonitor
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
IN PRESOURCELIST IN PPORTTOPOLOGY Port
UInt32 NodeCache[2 *KSNODE_TOPO_INVALID]
#define FMT_441_MULTI_PCM
#define ExFreePoolWithTag(_P, _T)
#define KSPROPERTY_TYPE_SET
static PCFILTER_DESCRIPTOR MiniportFilterDescriptor
struct KSPROPERTY_DESCRIPTION * PKSPROPERTY_DESCRIPTION