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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? wavemain.cpp

?? SMDK2440 s3c2440 WINCE 5.00 bsp 編譯通過
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
// -----------------------------------------------------------------------------
//
//      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.
//
// -----------------------------------------------------------------------------
#include "wavemain.h"

BOOL CALLBACK DllMain(HANDLE hDLL,
                      DWORD dwReason,
                      LPVOID lpvReserved)
{
    switch (dwReason) {
        case DLL_PROCESS_ATTACH :
            DEBUGREGISTER((HINSTANCE)hDLL);
            DisableThreadLibraryCalls((HMODULE) hDLL);
            break;

        case DLL_PROCESS_DETACH :
            break;

        case DLL_THREAD_DETACH :
            break;

        case DLL_THREAD_ATTACH :
            break;

        default :
            break;
    }
    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.
//
// -----------------------------------------------------------------------------
extern "C" 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.
//
// -----------------------------------------------------------------------------
extern "C" 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.
//
// -----------------------------------------------------------------------------
extern "C" PDWORD WAV_Open( DWORD dwData,
              DWORD dwAccess,
              DWORD dwShareMode)
{
    // allocate and return handle context to efficiently verify caller trust level
    return new DWORD(NULL); // assume untrusted. Can't tell for sure until WAV_IoControl
}

// -----------------------------------------------------------------------------
//
//  @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
//
// -----------------------------------------------------------------------------
extern "C" BOOL WAV_Close(PDWORD pdwData)
{
    // we trust the device manager to give us a valid context to free.
    delete pdwData;
    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>.
//
// -----------------------------------------------------------------------------
extern "C" 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>.
//
// -----------------------------------------------------------------------------
extern "C" 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>.
//
// -----------------------------------------------------------------------------
extern "C" 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.
//
// -----------------------------------------------------------------------------
extern "C" 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.
//
// -----------------------------------------------------------------------------
extern "C" 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:
        {

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费一级欧美片在线观看| 欧美日韩一卡二卡三卡| 成人aa视频在线观看| 不卡欧美aaaaa| 色屁屁一区二区| 欧美日本不卡视频| 精品国产成人在线影院| 在线观看日韩一区| 欧美日本一道本在线视频| 欧美www视频| 亚洲欧美国产三级| 看片的网站亚洲| 日本丰满少妇一区二区三区| 欧美一区二区视频在线观看 | 亚洲伦理在线精品| 日本午夜一区二区| 91麻豆.com| 欧美精品一区在线观看| 亚洲男人的天堂av| 国产一区999| 欧美日韩aaa| 自拍偷拍亚洲激情| 国模套图日韩精品一区二区| 色综合久久久久综合| 久久一日本道色综合| 亚洲国产人成综合网站| 成人午夜又粗又硬又大| 欧美一区永久视频免费观看| 欧美激情一区三区| 免费成人小视频| 欧洲一区在线观看| 欧美激情一区二区| 久久国产精品99久久人人澡| 在线视频综合导航| 久久久久97国产精华液好用吗| 亚洲不卡av一区二区三区| 成人激情小说乱人伦| 精品国产露脸精彩对白| 天堂蜜桃91精品| 色系网站成人免费| 国产精品久久免费看| 久久99国产精品久久99果冻传媒| 欧美三级午夜理伦三级中视频| 国产精品久久久久精k8| 国产精品影视在线观看| 欧美一区二区三区视频免费播放 | 国产精品一色哟哟哟| 欧美老肥妇做.爰bbww| 亚洲日本青草视频在线怡红院| 国产夫妻精品视频| 精品国产一区二区三区久久久蜜月| 日韩欧美激情在线| 欧美日韩亚洲不卡| 91免费在线看| 国产精品天美传媒| 国产老女人精品毛片久久| 欧美电影免费观看高清完整版 | 91丨porny丨最新| 午夜精品免费在线| 91麻豆自制传媒国产之光| 中文无字幕一区二区三区 | 精品福利一区二区三区| 五月婷婷久久综合| 欧美另类z0zxhd电影| 亚洲美女屁股眼交3| 97久久精品人人做人人爽| 欧美国产激情二区三区| 丁香婷婷综合色啪| 国产精品区一区二区三区| 国产成人精品一区二| 久久婷婷国产综合国色天香| 国产呦精品一区二区三区网站| 精品国产乱子伦一区| 精品综合久久久久久8888| 久久这里只有精品6| 国内精品久久久久影院色| 26uuu精品一区二区在线观看| 麻豆91精品91久久久的内涵| 日韩一区二区三区在线| 日韩经典中文字幕一区| 欧美一区二区三级| 黄色精品一二区| 久久精品日韩一区二区三区| 国产a久久麻豆| 亚洲丝袜制服诱惑| 欧美日韩在线直播| 蜜桃视频在线观看一区| 精品国产乱码久久久久久久久 | 日韩一卡二卡三卡| 加勒比av一区二区| 中文字幕欧美区| 9久草视频在线视频精品| 亚洲黄色性网站| 欧美日韩国产经典色站一区二区三区| 亚洲无人区一区| 日韩一区和二区| 福利一区福利二区| 亚洲欧美一区二区三区孕妇| 欧美日韩精品一区二区三区四区| 日本在线不卡视频一二三区| 欧美r级电影在线观看| 国产成人免费视频网站高清观看视频| 国产精品看片你懂得| 在线精品视频一区二区| 欧美aaaaa成人免费观看视频| 久久久久久久久久久99999| 99视频精品免费视频| 婷婷中文字幕一区三区| 久久久久久一级片| 91亚洲国产成人精品一区二三| 午夜精品福利一区二区蜜股av| 精品福利av导航| 色综合激情久久| 麻豆精品国产91久久久久久| 国产精品国产精品国产专区不片| 欧美日韩大陆一区二区| 国产电影精品久久禁18| 亚洲高清久久久| 欧美国产激情二区三区| 5566中文字幕一区二区电影| 国产成人av一区二区| 午夜精品久久久久久久久久| 日韩在线卡一卡二| 国产欧美日韩精品a在线观看| 91黄色免费版| 国产suv一区二区三区88区| 亚洲韩国精品一区| 国产日韩欧美精品一区| 欧美二区三区的天堂| 国产a级毛片一区| 免费xxxx性欧美18vr| 国产精品日韩精品欧美在线| 欧美三级日韩在线| 不卡一区二区在线| 理论电影国产精品| 亚洲一区二区三区美女| 欧美激情资源网| 日韩一级欧美一级| 91久久国产综合久久| 国产91精品在线观看| 蜜臀av在线播放一区二区三区 | 欧美午夜不卡视频| 成人国产视频在线观看| 久久电影国产免费久久电影| 亚洲制服丝袜一区| 国产精品你懂的在线| 欧美精品一区二区三区视频| 欧美日韩一级二级三级| 成年人国产精品| 国产在线不卡一区| 日本强好片久久久久久aaa| 伊人色综合久久天天| 欧美韩日一区二区三区四区| 欧美一区二区视频免费观看| 在线中文字幕一区二区| 97se亚洲国产综合在线| 国产成人日日夜夜| 国产精品自产自拍| 经典三级视频一区| 免费av成人在线| 奇米亚洲午夜久久精品| 丝袜亚洲另类欧美| 亚洲mv大片欧洲mv大片精品| 亚洲欧美激情小说另类| 亚洲国产精品成人综合色在线婷婷 | 久久久久久久性| 91精品国产综合久久福利软件| 91福利在线看| 在线观看视频一区二区欧美日韩| 99久久久精品| 99re这里都是精品| av电影一区二区| 91免费版在线| 91免费版在线看| 色哟哟国产精品免费观看| 91老师国产黑色丝袜在线| 99re成人精品视频| 99re这里只有精品视频首页| eeuss鲁片一区二区三区| 成人av网站免费| 色综合天天综合色综合av| 99精品一区二区| 日本高清不卡视频| 欧美图区在线视频| 欧美一区二区视频在线观看2020 | 日韩av中文字幕一区二区| 日韩和欧美一区二区| 日韩精品成人一区二区三区| 视频一区二区三区在线| 蜜臀久久99精品久久久久宅男| 久久9热精品视频| 国产精品66部| 不卡av在线网| 欧美综合天天夜夜久久| 欧美在线free| 欧美一区二区三区影视| 精品va天堂亚洲国产| 中文字幕欧美区| 亚洲靠逼com| 天天影视色香欲综合网老头|