亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wavemain.cpp

?? windows CE 的BSP開發包.包含眾多的驅動程序和OAL層的開發代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// -----------------------------------------------------------------------------
//
//      THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
//      ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
//      THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
//      PARTICULAR PURPOSE.
//      Copyright (c) 1995-2000 Microsoft Corporation.  All rights reserved.
//
// -----------------------------------------------------------------------------
#include "wavemain.h"
/*
#ifdef DEBUG
DBGPARAM dpCurSettings = {
    TEXT("WaveDriver"), {
         TEXT("Test")           //  0
        ,TEXT("Params")         //  1
        ,TEXT("Verbose")        //  2
        ,TEXT("Interrupt")      //  3
        ,TEXT("WODM")           //  4
        ,TEXT("WIDM")           //  5
        ,TEXT("PDD")            //  6
        ,TEXT("MDD")            //  7
        ,TEXT("Regs")           //  8
        ,TEXT("Misc")           //  9
        ,TEXT("Init")           // 10
        ,TEXT("IOcontrol")      // 11
        ,TEXT("Alloc")          // 12
        ,TEXT("Function")       // 13
        ,TEXT("Warning")        // 14
        ,TEXT("Error")          // 15
    }
    ,
        (1 << 15)   // Errors
    |   (1 << 14)   // Warnings
};
#endif
*/
BOOL CALLBACK DllMain(HANDLE hDLL,
                      DWORD dwReason,
                      LPVOID lpvReserved)
{
    if ( dwReason==DLL_PROCESS_ATTACH )
    {
        DEBUGREGISTER((HMODULE)hDLL);
    }

    return TRUE;
}


// -----------------------------------------------------------------------------
//
// @doc     WDEV_EXT
//
// @topic   WAV Device Interface | Implements the WAVEDEV.DLL device
//          interface. These functions are required for the device to
//          be loaded by DEVICE.EXE.
//
// @xref                          <nl>
//          <f WAV_Init>,         <nl>
//          <f WAV_Deinit>,       <nl>
//          <f WAV_Open>,         <nl>
//          <f WAV_Close>,        <nl>
//          <f WAV_Read>,         <nl>
//          <f WAV_Write>,        <nl>
//          <f WAV_Seek>,         <nl>
//          <f WAV_PowerUp>,      <nl>
//          <f WAV_PowerDown>,    <nl>
//          <f WAV_IOControl>     <nl>
//
// -----------------------------------------------------------------------------
//
// @doc     WDEV_EXT
//
// @topic   Designing a Waveform Audio Driver |
//          A waveform audio driver is responsible for processing messages
//          from the Wave API Manager (WAVEAPI.DLL) to playback and record
//          waveform audio. Waveform audio drivers are implemented as
//          dynamic link libraries that are loaded by DEVICE.EXE The
//          default waveform audio driver is named WAVEDEV.DLL (see figure).
//          The messages passed to the audio driver are similar to those
//          passed to a user-mode Windows NT audio driver (such as mmdrv.dll).
//
//          <bmp blk1_bmp>
//
//          Like all device drivers loaded by DEVICE.EXE, the waveform
//          audio driver must export the standard device functions,
//          XXX_Init, XXX_Deinit, XXX_IoControl, etc (see
//          <t WAV Device Interface>). The Waveform Audio Drivers
//          have a device prefix of "WAV".
//
//          Driver loading and unloading is handled by DEVICE.EXE and
//          WAVEAPI.DLL. Calls are made to <f WAV_Init> and <f WAV_Deinit>.
//          When the driver is opened by WAVEAPI.DLL calls are made to
//          <f WAV_Open> and <f WAV_Close>.  On system power up and power down
//          calls are made to <f WAV_PowerUp> and <f WAV_PowerDown>. All
//          other communication between WAVEAPI.DLL and WAVEDEV.DLL is
//          done by calls to <f WAV_IOControl>. The other WAV_xxx functions
//          are not used.
//
// @xref                                          <nl>
//          <t Designing a Waveform Audio PDD>    <nl>
//          <t WAV Device Interface>              <nl>
//          <t Wave Input Driver Messages>        <nl>
//          <t Wave Output Driver Messages>       <nl>
//
// -----------------------------------------------------------------------------

// -----------------------------------------------------------------------------
//
//  @doc    WDEV_EXT
//
//  @func   PVOID | WAV_Init | Device initialization routine
//
//  @parm   DWORD | dwInfo | info passed to RegisterDevice
//
//  @rdesc  Returns a DWORD which will be passed to Open & Deinit or NULL if
//          unable to initialize the device.
//
// -----------------------------------------------------------------------------
DWORD WAV_Init(DWORD Index)
{
    return (DWORD)HardwareContext::CreateHWContext(Index);
}

// -----------------------------------------------------------------------------
//
//  @doc    WDEV_EXT
//
//  @func   PVOID | WAV_Deinit | Device deinitialization routine
//
//  @parm   DWORD | dwData | value returned from WAV_Init call
//
//  @rdesc  Returns TRUE for success, FALSE for failure.
//
// -----------------------------------------------------------------------------
BOOL WAV_Deinit(DWORD dwData)
{
    return g_pHWContext->Deinit();
}

// -----------------------------------------------------------------------------
//
//  @doc    WDEV_EXT
//
//  @func   PVOID | WAV_Open    | Device open routine
//
//  @parm   DWORD | dwData      | Value returned from WAV_Init call (ignored)
//
//  @parm   DWORD | dwAccess    | Requested access (combination of GENERIC_READ
//                                and GENERIC_WRITE) (ignored)
//
//  @parm   DWORD | dwShareMode | Requested share mode (combination of
//                                FILE_SHARE_READ and FILE_SHARE_WRITE) (ignored)
//
//  @rdesc  Returns a DWORD which will be passed to Read, Write, etc or NULL if
//          unable to open device.
//
// -----------------------------------------------------------------------------
DWORD WAV_Open( DWORD dwData,
              DWORD dwAccess,
              DWORD dwShareMode)
{
    return 4;
}

// -----------------------------------------------------------------------------
//
//  @doc    WDEV_EXT
//
//  @func   BOOL | WAV_Close | Device close routine
//
//  @parm   DWORD | dwOpenData | Value returned from WAV_Open call
//
//  @rdesc  Returns TRUE for success, FALSE for failure
//
// -----------------------------------------------------------------------------
BOOL WAV_Close(DWORD dwData)
{
    return TRUE;
}

// -----------------------------------------------------------------------------
//
//  @doc    WDEV_EXT
//
//  @func   DWORD | WAV_Read | Device read routine
//
//  @parm   DWORD | dwOpenData | Value returned from WAV_Open call (ignored)
//
//  @parm   LPVOID | pBuf | Buffer to receive data (ignored)
//
//  @parm   DWORD | len | Maximum length to read (ignored)
//
//  @rdesc  Returns 0 always. WAV_Read should never get called and does
//          nothing. Required DEVICE.EXE function, but all data communication
//          is handled by <f WAV_IOControl>.
//
// -----------------------------------------------------------------------------
DWORD WAV_Read(DWORD dwData,
               LPVOID pBuf,
               DWORD Len)
{
    // Return length read
    return 0;
}

// -----------------------------------------------------------------------------
//
//  @doc    WDEV_EXT
//
//  @func   DWORD | WAV_Write | Device write routine
//
//  @parm   DWORD | dwOpenData | Value returned from WAV_Open call (ignored)
//
//  @parm   LPCVOID | pBuf | Buffer containing data (ignored)
//
//  @parm   DWORD | len | Maximum length to write (ignored)
//
//  @rdesc  Returns 0 always. WAV_Write should never get called and does
//          nothing. Required DEVICE.EXE function, but all data communication
//          is handled by <f WAV_IOControl>.
//
// -----------------------------------------------------------------------------
DWORD WAV_Write(DWORD dwData,
                LPCVOID pBuf,
                DWORD Len)
{
    // return number of bytes written (or -1 for error)
    return 0;
}

// -----------------------------------------------------------------------------
//
//  @doc    WDEV_EXT
//
//  @func   DWORD | WAV_Seek | Device seek routine
//
//  @parm   DWORD | dwOpenData | Value returned from WAV_Open call (ignored)
//
//  @parm   long | pos | Position to seek to (relative to type) (ignored)
//
//  @parm   DWORD | type | FILE_BEGIN, FILE_CURRENT, or FILE_END (ignored)
//
//  @rdesc  Returns -1 always. WAV_Seek should never get called and does
//          nothing. Required DEVICE.EXE function, but all data communication
//          is handled by <f WAV_IOControl>.
//
// -----------------------------------------------------------------------------
DWORD WAV_Seek(DWORD dwData,
               long pos,
               DWORD type)
{
    // return an error
    return (DWORD)-1;
}

// -----------------------------------------------------------------------------
//
//  @doc    WDEV_EXT
//
//  @func   void | WAV_PowerUp | Device powerup routine
//
//  @comm   Called to restore device from suspend mode.  Cannot call any
//          routines aside from those in the dll in this call.
//
// -----------------------------------------------------------------------------
VOID WAV_PowerUp(VOID)
{
    g_pHWContext->PowerUp();
    return;
}

// -----------------------------------------------------------------------------
//
//  @doc    WDEV_EXT
//
//  @func   void | WAV_PowerDown | Device powerdown routine
//
//  @comm   Called to suspend device.  Cannot call any routines aside from
//          those in the dll in this call.
//
// -----------------------------------------------------------------------------
VOID WAV_PowerDown(VOID)
{
    g_pHWContext->PowerDown();
    return;
}

BOOL HandleWaveMessage(PMMDRV_MESSAGE_PARAMS pParams, DWORD *pdwResult)
{
    //  set the error code to be no error first
    SetLastError(MMSYSERR_NOERROR);

    UINT uMsg = pParams->uMsg;
    UINT uDeviceId = pParams->uDeviceId;
    DWORD dwParam1 = pParams->dwParam1;
    DWORD dwParam2 = pParams->dwParam2;
    DWORD dwUser   = pParams->dwUser;
    StreamContext *pStreamContext = (StreamContext *)dwUser;

    DWORD dwRet;

    g_pHWContext->Lock();
    switch (uMsg)
    {
    case WODM_GETNUMDEVS:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜av影视| 日韩女优电影在线观看| 美女一区二区久久| 欧美唯美清纯偷拍| 国产精品国产三级国产有无不卡| 麻豆国产一区二区| 欧美一区二区三区视频在线观看| 一级日本不卡的影视| 色婷婷综合久色| 亚洲人成网站影音先锋播放| 懂色av噜噜一区二区三区av| 国产视频视频一区| 日韩电影免费在线看| 日韩精品专区在线影院观看| 久久综合99re88久久爱| 美女在线视频一区| 亚洲国产一区二区三区 | 成人综合婷婷国产精品久久 | 丝袜国产日韩另类美女| 欧美日韩高清在线播放| 中文字幕免费不卡在线| 成人精品国产福利| 夜夜嗨av一区二区三区| 欧美精品第一页| 久久超碰97中文字幕| 久久久噜噜噜久久人人看| 免费观看在线综合| 国产精品成人一区二区三区夜夜夜 | 国产农村妇女毛片精品久久麻豆| 亚洲黄色小视频| 欧美aaa在线| 亚洲精品在线观看网站| 丝袜国产日韩另类美女| 亚洲五码中文字幕| 91麻豆精品在线观看| 一区二区三区免费| 日韩天堂在线观看| 91麻豆精品在线观看| 久久99精品久久久| 亚洲综合色视频| 国产欧美中文在线| 日韩一级片网站| 一本大道av伊人久久综合| 麻豆视频观看网址久久| 亚洲精品成a人| 中文字幕不卡三区| 日韩三级伦理片妻子的秘密按摩| 91蝌蚪国产九色| 91精品国产综合久久久蜜臀粉嫩| 丝袜美腿亚洲一区二区图片| 天堂影院一区二区| 久久久久9999亚洲精品| 日韩精品一区二区三区视频播放| 在线精品视频小说1| 亚洲欧洲国产日韩| 日韩精品一区二区三区视频在线观看 | 麻豆精品在线观看| 亚洲综合一二区| 中文字幕一区二区三区不卡在线| 精品久久五月天| 欧美精品777| 在线免费不卡电影| 色综合av在线| thepron国产精品| 国产91露脸合集magnet | 国产激情一区二区三区四区| 国产欧美精品在线观看| 精品日韩av一区二区| 久久久久久久久久久99999| 成人免费视频一区| 亚洲一二三四区| 色婷婷综合久久久久中文| 国产亚洲欧美日韩日本| 欧美精品一区视频| 日韩免费观看2025年上映的电影| 欧美浪妇xxxx高跟鞋交| 欧美性色综合网| 色婷婷av一区二区三区软件| 91美女在线观看| 91玉足脚交白嫩脚丫在线播放| 成人福利视频在线看| 成人av电影在线观看| 成人做爰69片免费看网站| 岛国精品在线播放| 91视视频在线观看入口直接观看www | 国产精品入口麻豆九色| 成人欧美一区二区三区| 一区二区三区在线播放| 欧美日韩在线综合| 欧美精品丝袜中出| 国产在线播放一区二区三区| 亚洲欧美日韩国产中文在线| 精品欧美乱码久久久久久| 日韩美一区二区三区| 亚洲精品一区二区三区在线观看 | 国产在线播放一区三区四| 国产盗摄视频一区二区三区| 成人精品视频.| 色综合激情五月| 6080国产精品一区二区| 日韩欧美中文字幕精品| 久久久99久久| 亚洲老妇xxxxxx| 欧美a级一区二区| 成人永久看片免费视频天堂| 色噜噜狠狠色综合欧洲selulu| 在线观看不卡视频| 欧美成人乱码一区二区三区| 亚洲国产精品传媒在线观看| 国产一区二区三区免费观看| 成人综合婷婷国产精品久久蜜臀 | 国内不卡的二区三区中文字幕| 久久久久久久久99精品| 亚洲va在线va天堂| 欧美精品第一页| 亚洲香蕉伊在人在线观| 精品一区免费av| aa级大片欧美| 日韩一区二区三免费高清| 国产精品嫩草影院com| 亚洲.国产.中文慕字在线| 国产精品自拍毛片| 欧美撒尿777hd撒尿| 欧美精品一区二区在线观看| 亚洲精品国产精华液| 久久99久久久久| 欧美在线观看视频一区二区三区| 精品精品国产高清一毛片一天堂| 国产精品国产自产拍高清av| 视频一区二区中文字幕| 国产成人在线网站| 91麻豆精品国产综合久久久久久 | 国产区在线观看成人精品| 丝袜国产日韩另类美女| 狠狠久久亚洲欧美| 成人av在线网站| 日韩一级高清毛片| 不卡大黄网站免费看| 6080日韩午夜伦伦午夜伦| 欧美一区二区日韩| 亚洲天堂网中文字| 国产一区欧美日韩| 91精品午夜视频| 亚洲欧美日韩国产综合在线| 国产成人综合精品三级| 日韩欧美视频一区| 五月激情丁香一区二区三区| 97se狠狠狠综合亚洲狠狠| 精品国产一区二区三区久久影院 | 欧美va亚洲va| 亚洲成在人线免费| 一本一道综合狠狠老| 国产精品美女久久久久av爽李琼| 久久se精品一区精品二区| 欧美日韩一本到| 一区二区三区成人| 色综合久久天天综合网| 欧美高清在线视频| 亚洲一区二三区| 国产精品每日更新在线播放网址| 91精品1区2区| 欧美肥妇bbw| 亚洲第一会所有码转帖| 色婷婷亚洲精品| 一区二区三区在线免费播放| 99这里只有精品| 国产精品美女久久久久aⅴ| 国产成人av网站| 国产精品日韩精品欧美在线| 国产东北露脸精品视频| 欧美国产精品一区二区| 波波电影院一区二区三区| 国产精品拍天天在线| 懂色av一区二区三区免费观看 | 久久五月婷婷丁香社区| 狠狠色综合色综合网络| 精品国产一区二区三区av性色 | 日韩精品每日更新| 日韩女优av电影| 国产精品一级片| 国产精品理论片在线观看| 一道本成人在线| 婷婷丁香久久五月婷婷| 日韩一区二区免费在线观看| 久久99国产精品免费| 欧美高清一级片在线观看| 色综合久久中文字幕| 午夜激情久久久| 日韩视频免费直播| 成人精品免费网站| 一区二区三区在线观看国产| 69堂精品视频| 国产剧情一区二区| 亚洲免费观看视频| 日韩免费电影网站| 99久久综合狠狠综合久久| 午夜久久电影网| 日韩一区二区三区观看| 亚洲天堂2014| 一区二区免费在线|