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

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

?? cwavefile.cpp

?? windows embedded ce (wince6.0)上錄音事例程序源碼。可編成.exe在系統上運行。
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
/*++

Module Name:

	WaveFile.cpp

Abstract:

	This file contains the code for WAVE-RIFF file library.  This library
	creates, opens, reads, writes, and closes WAVE-RIFF files.

Notes:

--*/
#include "CWaveFile.h"

inline DWORD CWaveFile::WaveFileError( void )
{
    RETAILMSG(1, (TEXT("ERROR: WaveFileError void")));
    dwLastError = GetLastError();
    Close();
    return dwLastError;

} // end inline DWORD CWaveFile::WaveFileError( void )

inline DWORD CWaveFile::WaveFileError( DWORD dwError )
{
    RETAILMSG(1, (TEXT("ERROR: WaveFileError %d"), dwError));
    dwLastError = dwError;
    Close();
    return dwLastError;

} // end

/*++

CWaveFile::Close:

	This function closes all of the file handles.

Arguments:

	NONE

Return Value:

	NONE

Notes:

--*/
inline VOID CWaveFile::Close()
{
    BOOL    bRtn;
    DWORD   dwRtn;
    BYTE    byTemp;

    if(INVALID_HANDLE_VALUE != hWaveData)
    {
	

    dwRtn = GetFileSize( hWaveData, NULL );
    if( dwRtn % 2 )
    {
        SetFilePointer( hWaveData, 0, NULL, FILE_END );
        byTemp = 0;
        WriteFile( hWaveData, &byTemp, 1, &dwRtn, NULL );
    }
    }


    if (INVALID_HANDLE_VALUE != hWaveData)
    {
        bRtn = CloseHandle( hWaveData );
        if( bRtn )
            hWaveData = INVALID_HANDLE_VALUE;

    }

    if (INVALID_HANDLE_VALUE != hRiffSize)
    {
        bRtn = CloseHandle( hRiffSize );
        if( bRtn )
            hRiffSize = INVALID_HANDLE_VALUE;
    }

    if (INVALID_HANDLE_VALUE != hWaveSize)
    {
        bRtn = CloseHandle( hWaveSize );
        if( bRtn )
            hWaveSize = INVALID_HANDLE_VALUE;
    }

    /* --------------------------------------------------------------------
    	Reset all offset and sizes to zero
    -------------------------------------------------------------------- */
    nRiffSize = 0;
    nWaveSize = 0;
    dwDataOffSet = 0;
    dwInfoOffSet = 0;

    nSamples = 0;

} // end CWaveFile:Close();

/*++

CWaveFile::WriteSize:

	This function writes the new value of the RIFF chunks data size.

Arguments:

    HANDLE  hFileSize   -> Handle to write to.
    DWORD   nBytes     -> The number of bytes in the chunks data size.

Return Value:

	TRUE    ->  Success
	FALSE   ->  Failed

Notes:

--*/
inline BOOL CWaveFile::WriteSize(HANDLE hFileSize, DWORD nBytes)
{
    BOOL    bRtn;
    DWORD   dwRtn;

    // CHECK ME
    if (INVALID_HANDLE_VALUE == hFileSize)
    	{
              RETAILMSG(1, (TEXT("ERROR:WRITESIZE:  hFileSize == INVALID_HANDLE_VALUE")));
		return FALSE;
    	}

    bRtn = WriteFile( hFileSize, &nBytes, 4, &dwRtn, NULL );
    dwLastError = GetLastError();

    if( dwRtn < 4 )
        bRtn = FALSE;

    dwRtn = SetFilePointer( hFileSize,
                            -4,
                            NULL,
                            FILE_CURRENT );	

    if( 0xFFFFFFFF == dwRtn )
    {
        bRtn = FALSE;
        dwLastError = GetLastError();
    }


    return bRtn;

} // end inline BOOL CWaveFile::WriteSize(HANDLE hFileSize, DWORD nBytes)

/*++

CWaveFile::CWaveFile:

	Default Constructor for CWaveFile

Arguments:

	NONE

Return Value:

	NONE

Notes:

--*/
CWaveFile::CWaveFile( )
{
    hWaveData = INVALID_HANDLE_VALUE;
    hRiffSize = INVALID_HANDLE_VALUE;
    hWaveSize = INVALID_HANDLE_VALUE;

    nRiffSize = 0;
    nWaveSize = 0;
    dwDataOffSet = 0;
    dwInfoOffSet = 0;

    nSamples = 0;

    dwLastError = ERROR_FILE_NOT_FOUND;

} // end CWaveFile::~CWaveFile()


/*++

CWaveFile::CWaveFile:

    Full constructor for a WAVE-RIFF file.

Arguments:

    lpFileName -> Same As CreateFile
    dwDesiredAccess -> Same As CreateFile, except can't be 0
    dwShareMode -> Same As CreateFile except, can't be FILE_SHARE_DELETE
    dwCreationDistribution -> Same As CreateFile
    dwFlagsAndAttributes -> Same As CreateFile

Return Value:

    NONE:

Notes:

    Most file CreateFile options are supported with the limitation that an
    open WAVE-RIFF file must be able to played and/or recorded.

    Also, security and templetes are not supported.

--*/
CWaveFile::CWaveFile( LPCTSTR   lpFileName,
                       DWORD    dwDesiredAccess,
                       DWORD    dwCreationDistribution,
                       DWORD    dwFlagsAndAttributes,
                       LPVOID*  lplpWaveFormat,
                       LPVOID*  lplpInfo )
{
    hWaveData = INVALID_HANDLE_VALUE;
    hRiffSize = INVALID_HANDLE_VALUE;
    hWaveSize = INVALID_HANDLE_VALUE;

    nRiffSize = 0;
    nWaveSize = 0;
    dwDataOffSet = 0;
    dwInfoOffSet = 0;

    nSamples = 0;

    dwLastError = Create(lpFileName,
                         dwDesiredAccess,
                         dwCreationDistribution,
                         dwFlagsAndAttributes,
                         lplpWaveFormat,
                         lplpInfo );

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



/*++

CWaveFile::~CWaveFile:

	This is the class Destructor.

Arguments:

	NONE

Return Value:

	NONE

Notes:

--*/
CWaveFile::~CWaveFile()
{
    Close();

} // CWaveFile::~CWaveFile()


/*++

CWaveFile::Create:

    This function creates or opens WAVE-RIFF file with complete header
    information.	

    If the file already exists and the file creation parameters allow it
    to be opened. lpPcmWaveFormat is filled with the WAVE-RIFF file's
    format data.  It is the calling function's responsability to call
    GetLastError in order to see if the file already existed.

    If the file already exists but isn't a legal wave file the HANDLE will
    be closed and INVALID_HANDLE_VALUE will be returned. GetLastError will
    be set to ERROR_FILE_CORRUPT.

Arguments:

    lpFileName -> Same As CreateFile
    dwDesiredAccess -> Same As CreateFile, except can't be 0
    dwShareMode -> Same As CreateFile except, can't be FILE_SHARE_DELETE
    dwCreationDistribution -> Same As CreateFile
    dwFlagsAndAttributes -> Same As CreateFile
    lpPcmWaveFormat     -> Pointer to a wave format structure
    lplpInfo            -> Pointer to a pointer that will hold the info data.

Return Value:

    If function is successful then ERROR_SUCCESS is returned.

    If the specified file exists before the function call
    and dwCreationDistribution is CREATE_ALWAYS or OPEN_ALWAYS, then
    ERROR_ALREADY_EXISTS (even though the function has succeeded).
    If the file does not exist before the call, function returns zero.

    If the function fails, the file creation error is returned.

Notes:

    Most file CreateFile options are supported with the limitation that an
    open WAVE-RIFF file must be able to played and/or recorded.

    Also, security and templetes are not supported.

    If the file is new and lplpInfo isn't NULL then it is assumed that
    lplpInfo contains a valid LIST-INFO chunk and that chunk is writen
    to the file.

--*/
DWORD CWaveFile::Create( LPCTSTR         lpFileName,
                         DWORD           dwDesiredAccess,
                         DWORD           dwCreationDistribution,
                         DWORD           dwFlagsAndAttributes,
                         LPVOID          *lplpWaveFormat,
                         LPVOID          *lplpInfo )
{

    hWaveData = CreateFile( lpFileName,
                            dwDesiredAccess,
                            FILE_SHARE_READ | FILE_SHARE_WRITE,
                            NULL,
                            dwCreationDistribution,
                            dwFlagsAndAttributes,
                            NULL );
    if( INVALID_HANDLE_VALUE == hWaveData )
    {
        RETAILMSG(1, (TEXT("ERROR: CREATE:  hWaveData == INVALID_HANDLE_VALUE")));
        return dwLastError = GetLastError();
    }

    /* --------------------------------------------------------------------
        NOTE:  hRiffSize and hWaveSize are write optimizations.  They are
        not needed for read only files and there for will not be used for
        read only files.
    -------------------------------------------------------------------- */
    if( dwDesiredAccess & GENERIC_WRITE )
    {
        hRiffSize = CreateFile( lpFileName,
                                dwDesiredAccess,
                                FILE_SHARE_READ | FILE_SHARE_WRITE,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人av免费| 精品久久人人做人人爽| 亚洲欧美一区二区在线观看| 高清不卡在线观看| 国产午夜精品一区二区| av在线这里只有精品| 亚洲欧美日韩国产另类专区| 欧美在线观看视频在线| 日韩福利视频网| 久久久亚洲高清| 不卡的av在线播放| 亚洲综合视频网| 日韩一区二区三区在线| 国产东北露脸精品视频| 日韩美女啊v在线免费观看| 在线观看视频一区二区欧美日韩| 天天操天天干天天综合网| 欧美一区二区三区视频在线 | 国产精品美女久久久久av爽李琼| 成人h动漫精品一区二区| 一区二区久久久久| 日韩欧美中文字幕一区| 国产91精品一区二区麻豆网站| 亚洲嫩草精品久久| 日韩免费观看高清完整版| 成人一区二区三区中文字幕| 依依成人精品视频| 欧美精品一区二区三区高清aⅴ | 亚洲丝袜自拍清纯另类| 欧美区视频在线观看| 国产精品亚洲一区二区三区妖精| 国产精品久久午夜夜伦鲁鲁| 欧美三片在线视频观看| 成人av在线播放网站| 丝袜国产日韩另类美女| 中文文精品字幕一区二区| 欧美高清性hdvideosex| www.欧美精品一二区| 六月婷婷色综合| 一区二区免费视频| 国产精品午夜电影| 欧美一级片免费看| 在线视频你懂得一区二区三区| 国产麻豆一精品一av一免费| 日韩高清在线一区| 一区二区在线观看免费| 中文字幕不卡在线| 精品国产乱码久久久久久免费| 欧美性大战久久久久久久蜜臀| 国产一区二区三区| 青青青爽久久午夜综合久久午夜| 亚洲激情校园春色| 国产嫩草影院久久久久| 久久美女高清视频| 欧美一区二区三级| 欧美美女黄视频| 在线观看网站黄不卡| 色婷婷av一区二区三区gif | 精品理论电影在线| 7777精品伊人久久久大香线蕉超级流畅| 成人av在线观| 国产91精品免费| 国产精品影视天天线| 久久www免费人成看片高清| 亚洲成a人片综合在线| 亚洲精品videosex极品| 亚洲日本青草视频在线怡红院| 中文字幕欧美日韩一区| 久久日韩精品一区二区五区| 久久综合狠狠综合久久综合88| 欧美成人艳星乳罩| 久久综合色婷婷| 精品免费日韩av| 欧美成人一区二区三区| 久久综合精品国产一区二区三区| 2020国产成人综合网| 精品日产卡一卡二卡麻豆| 日韩一区二区三区四区| 精品国产一区二区三区忘忧草| 日韩美女视频在线| 久久久国产一区二区三区四区小说| 久久综合久久99| 国产日韩欧美一区二区三区乱码| 国产视频一区二区三区在线观看| 国产色一区二区| 亚洲人123区| 亚洲gay无套男同| 日本成人在线一区| 精品影院一区二区久久久| 国产精品一级片在线观看| 成人禁用看黄a在线| 91久久精品一区二区| 在线观看成人免费视频| 日韩视频永久免费| 国产亚洲一区二区在线观看| 中文字幕日本乱码精品影院| 亚洲精品国产a久久久久久| 天堂一区二区在线| 国产美女在线观看一区| 99久久免费视频.com| 欧美性大战久久久久久久| 日韩精品一区国产麻豆| 国产精品丝袜久久久久久app| 亚洲欧美另类久久久精品| 亚洲成人在线免费| 国产一区亚洲一区| 91丨porny丨首页| 欧美一区二区私人影院日本| 国产偷国产偷亚洲高清人白洁| 亚洲欧美日韩系列| 免费在线观看成人| 成人免费视频免费观看| 欧美日韩高清一区二区三区| 精品黑人一区二区三区久久| 国产精品卡一卡二| 日韩成人一级大片| 99久久免费精品高清特色大片| 制服丝袜亚洲网站| 亚洲欧美在线视频观看| 天堂午夜影视日韩欧美一区二区| 成人午夜视频免费看| 91精品一区二区三区久久久久久| 亚洲国产精品激情在线观看| 亚洲成人免费看| 成人午夜大片免费观看| 4438成人网| 亚洲综合精品自拍| 成人av免费在线观看| 91精品在线观看入口| 亚洲狠狠丁香婷婷综合久久久| 国产一区激情在线| 6080午夜不卡| 亚洲黄色性网站| 大桥未久av一区二区三区中文| 欧美精品tushy高清| 亚洲男同1069视频| 风间由美性色一区二区三区| 欧美一区二区三区小说| 一区二区三区小说| 成人精品国产一区二区4080| 欧美成人vps| 日本中文在线一区| 欧美日韩国产高清一区二区| 亚洲欧美激情一区二区| 成人污视频在线观看| 久久日一线二线三线suv| 免费在线观看一区二区三区| 欧美亚洲国产一区二区三区va| 亚洲欧美怡红院| av中文字幕在线不卡| 国产拍欧美日韩视频二区| 免费成人在线观看| 8x8x8国产精品| 亚洲国产成人av好男人在线观看| 99re热这里只有精品免费视频| 国产亚洲一区二区三区在线观看| 极品尤物av久久免费看| 日韩精品中午字幕| 裸体歌舞表演一区二区| 精品美女在线观看| 国产又粗又猛又爽又黄91精品| 精品免费国产二区三区| 韩国女主播成人在线| 日韩午夜av一区| 久久精品国产精品青草| 日韩免费观看2025年上映的电影| 日韩国产欧美一区二区三区| 91精品国产全国免费观看| 亚洲成av人片www| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲国产一区二区视频| 欧美天天综合网| 亚洲不卡在线观看| 欧美日韩不卡在线| 美女网站在线免费欧美精品| 精品99久久久久久| 国产精品一区二区三区99| 国产欧美一区二区三区网站 | 在线这里只有精品| 午夜精品久久久久久久99水蜜桃 | 国产亚洲短视频| 99久久精品免费精品国产| 日韩一区日韩二区| 欧美综合色免费| 美女精品一区二区| 中文字幕乱码日本亚洲一区二区| 99久久综合国产精品| 亚洲男人的天堂av| 制服丝袜国产精品| 国产乱码精品一区二区三区五月婷| 国产亚洲精品免费| 日本精品裸体写真集在线观看| 丝袜亚洲另类欧美综合| 久久久综合激的五月天| 99精品国产视频| 午夜欧美电影在线观看| 2020国产成人综合网| 91免费精品国自产拍在线不卡| 亚洲第一二三四区| 国产欧美一区二区精品性色超碰 |