19#define DEFAULT_PORT 0x220
22#define DEFAULT_BUFSIZE 0x4000
23#define DEFAULT_SAMPLERATE 11025
24#define DEFAULT_BITDEPTH 8
25#define DEFAULT_CHANNELS 1
29#define MIN_BUFSIZE 0x1000
30#define MAX_BUFSIZE 0x4000
32#define DEVICE_SUBKEY L"Devices"
33#define PARMS_SUBKEY L"Parameters"
35#define REGISTRY_PORT L"Port"
38#define SB_PORT DEFAULT_PORT
39#define SB_IRQ DEFAULT_IRQ
40#define SB_DMA DEFAULT_DMA
41#define SB_BUFSIZE DEFAULT_BUFSIZE
43#define SB_TIMEOUT 1000000
45#define IOCTL_SOUND_BASE FILE_DEVICE_SOUND
46#define IOCTL_WAVE_BASE 0x0000
54#define SB_DSP_READY 0xaa
58#define SB_SET_OUTPUT_RATE 0x41
59#define SB_SET_INPUT_RATE 0x42
60#define SB_SET_BLOCK_SIZE 0x48
61#define SB_ENABLE_SPEAKER 0xd1
62#define SB_DISABLE_SPEAKER 0xd3
63#define SB_GET_SPEAKER_STATUS 0xd8
64#define SB_GET_DSP_VERSION 0xe1
69#define SB_WRITE_RESET(bp, x) WRITE_PORT_UCHAR((PUCHAR) bp+0x6, x)
70#define SB_READ_DATA(bp) READ_PORT_UCHAR((PUCHAR) bp+0xa)
71#define SB_WRITE_DATA(bp, x) WRITE_PORT_UCHAR((PUCHAR) bp+0xc, x)
72#define SB_READ_WRITESTATUS(bp) READ_PORT_UCHAR((PUCHAR) bp+0xc)
73#define SB_READ_READSTATUS(bp) READ_PORT_UCHAR((PUCHAR) bp+0xe)
77#define SB_READY_TO_SEND(bp) \
78 SB_READ_WRITESTATUS(bp) & 0x80
80#define SB_READY_TO_RECEIVE(bp) \
81 SB_READ_READSTATUS(bp) & 0x80
84#define SB_WRITE_BYTE(bp, x) \
85 if (WaitToSend(bp)) SB_WRITE_DATA(bp, x)
_In_ GUID _In_ PVOID ValueData
REGISTRY_CALLBACK_ROUTINE * PREGISTRY_CALLBACK_ROUTINE
_In_ PCWSTR _Inout_ _At_ QueryTable EntryContext
NTAPI NTSTATUS REGISTRY_CALLBACK_ROUTINE(PDRIVER_OBJECT DriverObject, PWSTR RegistryPath)
BOOLEAN SetOutputSampleRate(PSOUND_BLASTER_PARAMETERS SBDevice, ULONG SampleRate)
BOOLEAN EnableSpeaker(PSOUND_BLASTER_PARAMETERS SBDevice)
REGISTRY_CALLBACK_ROUTINE * PREGISTRY_CALLBACK_ROUTINE
VOID BeginPlayback(ULONG BasePort, ULONG BitDepth, ULONG Channels, ULONG BlockSize)
BOOLEAN WaitToReceive(ULONG BasePort)
NTSTATUS NTAPI EnumDeviceKeys(IN PUNICODE_STRING RegistryPath, IN PWSTR SubKey, IN PREGISTRY_CALLBACK_ROUTINE Callback, IN PVOID Context)
struct _DEVICE_EXTENSION DEVICE_EXTENSION
BOOLEAN WaitToSend(ULONG BasePort)
BOOLEAN CreateDMA(PDEVICE_OBJECT DeviceObject)
struct _DEVICE_EXTENSION * PDEVICE_EXTENSION
struct _DEVICE_INSTANCE * PDEVICE_INSTANCE
BOOLEAN IsSpeakerEnabled(ULONG BasePort)
struct _DEVICE_INSTANCE DEVICE_INSTANCE
USHORT InitSoundCard(ULONG BasePort)
PDRIVER_OBJECT DriverObject
PDRIVER_OBJECT DriverObject
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG _Out_opt_ PULONG _Out_opt_ PULONG ValueType
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG ValueLength