CODE:
//File.h
#pragma once
#include
#include
HANDLE CreateFileWriteReadA(LPCSTR lpszFileName, BOOL DoRead);
HANDLE CreateFileWriteReadW(LPCWSTR lpszFileName, BOOL DoRead);
#ifdef _UNICODE
#define CreateFileWriteRead CreateFileWriteReadW
#else
#define CreateFileWriteRead CreateFileWriteReadA
#endif
CODE:
//File.cpp
#include "File.h"
HANDLE CreateFileWriteReadA(LPCSTR lpszFileName, BOOL DoRead)
{
return CreateFileA(lpszFileName, DoRead ? GENERIC_READ : GENERIC_WRITE, DoRead ? FILE_SHARE_READ : FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
}
HANDLE CreateFileWriteReadW(LPCWSTR lpszFileName, BOOL DoRead)
{
return CreateFileW(lpszFileName, DoRead ? GENERIC_READ : GENERIC_WRITE, DoRead ? FILE_SHARE_READ : FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
}
このCreateFileWriteRead関数はCreateFile関数を内部で使っているラッピング関数でDoReadにTRUEを設定すると「GENERIC_READ」と「FILE_SHARE_READ」に設定され、このフラグをFALSEにすると「GENERIC_WRITE」と「FILE_SHARE_WRITE」に設定されます。ファイルハンドルが帰ってくるのでCloseHandleを呼び出して解放してあげてください。