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

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

?? cwavefile.cpp

?? windows embedded ce (wince6.0)上錄音事例程序源碼。可編成.exe在系統上運行。
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
                    return dwLastError;
                break;

            default:    // Skip unknown Chunk
                bRtn = ReadFile( hWaveData, &dwBuffer, 4, &dwRtn, NULL );
                if( !bRtn ) return WaveFileError();

                dwRtn = SetFilePointer( hWaveData, dwBuffer, NULL, FILE_CURRENT );
                if( 0xFFFFFFFF == dwRtn ) return WaveFileError();

        } // switch( dwBuffer )

        // Read Next FOURCC
        bRtn = ReadFile( hWaveData, &dwBuffer, 4, &dwRtn, NULL );
        if( (!bRtn) || (4 != dwRtn) ) return WaveFileError();

    } // end while ( data_FOURCC != dwBuffer )

    /* --------------------------------------------------------------------
    	If writing Set hWaveSize pointer.
    -------------------------------------------------------------------- */
    if( INVALID_HANDLE_VALUE != hWaveSize )
    {
        // Get current file offset
        dwRtn = SetFilePointer( hWaveData, 0, NULL, FILE_CURRENT );
        if( 0xFFFFFFFF == dwRtn ) return WaveFileError();

        // Set hWaveSize to current file offset
        // thus we are moving the file dwRtn bytes from the file beginning
        dwRtn = SetFilePointer( hWaveSize, dwRtn, NULL, FILE_BEGIN );
        if( 0xFFFFFFFF == dwRtn ) return WaveFileError();
    }

    /* --------------------------------------------------------------------
    	Read the wave data size
    -------------------------------------------------------------------- */
    bRtn = ReadFile( hWaveData, &nWaveSize, 4, &dwRtn, NULL );
    if( (!bRtn) || (4 != dwRtn) ) return WaveFileError();

    /* --------------------------------------------------------------------
    	Set the data offset
    -------------------------------------------------------------------- */
    dwRtn = SetFilePointer( hWaveData, 0, NULL, FILE_CURRENT );
    if( 0xFFFFFFFF == dwRtn ) return WaveFileError();

    dwDataOffSet = dwRtn;

    return ERROR_SUCCESS;

} // DWORD CWaveFile::GetFormat( ... )


/*++

CWaveFile::ReadListInfo:

	This function reads a list info chunk started and hWaveData

Arguments:

	lplpInfo    pointer to pointer to info data

Return Value:

	ERROR_SUCCESS( 0 ) on success
	
Notes:

--*/
DWORD CWaveFile::ReadListInfo( LPVOID *lplpInfo )
{
    DWORD   dwInfoSize = 0;
    DWORD   dwRtn;
    BOOL    bRtn;

    if(NULL == lplpInfo) {
		dwLastError = ERROR_INVALID_PARAMETER;
		return bRtn = FALSE;
    }

    /* ----------------------------------------------------------------
    	Set the LIST-INFO offset
    ---------------------------------------------------------------- */
    dwInfoOffSet = SetFilePointer( hWaveData, 0, NULL, FILE_CURRENT ) - 4;

    /* ----------------------------------------------------------------
    	Get the LIST chunk size
    ---------------------------------------------------------------- */
    bRtn = ReadFile( hWaveData, &dwInfoSize, 4, &dwRtn, NULL );
    if( (!bRtn) || (4 != dwRtn) ) return WaveFileError();

    /* ----------------------------------------------------------------
    	If the user wants the Info read it in else skip it.
    ---------------------------------------------------------------- */
    if( NULL != lplpInfo )
    {
        dwRtn = SetFilePointer( hWaveData, -8, NULL, FILE_CURRENT );
        if( 0xFFFFFFFF == dwRtn ) return WaveFileError();

        dwInfoSize += 8; // The complete size of the buffer.

        // Get a new buffer.
        *lplpInfo = new BYTE[dwInfoSize];

        /* ------------------------------------------------------------
        	NOTE: if memory allocation fails simply skip reading
        	info block and don't indicate error.
        ------------------------------------------------------------ */
        if( NULL != *lplpInfo )
        {

            bRtn = ReadFile( hWaveData, *lplpInfo, dwInfoSize, &dwRtn, NULL );
            if( (!bRtn) || (dwRtn != (dwInfoSize+8)) )
            {
                delete [] *lplpInfo;
                *lplpInfo = NULL;
                dwInfoOffSet = 0;
                return WaveFileError( ERROR_FILE_CORRUPT );

            } // end if( (!bRtn) || (dwRtn != (dwInfoSize+8)) )

        } // end if( NULL != *lplpInfo )

        else // ship info
        {
            dwRtn = SetFilePointer( hWaveData, dwInfoSize+8, NULL, FILE_CURRENT );
            if( 0xFFFFFFFF == dwRtn ) return WaveFileError();

        } // end if( NULL != *lplpInfo ) else

    } // end if( NULL != lplpInfo )

    else // skip info
    {
        dwRtn = SetFilePointer( hWaveData, dwInfoSize, NULL, FILE_CURRENT );
        if( 0xFFFFFFFF == dwRtn ) return WaveFileError();

    } // end if( NULL != lplpInfo )


    return dwLastError = ERROR_SUCCESS;

} // end DWORD CWaveFile::ReadListInfo( LPVOID *lplpInfo )

/*++

CWaveFile::ReadWaveFormat:

	This function reads the wave format from hWaveData

Arguments:

	lplpWaveFormat  Wave format data

Return Value:

	ERROR_SUCCESS(0) on success

Notes:

--*/
DWORD CWaveFile::ReadWaveFormat( LPVOID *lplpWaveFormat )
{
    DWORD   dwRtn;
    DWORD   dwBuffer;
    BOOL    bRtn;

   if(NULL == lplpWaveFormat){
		dwLastError = ERROR_INVALID_PARAMETER;
		return bRtn = FALSE;
    }

    /* --------------------------------------------------------------------
    	Verify format data size.  Must be >= to sizeof(PCMWAVEFORMAT)
    -------------------------------------------------------------------- */
    bRtn = ReadFile( hWaveData, &dwBuffer, 4, &dwRtn, NULL );
    if( (!bRtn) || (4 != dwRtn) ) return WaveFileError();

    if( sizeof(PCMWAVEFORMAT) > dwBuffer )
        return WaveFileError( ERROR_FILE_CORRUPT );

    // Assumption lplpWaveFormat should not be NULL by above check
    // The additional size allows access to a WAVEFORMATEX
    // size member
    *lplpWaveFormat = new BYTE[dwBuffer+sizeof(WORD)];
    if( NULL == *lplpWaveFormat )
        return WaveFileError( ERROR_NOT_ENOUGH_MEMORY );

     ZeroMemory( *lplpWaveFormat, dwBuffer+sizeof(WORD) );
    /* --------------------------------------------------------------------
    	Read the Wave file format information. All data from the fmt
    	chunk is copyed.  Then the PCM data is saved locally and the
    	chunk data is returned to the client.
    -------------------------------------------------------------------- */
    bRtn = ReadFile( hWaveData,
                     *lplpWaveFormat,
                     dwBuffer,
                     &dwRtn, NULL );
    if( (!bRtn) || (dwBuffer != dwRtn) ) return WaveFileError();

    /* --------------------------------------------------------------------
    	Copy PCM Wave file fomat
    -------------------------------------------------------------------- */
    CopyMemory( &m_PcmWaveFormat, *lplpWaveFormat, sizeof(PCMWAVEFORMAT) );

    return dwLastError = ERROR_SUCCESS;

} // end DWORD CWaveFile::ReadWaveFormat( LPVOID *lplpWaveFormat )

/*++

CWaveFile::ReadFactChunk:

	This fuction reads nSamples from the fact chunk at hWaveData.

Arguments:

	NONE

Return Value:

	ERROR_SUCCESS(0) on success

Notes:

--*/

DWORD CWaveFile::ReadFactChunk( void )
{

    DWORD   dwRtn;
    DWORD   dwChunkLength;
    BOOL    bRtn;

    // Get the chunk size.
    bRtn = ReadFile( hWaveData, &dwChunkLength, 4, &dwRtn, NULL );
    if( (!bRtn) || (4 != dwRtn) ) return WaveFileError();

    if( 4 > dwChunkLength ) return dwLastError = ERROR_SUCCESS;

    // Read samples
    bRtn = ReadFile( hWaveData, &nSamples, 4, &dwRtn, NULL );
    if( (!bRtn) || (4 != dwRtn) ) return WaveFileError();

    // Skip the rest, if any.
    if( 4 == dwChunkLength ) return dwLastError = ERROR_SUCCESS;


    dwRtn = SetFilePointer( hWaveData, dwChunkLength - 4, NULL, FILE_CURRENT );
    if( 0xFFFFFFFF == dwRtn ) return WaveFileError();

    return dwLastError = ERROR_SUCCESS;

}  // end DWORD CWaveFile::ReadFactChunk( )

/*++

CWaveFile::InitFile:

	This function sets up a new WAVE-RIFF file.

Arguments:

   	PCMWAVEFORMAT*  lpPcmWaveFormat -> Pointer to the structure to write
   	                                   the wave format data.
       LPWAVEAUXINFO   lpWaveAuxInfo   -> Currently not used, not writen to
                                       the file.

Return Value:

    Return file error codes.

Notes:

--*/
DWORD CWaveFile::InitFile( PCMWAVEFORMAT*    lpPcmWaveFormat,
                           LPVOID*           lplpInfo )
{
    DWORD   dwRtn;
    BOOL    bRtn;
    RIFFCK  riffck;
    CKHDR   ckhdr;

    if(NULL == lpPcmWaveFormat){
		dwLastError = ERROR_INVALID_PARAMETER;
		return bRtn = FALSE;
    }

    /* --------------------------------------------------------------------
        Write the RIFF-WAVE chunk 	
    -------------------------------------------------------------------- */
    riffck.ckID = RIFF_FOURCC;
    riffck.ckSize = 4 + sizeof(CKHDR) + sizeof(PCMWAVEFORMAT) + sizeof(CKHDR);
    riffck.ckForm = WAVE_FOURCC;

    bRtn = WriteFile( hWaveData, &riffck, sizeof(RIFFCK), &dwRtn, NULL);
    if( (!bRtn) || (sizeof(RIFFCK) != dwRtn) ) return WaveFileError();

    dwRtn = SetFilePointer( hRiffSize, 4, NULL, FILE_BEGIN );
    if( 0xFFFFFFFF == dwRtn ) return WaveFileError();

    /* --------------------------------------------------------------------
    	There is wave info writ it here.
    -------------------------------------------------------------------- */
    if( NULL != lplpInfo )
    {
        if( NULL != *lplpInfo )
        {
            dwInfoOffSet = SetFilePointer( hWaveData, 0, NULL, FILE_CURRENT );

            DWORD dwInfoSize = (DWORD)((LPDWORD)*lplpInfo + 1) + 8;
            bRtn = WriteFile( hWaveData, *lplpInfo, dwInfoSize, &dwRtn, NULL);
            if( (!bRtn) || (sizeof(RIFFCK) != dwRtn) ) return WaveFileError();

        } // end if( NULL != *lplpInfo )

    } // end if( NULL != lplpInfo )

    /* --------------------------------------------------------------------
        Write the WAVE-fmt chunk header
    -------------------------------------------------------------------- */
    ckhdr.ckID = fmt_FOURCC;
    ckhdr.ckSize = sizeof(PCMWAVEFORMAT);

    bRtn = WriteFile( hWaveData, &ckhdr, sizeof(CKHDR), &dwRtn, NULL);
    if( (!bRtn) || (sizeof(CKHDR) != dwRtn) ) return WaveFileError();

    bRtn = WriteFile( hWaveData,
                      lpPcmWaveFormat,
                      sizeof(PCMWAVEFORMAT),
                      &dwRtn, NULL);
    if( (!bRtn) || (sizeof(PCMWAVEFORMAT) != dwRtn) ) return WaveFileError();

    /* --------------------------------------------------------------------
    	Copy PCM Wave file fomat
    -------------------------------------------------------------------- */
    CopyMemory( &m_PcmWaveFormat, lpPcmWaveFormat, sizeof(PCMWAVEFORMAT) );

    /* --------------------------------------------------------------------
    	Write the WAVE-data chunk header
    -------------------------------------------------------------------- */
    ckhdr.ckID = data_FOURCC;
    ckhdr.ckSize = 0;

    bRtn = WriteFile( hWaveData, &ckhdr, sizeof(CKHDR), &dwRtn, NULL);
    if( (!bRtn) || (sizeof(CKHDR) != dwRtn) ) return WaveFileError();

    if( INVALID_HANDLE_VALUE != hWaveSize )
    {
        dwRtn = SetFilePointer( hWaveData, 0, NULL, FILE_CURRENT );
        if( 0xFFFFFFFF == dwRtn ) return WaveFileError();

        dwDataOffSet = dwRtn;

        dwRtn = SetFilePointer( hWaveSize, (dwDataOffSet - 4), NULL, FILE_BEGIN );
        if( 0xFFFFFFFF == dwRtn ) return WaveFileError();
    }

    return ERROR_SUCCESS;

} // end DWORD CWaveFile::InitFile( ... )


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩中文字幕不卡| 亚洲精品一区二区三区在线观看| 在线看日本不卡| 欧美色精品在线视频| 欧美疯狂性受xxxxx喷水图片| 日韩一本二本av| 久久精品夜夜夜夜久久| 亚洲欧美日韩国产综合在线| 视频在线观看91| 国模娜娜一区二区三区| 成人h动漫精品一区二区| 在线观看国产日韩| 日韩一区二区电影网| 中文字幕av免费专区久久| 亚洲制服欧美中文字幕中文字幕| 蜜桃精品视频在线| 成人av片在线观看| 91精品国产综合久久福利| 中文字幕不卡一区| 午夜欧美在线一二页| 国产不卡一区视频| 欧美日本免费一区二区三区| 久久综合久久鬼色中文字| 亚洲精品成人悠悠色影视| 日韩av不卡一区二区| 成人av在线影院| 91精品久久久久久蜜臀| 国产精品久久久久久一区二区三区 | 欧美精品一区二区在线播放| 中文子幕无线码一区tr| 日韩成人dvd| 91视频.com| 亚洲精品一区二区三区在线观看| 亚洲一区二区三区在线| 高清成人免费视频| 67194成人在线观看| 亚洲视频一区在线| 高清国产一区二区| 日韩一区二区三区视频在线观看| 国产精品福利一区| 极品美女销魂一区二区三区| 欧美在线制服丝袜| 国产精品欧美久久久久无广告 | 欧美午夜理伦三级在线观看| 久久精品日产第一区二区三区高清版| 亚洲午夜日本在线观看| 国产成人av网站| 日韩一区二区在线看片| 亚洲第一久久影院| 99国产精品国产精品久久| 久久久久久久久久美女| 奇米精品一区二区三区在线观看一 | 欧美日韩一区小说| 亚洲视频一区在线| 成人高清av在线| 久久久久久久久久久久久女国产乱 | 国产电影一区二区三区| 欧美一二三四区在线| 亚洲午夜国产一区99re久久| voyeur盗摄精品| 久久精品人人做人人综合| 韩国成人在线视频| 精品少妇一区二区三区| 免费欧美高清视频| 7777精品伊人久久久大香线蕉超级流畅| 夜夜操天天操亚洲| 91在线小视频| 亚洲欧洲国产专区| voyeur盗摄精品| 自拍偷拍国产精品| 国产成人在线观看| 国产农村妇女毛片精品久久麻豆 | 国产三级欧美三级日产三级99| 久久国产乱子精品免费女| 56国语精品自产拍在线观看| 婷婷综合另类小说色区| 欧美三级电影精品| 亚洲成人自拍偷拍| 欧美日韩精品一区二区| 午夜精品久久一牛影视| 欧美精品一卡两卡| 日韩高清在线不卡| 日韩精品一区国产麻豆| 麻豆视频一区二区| 精品国产免费人成在线观看| 国产精品一区二区在线看| 国产欧美日韩在线| 成人毛片在线观看| 亚洲乱码国产乱码精品精98午夜 | 亚洲精品国产成人久久av盗摄| 色婷婷av一区二区三区大白胸| 亚洲另类在线视频| 欧美日韩一本到| 日韩精彩视频在线观看| 精品少妇一区二区三区日产乱码 | 国产香蕉久久精品综合网| 国产精品一二三四五| 欧美国产激情二区三区| 91色在线porny| 亚洲国产你懂的| 日韩欧美中文字幕一区| 国产乱对白刺激视频不卡| 欧美国产成人精品| 欧美性生活久久| 免费观看在线综合| 久久久久久久精| 91一区二区三区在线观看| 午夜欧美视频在线观看| 精品国内二区三区| 不卡视频免费播放| 亚洲成av人片观看| 久久亚洲精华国产精华液| 成人app网站| 亚洲一区在线看| 精品美女被调教视频大全网站| 粉嫩嫩av羞羞动漫久久久| 日韩美女久久久| 在线电影一区二区三区| 国产一区二区不卡老阿姨| 亚洲欧洲精品天堂一级 | 日本大胆欧美人术艺术动态| 国产日产欧产精品推荐色| 日本高清不卡aⅴ免费网站| 日韩福利视频导航| 国产精品私房写真福利视频| 精品视频一区二区三区免费| 紧缚奴在线一区二区三区| 综合色天天鬼久久鬼色| 欧美精品高清视频| 不卡在线观看av| 日本三级韩国三级欧美三级| 国产精品久久影院| 日韩一级大片在线| av毛片久久久久**hd| 青娱乐精品在线视频| 国产精品久久久久四虎| 日韩欧美中文字幕制服| www.99精品| 久久99国产精品久久99| 一区二区三区在线不卡| 久久久影视传媒| 欧美日韩精品欧美日韩精品一 | 中文字幕不卡在线| 欧美一区二区在线看| 91啪亚洲精品| 国产一区二区女| 丝袜亚洲精品中文字幕一区| 国产精品乱码一区二三区小蝌蚪| 日韩一区二区免费在线电影| 在线看一区二区| 成人高清免费观看| 国产综合色产在线精品| 青青国产91久久久久久| 一区二区三区影院| 国产精品无圣光一区二区| 日韩欧美美女一区二区三区| 欧美午夜电影在线播放| 波多野结衣一区二区三区 | 精品国产亚洲在线| 欧美人体做爰大胆视频| 一本到不卡精品视频在线观看| 国产成人精品一区二区三区四区| 麻豆国产欧美日韩综合精品二区 | 欧美一区二区三区视频免费播放 | 亚洲国产aⅴ天堂久久| 中文字幕高清一区| 久久综合精品国产一区二区三区| 欧美二区三区的天堂| 在线观看亚洲精品视频| 色综合久久综合网欧美综合网| 国产激情视频一区二区在线观看| 久久草av在线| 美国毛片一区二区三区| 丝袜诱惑制服诱惑色一区在线观看| 亚洲综合一区在线| 亚洲精品菠萝久久久久久久| 亚洲视频在线一区观看| 亚洲视频在线观看一区| 自拍偷拍国产亚洲| 亚洲女同一区二区| 亚洲欧美欧美一区二区三区| 亚洲人一二三区| 亚洲视频每日更新| 亚洲啪啪综合av一区二区三区| 中文字幕一区二区三区在线播放| 欧美国产亚洲另类动漫| 国产精品久久久久精k8| 中文字幕一区不卡| 日韩伦理电影网| 亚洲理论在线观看| 亚洲国产成人porn| 日韩电影一区二区三区四区| 免费人成在线不卡| 久久99国产精品久久| 国产精品一二二区| 成人综合婷婷国产精品久久蜜臀| 成人动漫av在线| 色网站国产精品| 欧洲精品一区二区| 91.com视频|