OSDN Git Service

Modify documents.
[ffftp/ffftp.git] / putty / iowrapper.h
1 // iowrapper.h\r
2 // Copyright (C) 2011 Suguru Kawamoto\r
3 // 標準入出力APIラッパー\r
4 \r
5 #ifndef __IOWRAPPER_H__\r
6 #define __IOWRAPPER_H__\r
7 \r
8 #include <stdio.h>\r
9 #include <windows.h>\r
10 \r
11 #ifndef DO_NOT_REPLACE\r
12 \r
13 #undef GetStdHandle\r
14 #define GetStdHandle GetStdHandleX\r
15 HANDLE GetStdHandleX(DWORD nStdHandle);\r
16 #undef GetConsoleMode\r
17 #define GetConsoleMode GetConsoleModeX\r
18 BOOL GetConsoleModeX(HANDLE hConsoleHandle, LPDWORD lpMode);\r
19 #undef SetConsoleMode\r
20 #define SetConsoleMode SetConsoleModeX\r
21 BOOL SetConsoleModeX(HANDLE hConsoleHandle, DWORD dwMode);\r
22 #undef ReadFile\r
23 #define ReadFile ReadFileX\r
24 BOOL ReadFileX(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped);\r
25 #undef WriteFile\r
26 #define WriteFile WriteFileX\r
27 BOOL WriteFileX(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped);\r
28 #undef printf\r
29 #define printf printfX\r
30 int printfX(const char * _Format, ...);\r
31 #undef gets\r
32 #define gets getsX\r
33 char * getsX(char * _Buffer);\r
34 #undef puts\r
35 #define puts putsX\r
36 int putsX(const char * _Str);\r
37 #undef fprintf\r
38 #define fprintf fprintfX\r
39 int fprintfX(FILE * _File, const char * _Format, ...);\r
40 #undef fgets\r
41 #define fgets fgetsX\r
42 char * fgetsX(char * _Buf, int _MaxCount, FILE * _File);\r
43 #undef fputs\r
44 #define fputs fputsX\r
45 int fputsX(const char * _Str, FILE * _File);\r
46 #undef exit\r
47 #define exit exitX\r
48 void exitX(int _Code);\r
49 \r
50 #endif\r
51 \r
52 typedef BOOL (__stdcall* LPSFTPTIMEOUTCALLBACK)(BOOL*);\r
53 \r
54 typedef struct\r
55 {\r
56         CRITICAL_SECTION Lock;\r
57         BYTE* pBuffer;\r
58         size_t Length;\r
59         size_t Written;\r
60         size_t Read;\r
61         BOOL bAborted;\r
62         LPSFTPTIMEOUTCALLBACK pCallback;\r
63 } SFTPIOBUFFER;\r
64 \r
65 typedef struct\r
66 {\r
67         DWORD ThreadId;\r
68         BOOL bExit;\r
69         LPSFTPTIMEOUTCALLBACK pCallback;\r
70         SFTPIOBUFFER InBuffer;\r
71         SFTPIOBUFFER OutBuffer;\r
72         SFTPIOBUFFER DataInBuffer;\r
73         SFTPIOBUFFER DataOutBuffer;\r
74         LARGE_INTEGER FilePosition;\r
75 } SFTPSTATUS;\r
76 \r
77 DWORD WINAPI SFTP_ThreadProc(LPVOID lpParameter);\r
78 SFTPSTATUS* FindSFTPStatus(DWORD ThreadId);\r
79 BOOL SFTP_InitializeIOBuffer(SFTPIOBUFFER* pIO, size_t Length);\r
80 void SFTP_UninitializeIOBuffer(SFTPIOBUFFER* pIO);\r
81 void SFTP_AbortIOBuffer(SFTPIOBUFFER* pIO, BOOL bAborted);\r
82 size_t SFTP_PeekIOBuffer(SFTPIOBUFFER* pIO, void* pBuffer, size_t Size);\r
83 size_t SFTP_ReadIOBuffer(SFTPIOBUFFER* pIO, void* pBuffer, size_t Size);\r
84 size_t SFTP_WriteIOBuffer(SFTPIOBUFFER* pIO, const void* pBuffer, size_t Size);\r
85 size_t SFTP_ReadIOBufferLine(SFTPIOBUFFER* pIO, void* pBuffer, size_t Size);\r
86 size_t SFTP_PeekThreadIO(void* pBuffer, size_t Size);\r
87 size_t SFTP_ReadThreadIO(void* pBuffer, size_t Size);\r
88 size_t SFTP_WriteThreadIO(const void* pBuffer, size_t Size);\r
89 size_t SFTP_ReadThreadIOLine(void* pBuffer, size_t Size);\r
90 size_t SFTP_PeekThreadDataIO(void* pBuffer, size_t Size);\r
91 size_t SFTP_ReadThreadDataIO(void* pBuffer, size_t Size);\r
92 size_t SFTP_WriteThreadDataIO(const void* pBuffer, size_t Size);\r
93 BOOL SFTP_GetThreadFilePositon(DWORD* pLow, LONG* pHigh);\r
94 \r
95 #endif\r
96 \r