📄 wdmaud.h
字号:
DPRINT("-- %s --\n", #info); \
DUMP_MEMBER(info, unknown_00); \
DUMP_MEMBER(info, id); \
DUMP_MEMBER(info, type); \
DUMP_MEMBER(info, wave_handle); \
DUMP_MEMBER(info, client_instance); \
DUMP_MEMBER(info, client_callback); \
DUMP_MEMBER(info, unknown_18); \
DUMP_MEMBER(info, flags); \
DUMP_MEMBER(info, ioctl_param2); \
DUMP_MEMBER(info, ioctl_param1); \
DUMP_MEMBER(info, with_critical_section); \
DUMP_MEMBER(info, string_2c); \
DUMP_MEMBER(info, unknown_30); \
DUMP_MEMBER(info, playing_notes); \
DUMP_MEMBER(info, unknown_38); \
DUMP_MEMBER(info, unknown_3c); \
DUMP_MEMBER(info, unknown_40); \
DUMP_MEMBER(info, unknown_44); \
DUMP_MEMBER(info, unknown_48); \
DUMP_MEMBER(info, unknown_4C); \
DUMP_MEMBER(info, unknown_50); \
DUMP_MEMBER(info, beef); \
DUMP_MEMBER(info, state); \
DUMP_MEMBER(info, signature); \
}
#else
#define DUMP_MEMBER(struct, member)
#define DUMP_WDMAUD_DEVICE_INFO(info)
#endif
/* Helper (helper.c) funcs */
MMRESULT TranslateWinError(DWORD error);
#define GetLastMmError() TranslateWinError(GetLastError());
/* user.c */
void
NotifyClient(
PWDMAUD_DEVICE_INFO device,
DWORD message,
DWORD p1,
DWORD p2
);
/* kernel.c */
BOOL
EnableKernelInterface();
BOOL
DisableKernelInterface();
HANDLE
GetKernelInterface();
MMRESULT
CallKernelDevice(
PWDMAUD_DEVICE_INFO device,
DWORD ioctl_code,
DWORD param1,
DWORD param2);
/* devices.c */
BOOL
IsValidDevicePath(WCHAR* path);
MMRESULT
ValidateDeviceData(
PWDMAUD_DEVICE_INFO device_data,
BOOL require_state
);
/*
MMRESULT ValidateDeviceState(PWDMAUD_DEVICE_STATE state);
MMRESULT ValidateDeviceStateEvents(PWDMAUD_DEVICE_STATE state);
MMRESULT ValidateDeviceInfoAndState(PWDMAUD_DEVICE_INFO device_info);
*/
/* TODO: Add ID parameter */
PWDMAUD_DEVICE_INFO
CreateDeviceData(
CHAR device_type,
DWORD device_id,
WCHAR* device_path,
BOOL with_state
);
void
DeleteDeviceData(PWDMAUD_DEVICE_INFO device_data);
/* mixer ... */
MMRESULT ModifyDevicePresence(
CHAR device_type,
WCHAR* device_path,
BOOL adding);
#define AddDevice(device_type, device_path) \
ModifyDevicePresence(device_type, device_path, TRUE)
#define AddWaveInDevice(device_path) \
AddDevice(WDMAUD_WAVE_IN, device_path)
#define AddWaveOutDevice(device_path) \
AddDevice(WDMAUD_WAVE_OUT, device_path)
#define AddMidiInDevice(device_path) \
AddDevice(WDMAUD_MIDI_IN, device_path)
#define AddMidiOutDevice(device_path) \
AddDevice(WDMAUD_MIDI_OUT, device_path)
#define AddMixerDevice(device_path) \
AddDevice(WDMAUD_MIXER, device_path)
#define AddAuxDevice(device_path) \
AddDevice(WDMAUD_AUX, device_path)
#define RemoveDevice(device_type, device_path) \
ModifyDevicePresence(device_type, device_path, FALSE)
#define RemoveWaveInDevice(device_path) \
RemoveDevice(WDMAUD_WAVE_IN, device_path)
#define RemoveWaveOutDevice(device_path) \
RemoveDevice(WDMAUD_WAVE_OUT, device_path)
#define RemoveMidiInDevice(device_path) \
RemoveDevice(WDMAUD_MIDI_IN, device_path)
#define RemoveMidiOutDevice(device_path) \
RemoveDevice(WDMAUD_MIDI_OUT, device_path)
#define RemoveMixerDevice(device_path) \
RemoveDevice(WDMAUD_MIXER, device_path)
#define RemoveAuxDevice(device_path) \
RemoveDevice(WDMAUD_AUX, device_path)
DWORD
GetDeviceCount(CHAR device_type, WCHAR* device_path);
#define GetWaveInCount(device_path) GetDeviceCount(WDMAUD_WAVE_IN, device_path)
#define GetWaveOutCount(device_path) GetDeviceCount(WDMAUD_WAVE_OUT, device_path)
#define GetMidiInCount(device_path) GetDeviceCount(WDMAUD_MIDI_IN, device_path)
#define GetMidiOutCount(device_path) GetDeviceCount(WDMAUD_MIDI_OUT, device_path)
#define GetMixerCount(device_path) GetDeviceCount(WDMAUD_MIXER, device_path)
#define GetAuxCount(device_path) GetDeviceCount(WDMAUD_AUX, device_path)
MMRESULT
GetDeviceCapabilities(
CHAR device_type,
DWORD device_id,
WCHAR* device_path,
LPMDEVICECAPSEX caps
);
#define GetWaveInCapabilities(id, device_path, caps) \
GetDeviceCapabilities(WDMAUD_WAVE_IN, id, device_path, caps);
#define GetWaveOutCapabilities(id, device_path, caps) \
GetDeviceCapabilities(WDMAUD_WAVE_OUT, id, device_path, caps);
#define GetMidiInCapabilities(id, device_path, caps) \
GetDeviceCapabilities(WDMAUD_MIDI_IN, id, device_path, caps);
#define GetMidiOutCapabilities(id, device_path, caps) \
GetDeviceCapabilities(WDMAUD_MIDI_OUT, id, device_path, caps);
#define GetMixerCapabilities(id, device_path, caps) \
GetDeviceCapabilities(WDMAUD_MIXER, id, device_path, caps);
#define GetAuxCapabilities(id, device_path, caps) \
GetDeviceCapabilities(WDMAUD_AUX, id, device_path, caps);
MMRESULT
OpenDeviceViaKernel(
PWDMAUD_DEVICE_INFO device,
LPWAVEFORMATEX format
);
MMRESULT
OpenDevice(
CHAR device_type,
DWORD device_id,
LPVOID open_descriptor,
DWORD flags,
PWDMAUD_DEVICE_INFO* user_data
);
/* wave.c */
#if 0
MMRESULT
OpenWaveDevice(
CHAR device_type,
DWORD device_id,
LPWAVEOPENDESC open_details,
DWORD flags,
DWORD user_data
);
#endif
#define OpenWaveInDevice(id, open_details, flags, user_data) \
OpenDevice(WDMAUD_WAVE_IN, id, open_details, flags, user_data);
#define OpenWaveOutDevice(id, open_details, flags, user_data) \
OpenDevice(WDMAUD_WAVE_OUT, id, open_details, flags, user_data);
#define OpenMidiInDevice(id, open_details, flags, user_data) \
OpenDevice(WDMAUD_MIDI_IN, id, open_details, flags, user_data);
#define OpenMidiOutDevice(id, open_details, flags, user_data) \
OpenDevice(WDMAUD_MIDI_OUT, id, open_details, flags, user_data);
MMRESULT
CloseWaveDevice(
PWDMAUD_DEVICE_INFO device
);
#define SET_WAVEHDR_FLAG(header, flag) \
header->dwFlags |= flag
#define CLEAR_WAVEHDR_FLAG(header, flag) \
header->dwFlags &= ~flag
#define IS_WAVEHDR_FLAG_SET(header, flag) \
( header->dwFlags & flag )
MMRESULT
ValidateWavePreparationData(PWDMAUD_WAVE_PREPARATION_DATA prep_data);
MMRESULT
ValidateWaveHeader(PWAVEHDR header);
MMRESULT
PrepareWaveHeader(
PWDMAUD_DEVICE_INFO device,
PWAVEHDR header
);
MMRESULT
UnprepareWaveHeader(PWAVEHDR header);
#define IsHeaderPrepared(header) \
( header->reserved != 0 )
MMRESULT
CompleteWaveHeader(PWAVEHDR header);
MMRESULT
WriteWaveData(PWDMAUD_DEVICE_INFO device, PWAVEHDR header);
/* midi.c */
#if 0
MMRESULT
OpenMidiDevice(
CHAR device_type,
DWORD device_id,
LPMIDIOPENDESC open_details,
DWORD flags,
DWORD user_data
);
#endif
MMRESULT
CloseMidiDevice(
PWDMAUD_DEVICE_INFO device
);
MMRESULT
WriteMidiShort(
PWDMAUD_DEVICE_INFO device,
DWORD message
);
/* FIXME: Bad params */
MMRESULT
WriteMidiBuffer(PWDMAUD_DEVICE_INFO device);
MMRESULT
ResetMidiDevice(PWDMAUD_DEVICE_INFO device);
/* threads.c */
BOOL CreateCompletionThread(PWDMAUD_DEVICE_INFO device);
/* MORE... */
/*
DEBUGGING + RESOURCE TRACKING
*/
LPVOID AllocMem(DWORD size);
VOID FreeMem(LPVOID pointer);
VOID ReportMem();
#define AutoAlloc(type) \
(type*) MemAlloc(sizeof(type));
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -