[HCPC] Win32 > IO > ReadFile(Random Access)

// Win32でのファイルリード(ランダムアクセス用) Ver.2008.2.21
// Copyright (C) 2008 T.Hirase, All rights reserved.
//-----------------------------------------------------
#include <windows.h>

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

    // ファイルを開く(ファイルへのハンドル取得)
    fileHandle = CreateFileW(
        L"Your file path.",        // ファイルのパス
        GENERIC_READ,              // 読み取りモードで開く。
        FILE_SHARE_READ,           // 排他処理の設定。読み取りモードでは、他プロセスも読める。
        NULL,
        OPEN_EXISTING,             // ファイルがある場合だけ開く。
		FILE_FLAG_RANDOM_ACCESS,   // 特別なモードの設定。ランダムアクセスを行う。ファイルキャッシュがランダムアクセスを用に最適化される。
        NULL);

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

    // バッファの確保
    readBuffer = new BYTE[readBufferSize];

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

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

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

    return 0;
}

更新履歴

2008.02.21
(初)