[HCPC] Win32 > IO > WriteFile

// Win32でのファイルライト Ver.2008.2.21
// Copyright (C) 2008 T.Hirase, All rights reserved.
//-----------------------------------------------------
#include <windows.h>

int main()
{
    // 変数宣言
    HANDLE      fileHandle;             // ファイルアクセス用のハンドル
    BYTE *      writeBuffer;            // ファイル書き込み用のバッファ
    const DWORD writeBufferSize = 1024; // ファイル書き込み用のバッファサイズ
    DWORD       writeSize = 0;          // WriteFile()で書き込んだデータ量

    // ファイルを開く(ファイルへのハンドル取得)
    fileHandle = CreateFileW(
        L"Your file path.",    // ファイルのパス
        GENERIC_WRITE,         // 書き込みモードで開く。
        FILE_SHARE_READ,       // 排他処理の設定。読み取りモードでは、他プロセスも読める。
        NULL,
        CREATE_ALWAYS,         // いつも新規作成。(すでにファイルが存在する場合は、ファイルサイズが0になる。)
        FILE_ATTRIBUTE_NORMAL, // 特別なモードの設定。特になし。
        NULL);

    // エラーチェック
    if (fileHandle == INVALID_HANDLE_VALUE)
    {
        DWORD invalidReason = GetLastError();
        DebugBreak();
    }

    // バッファの確保
    writeBuffer = new BYTE[writeBufferSize];
    for (int i = 0; i < writeBufferSize ; ++i)
        writeBuffer[i] = 'a' + i;

    // ファイルから読み込み
    WriteFile(fileHandle, // ファイルハンドル(CreateFileWで得たもの)
        writeBuffer,      // 書き込みバッファ
        writeBufferSize,  // 書き込みバッファのサイズ
        &writeSize,       // 書き込みが成功した際に、実際に書き込んだサイズ
        NULL);

    // バッファ解放
    delete[] writeBuffer;

    // ハンドル解放
    CloseHandle(fileHandle);

    return 0;
}

更新履歴

2008.02.21
(初)