FreeRDP
Loading...
Searching...
No Matches
io/io.c
1
20#include <winpr/config.h>
21
22#include <winpr/io.h>
23
24#ifndef _WIN32
25
26#ifdef WINPR_HAVE_UNISTD_H
27#include <unistd.h>
28#endif
29
30#include <time.h>
31#include <errno.h>
32#include <stdio.h>
33#include <stdlib.h>
34#include <string.h>
35#include <dirent.h>
36
37#include <fcntl.h>
38#include <sys/un.h>
39#include <sys/stat.h>
40#include <sys/socket.h>
41
42#include <winpr/crt.h>
43#include <winpr/wlog.h>
44
45#include "../handle/handle.h"
46#include "../pipe/pipe.h"
47#include "../log.h"
48
49#define TAG WINPR_TAG("io")
50
51BOOL GetOverlappedResult(WINPR_ATTR_UNUSED HANDLE hFile,
52 WINPR_ATTR_UNUSED LPOVERLAPPED lpOverlapped,
53 WINPR_ATTR_UNUSED LPDWORD lpNumberOfBytesTransferred,
54 WINPR_ATTR_UNUSED BOOL bWait)
55{
56 WLog_ERR(TAG, "Not implemented");
57 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
58 return FALSE;
59}
60
61BOOL GetOverlappedResultEx(WINPR_ATTR_UNUSED HANDLE hFile,
62 WINPR_ATTR_UNUSED LPOVERLAPPED lpOverlapped,
63 WINPR_ATTR_UNUSED LPDWORD lpNumberOfBytesTransferred,
64 WINPR_ATTR_UNUSED DWORD dwMilliseconds,
65 WINPR_ATTR_UNUSED BOOL bAlertable)
66{
67 WLog_ERR(TAG, "Not implemented");
68 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
69 return FALSE;
70}
71
72BOOL DeviceIoControl(WINPR_ATTR_UNUSED HANDLE hDevice, WINPR_ATTR_UNUSED DWORD dwIoControlCode,
73 WINPR_ATTR_UNUSED LPVOID lpInBuffer, WINPR_ATTR_UNUSED DWORD nInBufferSize,
74 WINPR_ATTR_UNUSED LPVOID lpOutBuffer, WINPR_ATTR_UNUSED DWORD nOutBufferSize,
75 WINPR_ATTR_UNUSED LPDWORD lpBytesReturned,
76 WINPR_ATTR_UNUSED LPOVERLAPPED lpOverlapped)
77{
78 WLog_ERR(TAG, "Not implemented");
79 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
80 return FALSE;
81}
82
83HANDLE CreateIoCompletionPort(WINPR_ATTR_UNUSED HANDLE FileHandle,
84 WINPR_ATTR_UNUSED HANDLE ExistingCompletionPort,
85 WINPR_ATTR_UNUSED ULONG_PTR CompletionKey,
86 WINPR_ATTR_UNUSED DWORD NumberOfConcurrentThreads)
87{
88 WLog_ERR(TAG, "Not implemented");
89 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
90 return NULL;
91}
92
93BOOL GetQueuedCompletionStatus(WINPR_ATTR_UNUSED HANDLE CompletionPort,
94 WINPR_ATTR_UNUSED LPDWORD lpNumberOfBytesTransferred,
95 WINPR_ATTR_UNUSED PULONG_PTR lpCompletionKey,
96 WINPR_ATTR_UNUSED LPOVERLAPPED* lpOverlapped,
97 WINPR_ATTR_UNUSED DWORD dwMilliseconds)
98{
99 WLog_ERR(TAG, "Not implemented");
100 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
101 return FALSE;
102}
103
104BOOL GetQueuedCompletionStatusEx(WINPR_ATTR_UNUSED HANDLE CompletionPort,
105 WINPR_ATTR_UNUSED LPOVERLAPPED_ENTRY lpCompletionPortEntries,
106 WINPR_ATTR_UNUSED ULONG ulCount,
107 WINPR_ATTR_UNUSED PULONG ulNumEntriesRemoved,
108 WINPR_ATTR_UNUSED DWORD dwMilliseconds,
109 WINPR_ATTR_UNUSED BOOL fAlertable)
110{
111 WLog_ERR(TAG, "Not implemented");
112 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
113 return FALSE;
114}
115
116BOOL PostQueuedCompletionStatus(WINPR_ATTR_UNUSED HANDLE CompletionPort,
117 WINPR_ATTR_UNUSED DWORD dwNumberOfBytesTransferred,
118 WINPR_ATTR_UNUSED ULONG_PTR dwCompletionKey,
119 WINPR_ATTR_UNUSED LPOVERLAPPED lpOverlapped)
120{
121 WLog_ERR(TAG, "Not implemented");
122 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
123 return FALSE;
124}
125
126BOOL CancelIo(WINPR_ATTR_UNUSED HANDLE hFile)
127{
128 WLog_ERR(TAG, "Not implemented");
129 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
130 return FALSE;
131}
132
133BOOL CancelIoEx(WINPR_ATTR_UNUSED HANDLE hFile, WINPR_ATTR_UNUSED LPOVERLAPPED lpOverlapped)
134{
135 WLog_ERR(TAG, "Not implemented");
136 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
137 return FALSE;
138}
139
140BOOL CancelSynchronousIo(WINPR_ATTR_UNUSED HANDLE hThread)
141{
142 WLog_ERR(TAG, "Not implemented");
143 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
144 return FALSE;
145}
146
147#endif
148
149#ifdef _UWP
150
151#include <winpr/crt.h>
152#include <winpr/wlog.h>
153
154#include "../log.h"
155
156#define TAG WINPR_TAG("io")
157
158BOOL GetOverlappedResult(HANDLE hFile, LPOVERLAPPED lpOverlapped,
159 LPDWORD lpNumberOfBytesTransferred, BOOL bWait)
160{
161 return GetOverlappedResultEx(hFile, lpOverlapped, lpNumberOfBytesTransferred,
162 bWait ? INFINITE : 0, TRUE);
163}
164
165BOOL DeviceIoControl(HANDLE hDevice, DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize,
166 LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned,
167 LPOVERLAPPED lpOverlapped)
168{
169 WLog_ERR(TAG, "Not implemented");
170 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
171 return FALSE;
172}
173
174HANDLE CreateIoCompletionPort(HANDLE FileHandle, HANDLE ExistingCompletionPort,
175 ULONG_PTR CompletionKey, DWORD NumberOfConcurrentThreads)
176{
177 WLog_ERR(TAG, "Not implemented");
178 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
179 return NULL;
180}
181
182BOOL GetQueuedCompletionStatus(HANDLE CompletionPort, LPDWORD lpNumberOfBytesTransferred,
183 PULONG_PTR lpCompletionKey, LPOVERLAPPED* lpOverlapped,
184 DWORD dwMilliseconds)
185{
186 WLog_ERR(TAG, "Not implemented");
187 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
188 return FALSE;
189}
190
191BOOL GetQueuedCompletionStatusEx(HANDLE CompletionPort, LPOVERLAPPED_ENTRY lpCompletionPortEntries,
192 ULONG ulCount, PULONG ulNumEntriesRemoved, DWORD dwMilliseconds,
193 BOOL fAlertable)
194{
195 WLog_ERR(TAG, "Not implemented");
196 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
197 return FALSE;
198}
199
200BOOL PostQueuedCompletionStatus(HANDLE CompletionPort, DWORD dwNumberOfBytesTransferred,
201 ULONG_PTR dwCompletionKey, LPOVERLAPPED lpOverlapped)
202{
203 WLog_ERR(TAG, "Not implemented");
204 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
205 return FALSE;
206}
207
208BOOL CancelIo(HANDLE hFile)
209{
210 return CancelIoEx(hFile, NULL);
211}
212
213BOOL CancelSynchronousIo(HANDLE hThread)
214{
215 WLog_ERR(TAG, "Not implemented");
216 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
217 return FALSE;
218}
219
220#endif