6 #define SB_WAVE_IN_DEVICE_NAME L"\\Device\\SBWaveIn"
7 #define SB_WAVE_OUT_DEVICE_NAME L"\\Device\\SBWaveOut"
9 #define SB_AUX_DEVICE_NAME L"\\Device\\SBAux"
10 #define SB_MIXER_DEVICE_NAME L"\\Device\\SBMixer"
12 #define DEFAULT_PORT 0x220
15 #define DEFAULT_BUFFER_SIZE 65535
17 #define SB_TIMEOUT 1000000
19 #define SB_DSP_READY 0xaa
35 SB_READ_DATA_PORT
= 0x0a,
36 SB_WRITE_DATA_PORT
= 0x0c,
37 SB_WRITE_STATUS_PORT
= 0x0c,
38 SB_READ_STATUS_PORT
= 0x0e
43 SbAutoInitDmaOutput
= 0x1c,
44 SbAutoInitDmaInput
= 0x2c,
45 SbSetOutputRate
= 0x41, /* DSP v4.xx */
46 SbSetInputRate
= 0x42, /* DSP v4.xx */
47 SbSetBlockSize
= 0x48, /* DSP v2.00 + */
49 SbPauseDmaOutput
= 0xd0,
50 SbEnableSpeaker
= 0xd1,
51 SbDisableSpeaker
= 0xd3,
52 SbGetSpeakerStatus
= 0xd8, /* DSP v2.00 + */
53 SbGetDspVersion
= 0xe1
56 typedef struct _SOUND_BLASTER_PARAMETERS
58 PDRIVER_OBJECT driver
;
60 PKINTERRUPT interrupt
;
66 } SOUND_BLASTER_PARAMETERS
, *PSOUND_BLASTER_PARAMETERS
;
69 typedef NTAPI NTSTATUS
REGISTRY_CALLBACK_ROUTINE(PDRIVER_OBJECT DriverObject
, PWSTR RegistryPath
);
70 typedef REGISTRY_CALLBACK_ROUTINE
*PREGISTRY_CALLBACK_ROUTINE
;
77 #define SbWrite(sbdevice, subport, data) \
78 WRITE_PORT_UCHAR((PUCHAR) sbdevice->port + subport, data)
80 #define SbRead(sbdevice, subport) \
81 READ_PORT_UCHAR((PUCHAR) sbdevice->port + subport)
83 #define SbWriteReset(sbdevice, data) \
84 SbWrite(sbdevice, SB_RESET_PORT, data)
86 #define SbWriteDataWithoutWait(sbdevice, data) \
87 SbWrite(sbdevice, SB_WRITE_DATA_PORT, data)
89 #define SbReadDataWithoutWait(sbdevice) \
90 SbRead(sbdevice, SB_READ_DATA_PORT)
93 #define SbGetWriteStatus(sbdevice) \
94 SbRead(sbdevice, SB_WRITE_STATUS_PORT)
96 #define SbGetReadStatus(sbdevice) \
97 SbRead(sbdevice, SB_READ_STATUS_PORT)
103 PSOUND_BLASTER_PARAMETERS SBDevice
,
106 #define WaitToWrite(sbdevice) \
107 WaitForReady(sbdevice, SB_WRITE_STATUS_PORT)
109 #define WaitToRead(sbdevice) \
110 WaitForReady(sbdevice, SB_READ_STATUS_PORT)
114 PSOUND_BLASTER_PARAMETERS SBDevice
);
117 GetSoundBlasterModel(
118 PSOUND_BLASTER_PARAMETERS SBDevice
);
121 IsSampleRateCompatible(
122 PSOUND_BLASTER_PARAMETERS SBDevice
,
127 PSOUND_BLASTER_PARAMETERS SBDevice
,
132 PSOUND_BLASTER_PARAMETERS SBDevice
);
136 PSOUND_BLASTER_PARAMETERS SBDevice
);
140 PSOUND_BLASTER_PARAMETERS SBDevice
,
152 PDEVICE_OBJECT DeviceObject
);