MIXER_STATUS OpenKey(IN HANDLE hKey, IN LPWSTR SubKey, IN ULONG DesiredAccess, OUT PHANDLE OutKey);
MIXER_STATUS CloseKey(IN HANDLE hKey);
MIXER_STATUS QueryKeyValue(IN HANDLE hKey, IN LPWSTR KeyName, OUT PVOID * ResultBuffer, OUT PULONG ResultLength, OUT PULONG KeyType);
+PVOID AllocEventData(IN ULONG ExtraSize);
+VOID FreeEventData(IN PVOID EventData);
MIXER_CONTEXT MixerContext =
{
Copy,
OpenKey,
QueryKeyValue,
- CloseKey
+ CloseKey,
+ AllocEventData,
+ FreeEventData
};
GUID CategoryGuid = {STATIC_KSCATEGORY_AUDIO};
return Status;
}
+PVOID
+AllocEventData(
+ IN ULONG ExtraSize)
+{
+ PKSEVENTDATA Data = (PKSEVENTDATA)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(KSEVENTDATA) + ExtraSize);
+ if (!Data)
+ return NULL;
+
+ Data->EventHandle.Event = CreateEventW(NULL, FALSE, FALSE, NULL);
+ if (!Data->EventHandle.Event)
+ {
+ HeapFree(GetProcessHeap(), 0, Data);
+ return NULL;
+ }
+
+ Data->NotificationType = KSEVENTF_EVENT_HANDLE;
+ return Data;
+}
+
+VOID
+FreeEventData(IN PVOID EventData)
+{
+ PKSEVENTDATA Data = (PKSEVENTDATA)EventData;
+
+ CloseHandle(Data->EventHandle.Event);
+ HeapFree(GetProcessHeap(), 0, Data);
+}
+
+
BOOL
WdmAudInitUserModeMixer()
{