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 27 #define VALID_IRQS {5} 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 // CORRECT? 54 #define SB_DSP_READY 0xaa 58 #define SB_SET_OUTPUT_RATE 0x41 // DSP v4.xx only 59 #define SB_SET_INPUT_RATE 0x42 // DSP v4.xx only 60 #define SB_SET_BLOCK_SIZE 0x48 // DSP v2.00 + 61 #define SB_ENABLE_SPEAKER 0xd1 62 #define SB_DISABLE_SPEAKER 0xd3 63 #define SB_GET_SPEAKER_STATUS 0xd8 // DSP v2.00 + 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)
BOOLEAN EnableSpeaker(PSOUND_BLASTER_PARAMETERS SBDevice)
BOOLEAN WaitToSend(ULONG BasePort)
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
BOOLEAN IsSpeakerEnabled(ULONG BasePort)
struct _DEVICE_EXTENSION * PDEVICE_EXTENSION
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG _Out_opt_ PULONG _Out_opt_ PULONG ValueType
BOOLEAN CreateDMA(PDEVICE_OBJECT DeviceObject)
BOOLEAN WaitToReceive(ULONG BasePort)
_In_ PDEVICE_OBJECT DeviceObject
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
PDRIVER_OBJECT DriverObject
VOID BeginPlayback(ULONG BasePort, ULONG BitDepth, ULONG Channels, ULONG BlockSize)
_In_ PCWSTR _Inout_ _At_ QueryTable EntryContext
NTSTATUS NTAPI LoadSettings(IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext)
REGISTRY_CALLBACK_ROUTINE * PREGISTRY_CALLBACK_ROUTINE
PDRIVER_OBJECT DriverObject
NTSTATUS NTAPI EnumDeviceKeys(IN PUNICODE_STRING RegistryPath, IN PWSTR SubKey, IN PREGISTRY_CALLBACK_ROUTINE Callback, IN PVOID Context)
REGISTRY_CALLBACK_ROUTINE * PREGISTRY_CALLBACK_ROUTINE
_In_ GUID _In_ PVOID ValueData
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
struct _DEVICE_EXTENSION DEVICE_EXTENSION
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
struct _DEVICE_INSTANCE * PDEVICE_INSTANCE
USHORT InitSoundCard(ULONG BasePort)
NTAPI NTSTATUS REGISTRY_CALLBACK_ROUTINE(PDRIVER_OBJECT DriverObject, PWSTR RegistryPath)
BOOLEAN SetOutputSampleRate(PSOUND_BLASTER_PARAMETERS SBDevice, ULONG SampleRate)
struct _DEVICE_INSTANCE DEVICE_INSTANCE
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG ValueLength