12#pragma comment (linker, "/section:SharedZone,rws")
13#pragma data_seg("SharedZone")
24 HMODULE hModule, DWORD dwReasonForCall, LPVOID lpvReserved)
26 TCHAR tszMessage[80] = { 0 };
28 switch (dwReasonForCall)
30 case DLL_PROCESS_ATTACH:
31 wsprintf (tszMessage, _T (
"WindowsLibrary.dll DLL_PROCESS_ATTACH.\n"));
34 case DLL_THREAD_ATTACH:
35 wsprintf (tszMessage, _T (
"WindowsLibrary.dll DLL_THREAD_ATTACH.\n"));
38 case DLL_THREAD_DETACH:
39 wsprintf (tszMessage, _T (
"WindowsLibrary.dll DLL_THREAD_DETACH.\n"));
42 case DLL_PROCESS_DETACH:
43 wsprintf (tszMessage, _T (
"WindowsLibrary.dll DLL_PROCESS_DETACH.\n"));
46 OutputDebugString (tszMessage);
75 if (
_hObject != INVALID_HANDLE_VALUE)
86 DWORD dwNumberOfBytesRead = 0;
88 BOOL ret = ::ReadFile (
96 dwNumberOfBytesRead = (DWORD)-1;
99 return dwNumberOfBytesRead;
104 DWORD dwNumberOfBytesWritten = 0;
106 BOOL ret = ::WriteFile (
110 &dwNumberOfBytesWritten,
114 dwNumberOfBytesWritten = (DWORD)-1;
117 return dwNumberOfBytesWritten;
122 return ::FlushFileBuffers (
_hObject);
127 return ::WaitForSingleObject (
_hObject, dwWaitTime);
BOOL DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpvReserved)
WindowsAPIを集約したプロジェクトファイル
HANDLE _hObject
ハンドルを使用するWindowsAPIで保持するHANDLE値
HANDLE APIENTRY GetHandle() const
継承先はこの関数でハンドルを取得します。
APIENTRY ~HandleLibrary()
デストラクタ
APIENTRY HandleLibrary()
コンストラクタ
BOOL APIENTRY Close()
使用しなくなったハンドルはこれでクローズします。
BOOL APIENTRY Flush() const
まだデバイスに出力されていないデータを吐き出させます。
DWORD APIENTRY Read(LPVOID lpvBuffer, DWORD dwSize) const
HANDLEを使ってデータを読み込みます。
DWORD APIENTRY Write(LPCVOID lpcvBuffer, DWORD dwSize) const
HANDLEを使ってデータを書き込みます。
DWORD APIENTRY Wait(DWORD dwWaitTime=INFINITE) const
シグナル状態になるとブロックを解除します。
virtual VOID APIENTRY SetErrNo()
WINAPIエラーの情報を設定します。