⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 esddrv.h

📁 Windows NT声卡驱动VXD
💻 H
字号:

/****************************************************************************
 *
 *   esddrv.h
 *
 *   Multimedia kernel driver support component (esddrv)
 *
 *   Copyright (c) 1991 Microsoft Corporation.  All Rights Reserved.
 *
 *   Local declarations :
 *
 *   -- Debug
 *   -- Device types
 *   -- Routine prototypes
 *
 *   History
 *      01-Feb-1992 - Robin Speed (RobinSp) wrote it
 *
 ***************************************************************************/

/****************************************************************************

 General includes

 ***************************************************************************/

#define UNICODE
#ifndef RC_INVOKED

#include <string.h>
#include <stdio.h>

#endif /* RC_INVOKED */

#include <windows.h>
#include <mmsystem.h>
#include <devioctl.h>

#include <mmddk.h>

#if DBG
    #define STATIC
#else
    #define STATIC
#endif


/***************************************************************************

    DEBUGGING SUPPORT

 ***************************************************************************/


#if DBG

    #define DEBUG_RETAIL

    extern int esddrvDebugLevel;
    extern void esddrvDbgOut(LPSTR lpszFormat, ...);
    extern void dDbgAssert(LPSTR exp, LPSTR file, int line);

    DWORD __dwEval;

    #define dprintf( _x_ )                            esddrvDbgOut _x_
    #define dprintf1( _x_ ) if (esddrvDebugLevel >= 1) esddrvDbgOut _x_
    #define dprintf2( _x_ ) if (esddrvDebugLevel >= 2) esddrvDbgOut _x_
    #define dprintf3( _x_ ) if (esddrvDebugLevel >= 3) esddrvDbgOut _x_
    #define dprintf4( _x_ ) if (esddrvDebugLevel >= 4) esddrvDbgOut _x_

    #define WinAssert(exp) \
        ((exp) ? (void)0 : dDbgAssert(#exp, __FILE__, __LINE__))
    #define WinEval(exp) \
        ((__dwEval=(DWORD)(exp)) ? (void)0 : dDbgAssert(#exp, __FILE__, __LINE__), __dwEval)

#else

	#define WinAssert(x) 0
	#define WinEval(exp) exp

    #define dprintf(x)
    #define dprintf1(x)
    #define dprintf2(x)
    #define dprintf3(x)
    #define dprintf4(x)

#endif

/****************************************************************************

 Device Types

 ***************************************************************************/
 enum {
     InvalidDevice,
     WaveInDevice,
     WaveOutDevice,
     MidiInDevice,
     MidiOutDevice,
     AuxDevice
 };

/****************************************************************************

  Our heap

****************************************************************************/

 HANDLE hHeap;

/****************************************************************************

  Our serialization

****************************************************************************/

 CRITICAL_SECTION esdDrvCritSec;  // Serialize access to device lists

/****************************************************************************

 Local routines

 ***************************************************************************/

DWORD    sndTranslateStatus(void);
MMRESULT sndOpenDev(UINT DeviceType, DWORD dwId,
                    PHANDLE phDev, DWORD Access);
DWORD    sndGetNumDevs(UINT DeviceType);
MMRESULT sndSetData(UINT DeviceType, UINT DeviceId, UINT Length, PBYTE Data,
                    ULONG Ioctl);
MMRESULT sndGetData(UINT DeviceType, UINT DeviceId, UINT Length, PBYTE Data,
                    ULONG Ioctl);

MMRESULT sndGetHandleData(HANDLE     hDev,
                          DWORD      dwSize,
                          PVOID      pData,
                          ULONG      Ioctl,
                          HANDLE     hEvent);

MMRESULT sndSetHandleData(HANDLE     hDev,
                          DWORD      dwSize,
                          PVOID      pData,
                          ULONG      Ioctl,
                          HANDLE     hEvent);

VOID     TerminateWave(VOID);
VOID     TerminateMidi(VOID);

/****************************************************************************

  Our local driver procs

****************************************************************************/

DWORD APIENTRY widMessage(DWORD, DWORD, DWORD, DWORD, DWORD);
DWORD APIENTRY wodMessage(DWORD, DWORD, DWORD, DWORD, DWORD);
DWORD APIENTRY midMessage(DWORD, DWORD, DWORD, DWORD, DWORD);
DWORD APIENTRY modMessage(DWORD, DWORD, DWORD, DWORD, DWORD);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -