18{
19 if (!sofTplg) {
21 }
22
26
31 "_DSD"
32 );
35 }
36
38
41
44
45
46 status = WdfIoTargetSendInternalIoctlSynchronously(
50 &inputMemDesc,
51 &outputSizeMemDesc,
54 );
55
57
59 }
60
61 WDFMEMORY outputMemory;
63 size_t outputArgumentBufferSize = outputSizeBuffer.
Length;
65
69
70 status = WdfMemoryCreate(&attributes,
71 NonPagedPoolNx,
72 0,
73 outputBufferSize,
74 &outputMemory,
75 (
PVOID*)&outputBuffer);
78 }
79
81
84
85 status = WdfIoTargetSendInternalIoctlSynchronously(
89 &inputMemDesc,
90 &outputMemDesc,
93 );
96 }
97
100 }
101
103 "Evaluted %s successfully\n", inputBuffer.
MethodName);
104
105 if (outputBuffer->Count % 2) {
108 }
109
111
114 sofTplg->
length =
sizeof(*sofTplg);
115
116 {
118 for (
ULONG i = 0;
i < outputBuffer->Count;
i += 2) {
123
125 guidArg->DataLength != 16 ||
127 break;
128 }
129
130 if (
memcmp(guidArg->Data, &GUID_ACPI_DSD, guidArg->DataLength) != 0) {
131 continue;
132 }
133
135
139
140 if (
strncmp((
const char*)&dsdParameterName->Data[0],
"speaker-tplg", dsdParameterName->DataLength) == 0) {
142 }
143 else if (
strncmp((
const char*)&dsdParameterName->Data[0],
"hp-tplg", dsdParameterName->DataLength) == 0) {
145 }
146 else if (
strncmp((
const char*)&dsdParameterName->Data[0],
"mic-tplg", dsdParameterName->DataLength) == 0) {
148 }
149 }
150 }
151 }
152
155 WdfObjectDelete(outputMemory);
156 }
158}
ACPI_METHOD_ARGUMENT UNALIGNED * PACPI_METHOD_ARGUMENT
#define ACPI_METHOD_NEXT_ARGUMENT(Argument)
#define ACPI_EVAL_INPUT_BUFFER_SIGNATURE_EX
#define ACPI_METHOD_ARGUMENT_BUFFER
#define IOCTL_ACPI_EVAL_METHOD_EX
#define ACPI_EVAL_OUTPUT_BUFFER_SIGNATURE
#define FOR_EACH_ACPI_METHOD_ARGUMENT(MethodArgument, MethodArgumentsBegin, MethodArgumentsEnd)
#define ACPI_METHOD_ARGUMENT_PACKAGE
ACPI_EVAL_OUTPUT_BUFFER UNALIGNED * PACPI_EVAL_OUTPUT_BUFFER
#define NT_SUCCESS(StatCode)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP int __cdecl strncmp(const char *, const char *, size_t)
#define SklHdAudBusPrint(dbglevel, fmt,...)
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
#define STATUS_ACPI_INVALID_DATA
#define STATUS_ACPI_NOT_INITIALIZED
NTSTRSAFEVAPI RtlStringCchPrintfA(_Out_writes_(cchDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cchDest, _In_ _Printf_format_string_ NTSTRSAFE_PCSTR pszFormat,...)
#define STATUS_BUFFER_OVERFLOW
void copyDSDParam(PACPI_METHOD_ARGUMENT dsdParameterData, char **buf)
#define FIELD_OFFSET(t, f)
#define STATUS_INVALID_PARAMETER
FORCEINLINE VOID WDF_MEMORY_DESCRIPTOR_INIT_BUFFER(_Out_ PWDF_MEMORY_DESCRIPTOR Descriptor, _In_ PVOID Buffer, _In_ ULONG BufferLength)
FORCEINLINE VOID WDF_MEMORY_DESCRIPTOR_INIT_HANDLE(_Out_ PWDF_MEMORY_DESCRIPTOR Descriptor, _In_ WDFMEMORY Memory, _In_opt_ PWDFMEMORY_OFFSET Offsets)
FORCEINLINE VOID WDF_OBJECT_ATTRIBUTES_INIT(_Out_ PWDF_OBJECT_ATTRIBUTES Attributes)