windows-nt/Source/XPSP1/NT/base/mvdm/vdd/vsndblst/vsb.h
2020-09-26 16:20:57 +08:00

103 lines
3.4 KiB
C

/***************************************************************************
*
* vsb.h
*
* Copyright (c) 1991-1996 Microsoft Corporation. All Rights Reserved.
*
* This code provides VDD support for SB 2.0 sound output, specifically:
* DSP 2.01+ (excluding SB-MIDI port)
* Mixer Chip CT1335 (not strictly part of SB 2.0, but apps seem to like it)
* FM Chip OPL2 (a.k.a. Adlib)
*
***************************************************************************/
/*****************************************************************************
*
* #defines
*
*****************************************************************************/
#define VSBD_PATH TEXT("System\\CurrentControlSet\\Control\\VirtualDeviceDrivers\\SoundBlaster")
#define LOOKAHEAD_VALUE TEXT("LookAhead")
/*
* Hardware and version information
* In DOS terms: SET BLASTER=A220 I5 D1 T3
*/
#define SB_VERSION 0x201 // SB 2.0 (DSP 2.01+)
#define SB_INTERRUPT 0x05 // Interrupt 5
#define SB_DMA_CHANNEL 0x01 // DMA Channel 1
#define NO_DEVICE_FOUND 0xFFFF // returned if no device found
/*****************************************************************************
*
* Function Prototypes
*
*****************************************************************************/
/*
* General function prototypes
*/
void VddDbgOut(LPSTR lpszFormat, ...);
BOOL WINAPI DllEntryPoint(HINSTANCE hInstance, DWORD reason, LPVOID reserved);
BOOL InstallIoHook(HINSTANCE hInstance);
void DeInstallIoHook(HINSTANCE hInstance);
VOID VsbByteIn(WORD port, BYTE * data);
VOID VsbByteOut(WORD port, BYTE data);
VOID ResetAll(VOID);
/*****************************************************************************
*
* Globals
*
*****************************************************************************/
//
// Definitions for MM api entry points. The functions will be linked
// dynamically to avoid bringing winmm.dll in before wow32.
//
typedef MMRESULT (WINAPI* SETVOLUMEPROC)(HWAVEOUT, DWORD);
typedef UINT (WINAPI* GETNUMDEVSPROC)(VOID);
typedef MMRESULT (WINAPI* GETDEVCAPSPROC)(UINT, LPWAVEOUTCAPSW, UINT);
typedef MMRESULT (WINAPI* OPENPROC)(LPHWAVEOUT, UINT, LPCWAVEFORMATEX, DWORD, DWORD, DWORD);
typedef MMRESULT (WINAPI* RESETPROC)(HWAVEOUT);
typedef MMRESULT (WINAPI* CLOSEPROC)(HWAVEOUT);
typedef MMRESULT (WINAPI* GETPOSITIONPROC)(HWAVEOUT, LPMMTIME, UINT);
typedef MMRESULT (WINAPI* WRITEPROC)(HWAVEOUT, LPWAVEHDR, UINT);
typedef MMRESULT (WINAPI* PREPAREHEADERPROC)(HWAVEOUT, LPWAVEHDR, UINT);
typedef MMRESULT (WINAPI* UNPREPAREHEADERPROC)(HWAVEOUT, LPWAVEHDR, UINT);
/*****************************************************************************
*
* Debugging
* Levels:
* 1 - errors only
* 2 - significant events
* 3 - regular events
* 4 - heaps o' information
*
*****************************************************************************/
#if DBG
extern int VddDebugLevel;
#define dprintf( _x_ ) VddDbgOut _x_
#define dprintf1( _x_ ) if (VddDebugLevel >= 1) VddDbgOut _x_
#define dprintf2( _x_ ) if (VddDebugLevel >= 2) VddDbgOut _x_
#define dprintf3( _x_ ) if (VddDebugLevel >= 3) VddDbgOut _x_
#define dprintf4( _x_ ) if (VddDebugLevel >= 4) VddDbgOut _x_
#else
#define dprintf(x)
#define dprintf1(x)
#define dprintf2(x)
#define dprintf3(x)
#define dprintf4(x)
#endif // DBG