#pragma once class CFindFile { public: CFindFile() : m_hFind(INVALID_HANDLE_VALUE) {} ~CFindFile(); public: BOOL First(PCTSTR pcszFileName); BOOL Next(); PWIN32_FIND_DATA Found(); protected: HANDLE m_hFind; WIN32_FIND_DATA m_FindData; }; void xGetOverlappedResult( HANDLE hFile, LPOVERLAPPED lpOverlapped, LPDWORD lpNumberOfBytesTransferred, BOOL bWait); HANDLE xCreateFile( PCTSTR pcszFileName, // file name DWORD dwDesiredAccess, // access mode DWORD dwShareMode, // share mode PSECURITY_ATTRIBUTES pSecurityAttributes, // SD DWORD dwCreationDisposition, // how to create DWORD dwFlagsAndAttributes, // file attributes HANDLE hTemplateFile); // handle to template file void xCloseHandle( HANDLE hObject); // handle to object BOOL xReadFile( HANDLE hFile, // handle to file PVOID pBuffer, // data buffer DWORD dwNumberOfBytesToRead, // number of bytes to read PDWORD pdwNumberOfBytesRead, // number of bytes read LPOVERLAPPED pOverlapped); // overlapped buffer void xReadFileWithAbort( HANDLE hFile, // handle to file PVOID pBuffer, // data buffer DWORD dwNumberOfBytesToRead, // number of bytes to read PDWORD pdwNumberOfBytesRead, // number of bytes read LPOVERLAPPED pOverlapped, // overlapped buffer HANDLE hAbort); // Handle to manual reset abort event BOOL xWriteFile( HANDLE hFile, // handle to file LPCVOID pBuffer, // data buffer DWORD dwNumberOfBytesToWrite, // number of bytes to write PDWORD pdwNumberOfBytesWritten, // number of bytes written LPOVERLAPPED pOverlapped); // overlapped buffer void xWriteFileWithAbort( HANDLE hFile, // handle to file LPCVOID pBuffer, // data buffer DWORD dwNumberOfBytesToWrite, // number of bytes to write PDWORD pdwNumberOfBytesWritten, // number of bytes written LPOVERLAPPED pOverlapped, // overlapped buffer HANDLE hAbort); // Handle to manual reset abort event void xGetCommState( HANDLE hFile, // handle to communications device LPDCB pDCB); // device-control block void xSetCommState( HANDLE hFile, // handle to communications device LPDCB pDCB); // device-control block void xGetCommTimeouts( HANDLE hFile, // handle to comm device LPCOMMTIMEOUTS pCommTimeouts); // time-out values void xSetCommTimeouts( HANDLE hFile, // handle to comm device LPCOMMTIMEOUTS pCommTimeouts); // time-out values void xSetCommMask( HANDLE hFile, // handle to communications device DWORD dwEvtMask); // mask that identifies enabled events void xGetCommMask( HANDLE hFile, // handle to communications device PDWORD pdwEvtMask); // mask that identifies enabled events BOOL xWaitCommEvent( HANDLE hFile, // handle to comm device PDWORD pdwEvtMask, // event type LPOVERLAPPED pOverlapped); // overlapped structure void xWaitCommEventWithAbort( HANDLE hFile, // handle to comm device PDWORD pdwEvtMask, // event type LPOVERLAPPED pOverlapped, // overlapped structure HANDLE hAbort); // Manual reset abort event void xEscapeCommFunction( HANDLE hFile, // handle to communications device DWORD dwFunc); // extended function to perform void xClearCommBreak( HANDLE hFile); // handle to communications device void xClearCommError( HANDLE hFile, // handle to communications device PDWORD pdwErrors, // error codes LPCOMSTAT pStat); // communications status void xBuildCommDCB( PCTSTR pcszDef, // device-control string LPDCB lpDCB); // device-control block void xTransmitCommChar( HANDLE hFile, char cChar); HANDLE xCreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD DWORD dwStackSize, // initial stack size LPTHREAD_START_ROUTINE lpStartAddress, // thread function LPVOID lpParameter, // thread argument DWORD dwCreationFlags, // creation option LPDWORD lpThreadId); // thread identifier void xTerminateThread( HANDLE hThread, // handle to thread DWORD dwExitCode); // exit code UINT_PTR xSetTimer( HWND hWnd, // handle to window UINT_PTR nIDEvent, // timer identifier UINT uElapse, // time-out value TIMERPROC lpTimerFunc); // timer procedure void xKillTimer( HWND hWnd, // handle to window UINT_PTR uIDEvent); // timer identifier void xFillConsoleOutputAttribute( HANDLE hConsoleOutput, // handle to screen buffer WORD wAttribute, // color attribute DWORD nLength, // number of cells COORD dwWriteCoord, // first coordinates LPDWORD lpNumberOfAttrsWritten // number of cells written ); void xFillConsoleOutputCharacter( HANDLE hConsoleOutput, // handle to screen buffer TCHAR cCharacter, // character DWORD nLength, // number of cells COORD dwWriteCoord, // first coordinates LPDWORD lpNumberOfCharsWritten // number of cells written ); void xGetConsoleScreenBufferInfo( HANDLE hConsoleOutput, // handle to screen buffer PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo // screen buffer information ); DWORD xGetConsoleTitle( LPTSTR lpConsoleTitle, // console title DWORD nSize // size of title buffer ); COORD xGetLargestConsoleWindowSize( HANDLE hConsoleOutput // handle to screen buffer ); HANDLE xGetStdHandle( DWORD nStdHandle = STD_OUTPUT_HANDLE);// Input, output or error device void xReadConsoleOutputAttribute( HANDLE hConsoleOutput, // handle to screen buffer LPWORD lpAttribute, // attributes buffer DWORD nLength, // number of cells to read COORD dwReadCoord, // coordinates of first cell LPDWORD lpNumberOfAttrsRead // number of cells read ); void xReadConsoleOutputCharacter( HANDLE hConsoleOutput, // handle to screen buffer LPTSTR lpCharacter, // character buffer DWORD nLength, // number of cells to read COORD dwReadCoord, // coordinates of first cell LPDWORD lpNumberOfCharsRead // number of cells read ); void xSetConsoleScreenBufferSize( HANDLE hConsoleOutput, // handle to screen buffer COORD dwSize // new screen buffer size ); void xSetConsoleTextAttribute( HANDLE hConsoleOutput, // handle to screen buffer WORD wAttributes // text and background colors ); void xSetConsoleTitle( LPCTSTR lpConsoleTitle // new console title ); void xSetConsoleWindowInfo( HANDLE hConsoleOutput, // handle to screen buffer BOOL bAbsolute, // coordinate type CONST SMALL_RECT *lpConsoleWindow // window corners ); void xWriteConsole( HANDLE hConsoleOutput, // handle to screen buffer CONST VOID *lpBuffer, // write buffer DWORD nNumberOfCharsToWrite, // number of characters to write LPDWORD lpNumberOfCharsWritten, // number of characters written LPVOID lpReserved // reserved ); void xWriteConsoleOutputAttribute( HANDLE hConsoleOutput, // handle to screen buffer CONST WORD *lpAttribute, // write attributes DWORD nLength, // number of cells COORD dwWriteCoord, // first cell coordinates LPDWORD lpNumberOfAttrsWritten // number of cells written ); void xWriteConsoleOutputCharacter( HANDLE hConsoleOutput, // handle to screen buffer LPCTSTR lpCharacter, // characters DWORD nLength, // number of characters to write COORD dwWriteCoord, // first cell coordinates LPDWORD lpNumberOfCharsWritten // number of cells written ); HANDLE xCreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // SD BOOL bManualReset, // reset type BOOL bInitialState, // initial state LPCTSTR lpName); // object name void xSetEvent( HANDLE hEvent); void xResetEvent( HANDLE hEvent); DWORD xWaitForMultipleObjects( DWORD nCount, // number of handles in array CONST HANDLE *lpHandles, // object-handle array BOOL fWaitAll, // wait option DWORD dwMilliseconds); // time-out interval DWORD xWaitForSingleObject( HANDLE hHandle, // handle to object DWORD dwMilliseconds); // time-out interval PWSTR xMultiByteToWideChar( UINT CodePage, // code page DWORD dwFlags, // performance and mapping flags LPCSTR lpMultiByteStr); // wide-character string PSTR xWideCharToMultiByte( UINT CodePage, // code page DWORD dwFlags, // performance and mapping flags LPCWSTR lpWideCharStr); // wide-character string PWSTR xMakeWideChar( PTSTR pcszInput); PSTR xMakeMultiByte( PTSTR pcszInput); PTSTR xMakeDefaultChar( PWSTR pcszInput); PTSTR xMakeDefaultChar( PSTR pcszInput); DWORD xGetModuleFileName( HMODULE hModule, // handle to module LPTSTR lpFilename, // file name of module DWORD nSize // size of buffer ); HANDLE xFindFirstFile( LPCTSTR lpFileName, // file name LPWIN32_FIND_DATA lpFindFileData);// data buffer BOOL xFindNextFile( HANDLE hFindFile, // search handle LPWIN32_FIND_DATA lpFindFileData);// data buffer HMODULE xLoadLibrary( LPCTSTR lpFileName); // file name of module FARPROC xGetProcAddress( HMODULE hModule, LPCSTR lpProcName); HANDLE xCreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes, // SD BOOL bInitialOwner, // initial owner LPCTSTR lpName); // object name void xReleaseMutex( HANDLE hMutex);