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

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

?? wavemain.cpp

?? windows CE 的BSP開發包.包含眾多的驅動程序和OAL層的開發代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
        {
            dwRet = g_pHWContext->GetNumOutputDevices();
            break;
        }

    case WIDM_GETNUMDEVS:
        {
            dwRet = g_pHWContext->GetNumInputDevices();
            break;
        }

    case WODM_GETDEVCAPS:
        {
            DeviceContext *pDeviceContext;
            UINT NumDevs = g_pHWContext->GetNumOutputDevices();

            if (pStreamContext)
            {
                pDeviceContext=pStreamContext->GetDeviceContext();
            }
            else
            {
                pDeviceContext = g_pHWContext->GetOutputDeviceContext(uDeviceId);
            }

            dwRet = pDeviceContext->GetDevCaps((PVOID)dwParam1,dwParam2);
            break;
        }


    case WIDM_GETDEVCAPS:
        {
            DeviceContext *pDeviceContext;
            UINT NumDevs = g_pHWContext->GetNumInputDevices();

            if (pStreamContext)
            {
                pDeviceContext=pStreamContext->GetDeviceContext();
            }
            else
            {
                pDeviceContext = g_pHWContext->GetInputDeviceContext(uDeviceId);
            }

            dwRet = pDeviceContext->GetDevCaps((PVOID)dwParam1,dwParam2);
            break;
        }

    case WODM_GETEXTDEVCAPS:
        {
            DeviceContext *pDeviceContext;
            UINT NumDevs = g_pHWContext->GetNumOutputDevices();

            if (pStreamContext)
            {
                pDeviceContext=pStreamContext->GetDeviceContext();
            }
            else
            {
                pDeviceContext = g_pHWContext->GetOutputDeviceContext(uDeviceId);
            }

            dwRet = pDeviceContext->GetExtDevCaps((PVOID)dwParam1,dwParam2);
            break;
        }

    case WODM_OPEN:
        {
            // DEBUGMSG(1, (TEXT("WODM_OPEN\r\n"));
            DeviceContext *pDeviceContext = g_pHWContext->GetOutputDeviceContext(uDeviceId);
            dwRet = pDeviceContext->OpenStream((LPWAVEOPENDESC)dwParam1, dwParam2, (StreamContext **)dwUser);
            break;
        }

    case WIDM_OPEN:
        {
            // DEBUGMSG(1, (TEXT("WIDM_OPEN\r\n"));
            DeviceContext *pDeviceContext = g_pHWContext->GetInputDeviceContext(uDeviceId);
            dwRet = pDeviceContext->OpenStream((LPWAVEOPENDESC)dwParam1, dwParam2, (StreamContext **)dwUser);
            break;
        }

    case WODM_CLOSE:
    case WIDM_CLOSE:
        {
            // DEBUGMSG(1, (TEXT("WIDM_CLOSE/WODM_CLOSE\r\n"));
            dwRet = pStreamContext->Close();

            // Release stream context here, rather than inside StreamContext::Close, so that if someone
            // (like CMidiStream) has subclassed Close there's no chance that the object will get released
            // out from under them.
            if (dwRet==MMSYSERR_NOERROR)
            {
                pStreamContext->Release();
            }
            break;
        }

    case WODM_RESTART:
    case WIDM_START:
        {
            dwRet = pStreamContext->Run();
            break;
        }

    case WODM_PAUSE:
    case WIDM_STOP:
        {
            dwRet = pStreamContext->Stop();
            break;
        }

    case WODM_GETPOS:
    case WIDM_GETPOS:
        {
            dwRet = pStreamContext->GetPos((PMMTIME)dwParam1);
            break;
        }

    case WODM_RESET:
    case WIDM_RESET:
        {
            dwRet = pStreamContext->Reset();
            break;
        }

    case WODM_WRITE:
    case WIDM_ADDBUFFER:
        {
            // DEBUGMSG(1, (TEXT("WODM_WRITE/WIDM_ADDBUFFER, Buffer=0x%x\r\n"),dwParam1);
            dwRet = pStreamContext->QueueBuffer((LPWAVEHDR)dwParam1);
            break;
        }

    case WODM_GETVOLUME:
        {
            PULONG pdwGain = (PULONG)dwParam1;
            UINT NumDevs = g_pHWContext->GetNumOutputDevices();

            if (pStreamContext)
            {
                *pdwGain = pStreamContext->GetGain();
            }
            else
            {
                DeviceContext *pDeviceContext = g_pHWContext->GetOutputDeviceContext(uDeviceId);
                *pdwGain = pDeviceContext->GetGain();
            }
            dwRet = MMSYSERR_NOERROR;
            break;
        }

    case WODM_SETVOLUME:
        {
            UINT NumDevs = g_pHWContext->GetNumOutputDevices();
            LONG dwGain = dwParam1;
            if (pStreamContext)
            {
                dwRet = pStreamContext->SetGain(dwGain);
            }
            else
            {
                DeviceContext *pDeviceContext = g_pHWContext->GetOutputDeviceContext(uDeviceId);
                dwRet = pDeviceContext->SetGain(dwGain);
            }
            break;
        }

    case WODM_BREAKLOOP:
        {
            dwRet = pStreamContext->BreakLoop();
            break;
        }

    case WODM_SETPLAYBACKRATE:
        {
            WaveStreamContext *pWaveStream = (WaveStreamContext *)dwUser;
            dwRet = pWaveStream->SetRate(dwParam1);
            break;
        }

    case WODM_GETPLAYBACKRATE:
        {
            WaveStreamContext *pWaveStream = (WaveStreamContext *)dwUser;
            dwRet = pWaveStream->GetRate((DWORD *)dwParam1);
            break;
        }

    case MM_WOM_SETSECONDARYGAINCLASS:
        {
            dwRet = pStreamContext->SetSecondaryGainClass(dwParam1);
            break;
        }

    case MM_WOM_SETSECONDARYGAINLIMIT:
        {
            DeviceContext *pDeviceContext;
            if (pStreamContext)
            {
                pDeviceContext = pStreamContext->GetDeviceContext();
            }
            else
            {
                pDeviceContext = g_pHWContext->GetOutputDeviceContext(uDeviceId);
            }
            dwRet = pDeviceContext->SetSecondaryGainLimit(dwParam1,dwParam2);
            break;
        }
/*
    case MM_WOM_FORCESPEAKER:
        {
            if (pStreamContext)
            {
                dwRet = pStreamContext->ForceSpeaker((BOOL)dwParam1);
            }
            else
            {
                dwRet = g_pHWContext->ForceSpeaker((BOOL)dwParam1);
            }
            break;
        }
*/
    case MM_MOM_MIDIMESSAGE:
        {
            CMidiStream *pMidiStream = (CMidiStream *)dwUser;
            dwRet = pMidiStream->MidiMessage(dwParam1);
            break;
        }
    case WODM_GETPITCH:
    case WODM_SETPITCH:
    case WODM_PREPARE:
    case WODM_UNPREPARE:
    case WIDM_PREPARE:
    case WIDM_UNPREPARE:
        default:
        dwRet  = MMSYSERR_NOTSUPPORTED;
    }
    g_pHWContext->Unlock();

    // Pass the return code back via pBufOut
    if (pdwResult)
    {
        *pdwResult = dwRet;
    }

    return TRUE;
}

// -----------------------------------------------------------------------------
//
//  @doc    WDEV_EXT
//
//  @func   BOOL | WAV_IOControl | Device IO control routine
//
//  @parm   DWORD | dwOpenData | Value returned from WAV_Open call
//
//  @parm   DWORD | dwCode |
//          IO control code for the function to be performed. WAV_IOControl only
//          supports one IOCTL value (IOCTL_WAV_MESSAGE)
//
//  @parm   PBYTE | pBufIn |
//          Pointer to the input parameter structure (<t MMDRV_MESSAGE_PARAMS>).
//
//  @parm   DWORD | dwLenIn |
//          Size in bytes of input parameter structure (sizeof(<t MMDRV_MESSAGE_PARAMS>)).
//
//  @parm   PBYTE | pBufOut | Pointer to the return value (DWORD).
//
//  @parm   DWORD | dwLenOut | Size of the return value variable (sizeof(DWORD)).
//
//  @parm   PDWORD | pdwActualOut | Unused
//
//  @rdesc  Returns TRUE for success, FALSE for failure
//
//  @xref   <t Wave Input Driver Messages> (WIDM_XXX) <nl>
//          <t Wave Output Driver Messages> (WODM_XXX)
//
// -----------------------------------------------------------------------------
BOOL WAV_IOControl(DWORD  dwOpenData,
                   DWORD  dwCode,
                   PBYTE  pBufIn,
                   DWORD  dwLenIn,
                   PBYTE  pBufOut,
                   DWORD  dwLenOut,
                   PDWORD pdwActualOut)
{
    _try
    {
        switch (dwCode)
        {
        case IOCTL_WAV_MESSAGE:
            return HandleWaveMessage((PMMDRV_MESSAGE_PARAMS)pBufIn, (DWORD *)pBufOut);
        default:
            return g_pHWContext->IOControl(dwOpenData, dwCode, pBufIn, dwLenIn, pBufOut, dwLenOut, pdwActualOut);
        }
    }
    _except (GetExceptionCode() == STATUS_ACCESS_VIOLATION ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
    {
        RETAILMSG(1, (TEXT("EXCEPTION IN WAV_IOControl!!!!\r\n")));
        SetLastError(E_FAIL);
    }

    return FALSE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久久蜜臀粉嫩| 美女在线一区二区| 国产在线精品一区二区| 欧美成人女星排名| 国产精品一区三区| 欧美国产精品久久| 色诱亚洲精品久久久久久| 夜夜嗨av一区二区三区| 色欧美日韩亚洲| 视频一区中文字幕| 日韩精品一区二区三区蜜臀| 国内精品久久久久影院薰衣草 | 亚洲aⅴ怡春院| 欧美探花视频资源| 青青青爽久久午夜综合久久午夜| 日韩欧美国产系列| 国产精品乡下勾搭老头1| 中文字幕成人在线观看| 色综合 综合色| 裸体健美xxxx欧美裸体表演| 久久一区二区三区四区| av动漫一区二区| 亚洲一二三四在线| 精品国产人成亚洲区| 成人精品一区二区三区四区| 一区二区三区免费观看| 欧美一三区三区四区免费在线看| 精品综合久久久久久8888| 国产精品久久久久久福利一牛影视| 一本一道综合狠狠老| 久久爱www久久做| 亚洲欧美国产毛片在线| 欧美一级二级三级蜜桃| 成人动漫中文字幕| 亚洲不卡av一区二区三区| 欧美精品一区二区蜜臀亚洲| 欧美在线免费观看亚洲| 国产高清在线精品| 日韩av电影一区| 1024成人网| 2023国产一二三区日本精品2022| 91猫先生在线| 国产成人小视频| 日本麻豆一区二区三区视频| 日韩毛片在线免费观看| 精品国产精品一区二区夜夜嗨| 91麻豆国产福利精品| 韩国成人福利片在线播放| 亚洲一区二区美女| 亚洲国产精品成人综合色在线婷婷 | 欧美福利视频导航| 成人污污视频在线观看| 美日韩一级片在线观看| 亚洲黄色免费电影| 国产精品久久久久久亚洲毛片| 欧美高清dvd| 91久久精品一区二区三区| 粉嫩绯色av一区二区在线观看| 日产欧产美韩系列久久99| 一区二区三区日韩欧美| 国产精品色一区二区三区| 日韩女同互慰一区二区| 欧美日韩精品福利| 99vv1com这只有精品| 国产69精品久久99不卡| 国模套图日韩精品一区二区 | 婷婷开心激情综合| 亚洲精品日韩一| 亚洲日本va在线观看| 国产精品美女一区二区三区 | 中文字幕av一区二区三区| 欧美一级二级三级蜜桃| 3atv一区二区三区| 色综合久久天天| 91亚洲午夜精品久久久久久| 99久久伊人网影院| 成人午夜私人影院| 波多野结衣亚洲| 成人黄色国产精品网站大全在线免费观看| 91视频你懂的| www.亚洲人| 97超碰欧美中文字幕| www.亚洲精品| 色嗨嗨av一区二区三区| 欧美中文一区二区三区| 欧美日韩久久一区二区| 欧美色综合网站| 欧美一区二区精品在线| 日韩欧美国产不卡| 久久亚洲影视婷婷| 国产精品毛片大码女人| 最新成人av在线| 洋洋av久久久久久久一区| 亚洲国产欧美日韩另类综合| 亚洲国产欧美日韩另类综合| 日韩精品国产精品| 久久国产三级精品| 国产不卡免费视频| 99久久伊人精品| 欧美精品久久天天躁| 日韩欧美一二三| 中文字幕免费不卡| 亚洲欧美日韩一区二区三区在线观看| 一区二区三区国产| 日本美女一区二区三区视频| 国产精品亚洲一区二区三区妖精| 懂色av一区二区夜夜嗨| 日本高清不卡一区| 日韩一区二区精品葵司在线| 久久看人人爽人人| 亚洲欧美中日韩| 日韩一区欧美二区| 国产成人精品一区二| 在线观看不卡视频| 日韩女同互慰一区二区| 自拍偷在线精品自拍偷无码专区| 亚洲成人免费看| 国产精品1区2区3区在线观看| 99久久久国产精品| 欧美大黄免费观看| 亚洲欧美激情一区二区| 极品尤物av久久免费看| 91免费版pro下载短视频| 日韩一区二区精品葵司在线| 国产精品黄色在线观看| 免费成人美女在线观看| 国产成人精品午夜视频免费| 91福利视频网站| 国产亚洲欧美一区在线观看| 亚洲电影你懂得| 岛国精品一区二区| 欧美精品在线观看播放| 亚洲欧洲在线观看av| 麻豆freexxxx性91精品| 在线日韩一区二区| 亚洲国产精品黑人久久久| 奇米亚洲午夜久久精品| 一本久久综合亚洲鲁鲁五月天| 337p日本欧洲亚洲大胆精品| 亚洲高清视频中文字幕| 不卡一区二区在线| 欧美一级在线视频| 一区二区三区在线免费观看 | 美日韩一区二区| 在线观看亚洲成人| 国产精品女主播在线观看| 蜜桃av一区二区在线观看| 欧美日韩国产美| 一二三区精品福利视频| 成人av电影免费观看| 欧美成人在线直播| 奇米影视一区二区三区| 91高清视频在线| 亚洲欧洲色图综合| 成人激情电影免费在线观看| 久久久亚洲综合| 久久国产夜色精品鲁鲁99| 欧美三级韩国三级日本三斤| 亚洲精品国产成人久久av盗摄 | 久久久www成人免费毛片麻豆| 欧美一区二区私人影院日本| 午夜激情一区二区| 91精品福利在线| 亚洲欧美日韩久久| 91蝌蚪porny九色| 亚洲视频一二三区| 色综合一区二区| ●精品国产综合乱码久久久久| 成人动漫精品一区二区| 国产精品婷婷午夜在线观看| 成人一区在线看| 国产精品久久久久久一区二区三区| 粉嫩av亚洲一区二区图片| 国产精品久久三| 日本精品裸体写真集在线观看 | 欧美电视剧在线观看完整版| 三级久久三级久久久| 91精品国产综合久久久久久久| 日韩激情av在线| 精品国产一区二区三区忘忧草| 麻豆成人综合网| 国产日韩一级二级三级| caoporn国产一区二区| 亚洲男人天堂av网| 欧美日韩国产一级二级| 日韩av一级片| 久久精品人人做人人爽97| 成人做爰69片免费看网站| 亚洲欧美色一区| 欧美日韩免费一区二区三区视频| 三级一区在线视频先锋 | 国产精品资源在线观看| 国产亚洲欧美日韩俺去了| 成人丝袜18视频在线观看| 亚洲欧美色图小说| 欧美一区二区在线免费观看| 国产精品一品视频| 亚洲免费观看高清完整版在线观看| 欧美一a一片一级一片| 久久国产综合精品|