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"));
125STDMETHODIMP 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();
285STDMETHODIMP 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();
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_ComponentId(PPCPROPERTY_REQUEST PropertyRequest)
static NTSTATUS BasicSupportHandler(PPCPROPERTY_REQUEST PropertyRequest)
NTSTATUS NTAPI CreateMiniportTopologyCMI(PUNKNOWN *Unknown, REFCLSID, PUNKNOWN UnknownOuter, POOL_TYPE PoolType)
NTSTATUS NTAPI PropertyHandler_Private(PPCPROPERTY_REQUEST PropertyRequest)
NTSTATUS NTAPI PropertyHandler_CpuResources(PPCPROPERTY_REQUEST PropertyRequest)
NTSTATUS NTAPI PropertyHandler_OnOff(PPCPROPERTY_REQUEST PropertyRequest)
NTSTATUS NTAPI PropertyHandler_Level(PPCPROPERTY_REQUEST PropertyRequest)
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
IN PRESOURCELIST IN PPORTTOPOLOGY Port
friend NTSTATUS NTAPI PropertyHandler_OnOff(PPCPROPERTY_REQUEST PropertyRequest)
UInt32 NodeCache[2 *KSNODE_TOPO_INVALID]
friend NTSTATUS NTAPI PropertyHandler_Level(PPCPROPERTY_REQUEST PropertyRequest)
#define NT_SUCCESS(StatCode)
#define MANUFACTURER_CM8738
@ KSNODE_TOPO_MICOUT_MUTE
@ KSNODE_TOPO_CENTER2LINE
@ KSNODE_TOPO_MICOUT_LOUDNESS
@ KSNODE_TOPO_MICIN_VOLUME
@ KSNODE_TOPO_MICOUT_VOLUME
@ KSNODE_TOPO_AUX_MUTE_IN
@ KSNODE_TOPO_LINEOUT_VOLUME
@ KSNODE_TOPO_IEC_POLVALID
@ KSNODE_TOPO_LINEIN_MUTE
@ KSNODE_TOPO_LINEIN_VOLUME
@ KSNODE_TOPO_WAVEOUT_MUTE
@ KSNODE_TOPO_IEC_INVERSE
@ KSNODE_TOPO_WAVEOUT_VOLUME
@ KSNODE_TOPO_IEC_COPYRIGHT
@ KSNODE_TOPO_WAVEOUT_MUTE_IN
@ KSNODE_TOPO_IEC_MONITOR
@ KSNODE_TOPO_LINEIN_MUTE_IN
@ KSNODE_TOPO_MIC_MUTE_IN
@ KSNODE_TOPO_MASTER_MUTE_DUMMY
@ KSNODE_TOPO_MICIN_LOUDNESS
struct _MINIPORT * PMINIPORT
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)
#define KSPROPERTY_TYPE_SET
#define KSPROPERTY_TYPE_BASICSUPPORT
#define KSPROPERTY_TYPE_GET
#define ExAllocatePoolWithTag(hernya, size, tag)
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
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
struct KSCOMPONENTID * PKSCOMPONENTID
#define KSPROPERTY_MEMBER_STEPPEDRANGES
#define KSPROPTYPESETID_General
struct KSPROPERTY_STEPPING_LONG * PKSPROPERTY_STEPPING_LONG
struct KSPROPERTY_DESCRIPTION * PKSPROPERTY_DESCRIPTION
struct KSPROPERTY_MEMBERSHEADER * PKSPROPERTY_MEMBERSHEADER
static PCFILTER_DESCRIPTOR MiniportFilterDescriptor
static PCNODE_DESCRIPTOR TopologyNodes[]
const VolumeTable VolTable[]
#define ExFreePoolWithTag(_P, _T)
@ KeyValuePartialInformation
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define REG_OPTION_NON_VOLATILE
struct _KEY_VALUE_PARTIAL_INFORMATION * PKEY_VALUE_PARTIAL_INFORMATION
NTSTRSAFEVAPI RtlStringCbPrintfA(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cbDest, _In_ _Printf_format_string_ NTSTRSAFE_PCSTR pszFormat,...)
NTSTRSAFEVAPI RtlStringCbPrintfW(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cbDest, _In_ _Printf_format_string_ NTSTRSAFE_PCWSTR pszFormat,...)
IRegistryKey * PREGISTRYKEY
IMiniportTopology * PMINIPORTTOPOLOGY
IResourceList * PRESOURCELIST
IPortTopology * PPORTTOPOLOGY
#define FMT_960_MULTI_PCM
#define FMT_441_MULTI_PCM
#define FMT_480_MULTI_PCM
#define KSPROPERTY_CMI_SET
#define KSPROPERTY_CMI_GET
#define FMT_882_MULTI_PCM
#define STATUS_BUFFER_TOO_SMALL
#define STATUS_BUFFER_OVERFLOW
PCMITOPOLOGY TopoMiniport
bool enableSPDIFInMonitor
UInt32 enableSPDOCopyright
UInt32 invertValidBitSPDI
const PCPROPERTY_ITEM * PropertyItem
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
#define IsEqualGUIDAligned(guid1, guid2)
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR Level
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList