亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日本在线不卡一区| 亚洲免费在线播放| www.亚洲人| 蜜臀av性久久久久蜜臀av麻豆| 国产欧美综合在线| 欧美大片一区二区| 欧美性色欧美a在线播放| 国产精品一二三在| 免费成人性网站| 国产精品毛片大码女人| 色综合天天综合网天天看片| 成人性生交大片免费看视频在线| 日韩主播视频在线| 石原莉奈在线亚洲三区| 一区二区三区四区不卡视频| 国产精品私房写真福利视频| 久久精品无码一区二区三区| 亚洲精品一区在线观看| 久久久亚洲高清| 中文一区二区完整视频在线观看| 久久影视一区二区| 欧美国产视频在线| 国产精品色哟哟| 一区二区三区中文字幕电影| 亚洲专区一二三| 午夜精品久久久久| 精品在线观看视频| 粉嫩在线一区二区三区视频| 成人av动漫在线| 色妹子一区二区| 日韩手机在线导航| 久久九九99视频| 国产乱理伦片在线观看夜一区| 亚洲成在线观看| 麻豆精品在线观看| 成人激情免费网站| 欧洲一区在线电影| 久久这里只精品最新地址| 中文子幕无线码一区tr| 午夜影视日本亚洲欧洲精品| 久久国内精品视频| 99精品国产热久久91蜜凸| 欧美日韩免费在线视频| 国产色产综合色产在线视频| 18欧美乱大交hd1984| 日韩电影一区二区三区四区| 不卡一区二区在线| 日韩欧美一级二级| 一区二区三区精品| 成人一区二区三区视频| 日韩美女一区二区三区| 国产精品美日韩| 国产成人精品在线看| 日韩天堂在线观看| 午夜精品久久久| 色综合天天视频在线观看| 国产精品丝袜一区| 国产露脸91国语对白| 日韩欧美激情一区| 人禽交欧美网站| 欧美疯狂性受xxxxx喷水图片| 亚洲欧洲成人自拍| 91小视频在线| 国产精品国产三级国产a| 在线观看av不卡| 亚洲欧美一区二区三区国产精品 | 亚洲欧美一区二区三区孕妇| 国产高清无密码一区二区三区| 欧美tickle裸体挠脚心vk| 日韩国产一二三区| 在线视频一区二区三| 亚洲精品伦理在线| 在线视频国内一区二区| 亚洲精品国产高清久久伦理二区 | 激情丁香综合五月| 日韩亚洲欧美综合| 久久爱www久久做| 久久日韩精品一区二区五区| 国产经典欧美精品| 亚洲欧洲国产日本综合| 欧美色成人综合| 国产精品一区一区三区| 国产精品久久一卡二卡| 色综合久久88色综合天天免费| 一区二区欧美精品| 日韩西西人体444www| 成熟亚洲日本毛茸茸凸凹| 日韩美女久久久| 日韩欧美一级特黄在线播放| 东方aⅴ免费观看久久av| 亚洲乱码国产乱码精品精的特点 | 亚洲日本在线a| 欧美一区在线视频| 国产91富婆露脸刺激对白| 亚洲成a人v欧美综合天堂下载| 国产色综合一区| 日韩视频永久免费| 色婷婷亚洲综合| 国产精品一区二区视频| 久久99精品国产麻豆不卡| 国产夜色精品一区二区av| 欧美主播一区二区三区| 国产成人免费在线观看不卡| 亚洲国产成人av| 亚洲蜜臀av乱码久久精品| 久久蜜桃av一区精品变态类天堂| 欧美一区二区观看视频| 石原莉奈一区二区三区在线观看| 色噜噜狠狠成人中文综合| 国产精品66部| 国产伦精品一区二区三区免费迷 | 欧美日韩国产精选| 欧美亚洲一区二区在线观看| 99国产一区二区三精品乱码| 粉嫩久久99精品久久久久久夜| 经典三级在线一区| 极品少妇一区二区三区精品视频| 日韩和的一区二区| 亚洲乱码中文字幕| 亚洲精品视频自拍| 亚洲精品国产a| 亚洲大片免费看| 日韩av中文在线观看| 奇米精品一区二区三区在线观看| 久久精品理论片| 精品一区二区三区久久| 久久99久久99| 成人免费看片app下载| 91麻豆6部合集magnet| 精品99久久久久久| 国产亚洲欧美日韩日本| 亚洲欧洲成人自拍| 日本欧美一区二区在线观看| 精东粉嫩av免费一区二区三区| 国产精品资源站在线| 日本乱码高清不卡字幕| 欧美一区二区黄| 国产精品久久久久久久久动漫| 亚洲综合一区二区| 国产一区二区三区精品欧美日韩一区二区三区 | 日本伊人午夜精品| 国产成人精品亚洲日本在线桃色 | 一区二区成人在线| 老司机精品视频在线| 99精品国产热久久91蜜凸| 欧美一级片在线看| 亚洲精选在线视频| 成人国产一区二区三区精品| 欧美一区二区三区啪啪| 中文字幕中文字幕一区二区| 蜜桃久久av一区| 欧美午夜一区二区三区免费大片| 国产视频一区二区在线观看| 美女网站一区二区| 欧美日韩亚洲国产综合| 中文字幕一区在线观看视频| 国产在线精品视频| 日韩欧美中文字幕一区| 亚洲一区二区三区四区五区中文 | 成人免费一区二区三区在线观看| 狠狠狠色丁香婷婷综合激情| 7777精品伊人久久久大香线蕉超级流畅 | www.在线欧美| 日韩一级黄色大片| 亚洲国产精品久久一线不卡| 国产激情91久久精品导航 | 欧美吻胸吃奶大尺度电影 | 色综合久久久久网| 亚洲欧洲一区二区在线播放| 国产精品一二三在| 国产色产综合产在线视频| 国产精品538一区二区在线| 国产香蕉久久精品综合网| 韩国女主播一区| 久久先锋影音av| 精品综合免费视频观看| 日韩亚洲欧美成人一区| 黑人精品欧美一区二区蜜桃| 久久综合精品国产一区二区三区| 国产一区二区三区美女| 国产精品婷婷午夜在线观看| 99久久久国产精品| 亚洲国产精品久久人人爱蜜臀| 欧美精品久久一区二区三区| 老司机午夜精品| 一区免费观看视频| 欧美精品高清视频| 高清不卡一二三区| 亚洲精品久久7777| 欧美一级理论片| 99re这里只有精品首页| 日韩精品一级中文字幕精品视频免费观看 | 91久久国产最好的精华液| 日韩国产在线观看| 国产日韩欧美a| 精品日韩欧美一区二区| 国产成人午夜精品影院观看视频 | 中文字幕一区二区三区在线播放| 欧洲激情一区二区| 国产成人av影院|