blob: 2b8deeab2ba1cf4ae2ad15fa717efc867e09e231 [file] [log] [blame]
Zachary Waref2244ea2015-05-13 01:22:54 -05001/*[clinic input]
2preserve
3[clinic start generated code]*/
4
5PyDoc_STRVAR(_winapi_Overlapped_GetOverlappedResult__doc__,
6"GetOverlappedResult($self, wait, /)\n"
7"--\n"
8"\n");
9
10#define _WINAPI_OVERLAPPED_GETOVERLAPPEDRESULT_METHODDEF \
11 {"GetOverlappedResult", (PyCFunction)_winapi_Overlapped_GetOverlappedResult, METH_O, _winapi_Overlapped_GetOverlappedResult__doc__},
12
13static PyObject *
14_winapi_Overlapped_GetOverlappedResult_impl(OverlappedObject *self, int wait);
15
16static PyObject *
17_winapi_Overlapped_GetOverlappedResult(OverlappedObject *self, PyObject *arg)
18{
19 PyObject *return_value = NULL;
20 int wait;
21
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030022 if (!PyArg_Parse(arg, "p:GetOverlappedResult", &wait)) {
Zachary Waref2244ea2015-05-13 01:22:54 -050023 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030024 }
Zachary Waref2244ea2015-05-13 01:22:54 -050025 return_value = _winapi_Overlapped_GetOverlappedResult_impl(self, wait);
26
27exit:
28 return return_value;
29}
30
31PyDoc_STRVAR(_winapi_Overlapped_getbuffer__doc__,
32"getbuffer($self, /)\n"
33"--\n"
34"\n");
35
36#define _WINAPI_OVERLAPPED_GETBUFFER_METHODDEF \
37 {"getbuffer", (PyCFunction)_winapi_Overlapped_getbuffer, METH_NOARGS, _winapi_Overlapped_getbuffer__doc__},
38
39static PyObject *
40_winapi_Overlapped_getbuffer_impl(OverlappedObject *self);
41
42static PyObject *
43_winapi_Overlapped_getbuffer(OverlappedObject *self, PyObject *Py_UNUSED(ignored))
44{
45 return _winapi_Overlapped_getbuffer_impl(self);
46}
47
48PyDoc_STRVAR(_winapi_Overlapped_cancel__doc__,
49"cancel($self, /)\n"
50"--\n"
51"\n");
52
53#define _WINAPI_OVERLAPPED_CANCEL_METHODDEF \
54 {"cancel", (PyCFunction)_winapi_Overlapped_cancel, METH_NOARGS, _winapi_Overlapped_cancel__doc__},
55
56static PyObject *
57_winapi_Overlapped_cancel_impl(OverlappedObject *self);
58
59static PyObject *
60_winapi_Overlapped_cancel(OverlappedObject *self, PyObject *Py_UNUSED(ignored))
61{
62 return _winapi_Overlapped_cancel_impl(self);
63}
64
65PyDoc_STRVAR(_winapi_CloseHandle__doc__,
66"CloseHandle($module, handle, /)\n"
67"--\n"
68"\n"
69"Close handle.");
70
71#define _WINAPI_CLOSEHANDLE_METHODDEF \
72 {"CloseHandle", (PyCFunction)_winapi_CloseHandle, METH_O, _winapi_CloseHandle__doc__},
73
74static PyObject *
75_winapi_CloseHandle_impl(PyModuleDef *module, HANDLE handle);
76
77static PyObject *
78_winapi_CloseHandle(PyModuleDef *module, PyObject *arg)
79{
80 PyObject *return_value = NULL;
81 HANDLE handle;
82
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030083 if (!PyArg_Parse(arg, "" F_HANDLE ":CloseHandle", &handle)) {
Zachary Waref2244ea2015-05-13 01:22:54 -050084 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030085 }
Zachary Waref2244ea2015-05-13 01:22:54 -050086 return_value = _winapi_CloseHandle_impl(module, handle);
87
88exit:
89 return return_value;
90}
91
92PyDoc_STRVAR(_winapi_ConnectNamedPipe__doc__,
93"ConnectNamedPipe($module, /, handle, overlapped=False)\n"
94"--\n"
95"\n");
96
97#define _WINAPI_CONNECTNAMEDPIPE_METHODDEF \
98 {"ConnectNamedPipe", (PyCFunction)_winapi_ConnectNamedPipe, METH_VARARGS|METH_KEYWORDS, _winapi_ConnectNamedPipe__doc__},
99
100static PyObject *
Zachary Ware77772c02015-05-13 10:58:35 -0500101_winapi_ConnectNamedPipe_impl(PyModuleDef *module, HANDLE handle,
102 int use_overlapped);
Zachary Waref2244ea2015-05-13 01:22:54 -0500103
104static PyObject *
105_winapi_ConnectNamedPipe(PyModuleDef *module, PyObject *args, PyObject *kwargs)
106{
107 PyObject *return_value = NULL;
108 static char *_keywords[] = {"handle", "overlapped", NULL};
109 HANDLE handle;
110 int use_overlapped = 0;
111
Zachary Ware77772c02015-05-13 10:58:35 -0500112 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "" F_HANDLE "|i:ConnectNamedPipe", _keywords,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300113 &handle, &use_overlapped)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500114 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300115 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500116 return_value = _winapi_ConnectNamedPipe_impl(module, handle, use_overlapped);
117
118exit:
119 return return_value;
120}
121
122PyDoc_STRVAR(_winapi_CreateFile__doc__,
123"CreateFile($module, file_name, desired_access, share_mode,\n"
124" security_attributes, creation_disposition,\n"
125" flags_and_attributes, template_file, /)\n"
126"--\n"
127"\n");
128
129#define _WINAPI_CREATEFILE_METHODDEF \
130 {"CreateFile", (PyCFunction)_winapi_CreateFile, METH_VARARGS, _winapi_CreateFile__doc__},
131
132static HANDLE
Zachary Ware77772c02015-05-13 10:58:35 -0500133_winapi_CreateFile_impl(PyModuleDef *module, LPCTSTR file_name,
134 DWORD desired_access, DWORD share_mode,
135 LPSECURITY_ATTRIBUTES security_attributes,
136 DWORD creation_disposition,
137 DWORD flags_and_attributes, HANDLE template_file);
Zachary Waref2244ea2015-05-13 01:22:54 -0500138
139static PyObject *
140_winapi_CreateFile(PyModuleDef *module, PyObject *args)
141{
142 PyObject *return_value = NULL;
143 LPCTSTR file_name;
144 DWORD desired_access;
145 DWORD share_mode;
146 LPSECURITY_ATTRIBUTES security_attributes;
147 DWORD creation_disposition;
148 DWORD flags_and_attributes;
149 HANDLE template_file;
150 HANDLE _return_value;
151
Zachary Ware77772c02015-05-13 10:58:35 -0500152 if (!PyArg_ParseTuple(args, "skk" F_POINTER "kk" F_HANDLE ":CreateFile",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300153 &file_name, &desired_access, &share_mode, &security_attributes, &creation_disposition, &flags_and_attributes, &template_file)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500154 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300155 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500156 _return_value = _winapi_CreateFile_impl(module, file_name, desired_access, share_mode, security_attributes, creation_disposition, flags_and_attributes, template_file);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300157 if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500158 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300159 }
160 if (_return_value == NULL) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500161 Py_RETURN_NONE;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300162 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500163 return_value = HANDLE_TO_PYNUM(_return_value);
164
165exit:
166 return return_value;
167}
168
169PyDoc_STRVAR(_winapi_CreateJunction__doc__,
170"CreateJunction($module, src_path, dst_path, /)\n"
171"--\n"
172"\n");
173
174#define _WINAPI_CREATEJUNCTION_METHODDEF \
175 {"CreateJunction", (PyCFunction)_winapi_CreateJunction, METH_VARARGS, _winapi_CreateJunction__doc__},
176
177static PyObject *
Zachary Ware77772c02015-05-13 10:58:35 -0500178_winapi_CreateJunction_impl(PyModuleDef *module, LPWSTR src_path,
179 LPWSTR dst_path);
Zachary Waref2244ea2015-05-13 01:22:54 -0500180
181static PyObject *
182_winapi_CreateJunction(PyModuleDef *module, PyObject *args)
183{
184 PyObject *return_value = NULL;
185 LPWSTR src_path;
186 LPWSTR dst_path;
187
Zachary Ware77772c02015-05-13 10:58:35 -0500188 if (!PyArg_ParseTuple(args, "uu:CreateJunction",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300189 &src_path, &dst_path)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500190 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300191 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500192 return_value = _winapi_CreateJunction_impl(module, src_path, dst_path);
193
194exit:
195 return return_value;
196}
197
198PyDoc_STRVAR(_winapi_CreateNamedPipe__doc__,
199"CreateNamedPipe($module, name, open_mode, pipe_mode, max_instances,\n"
200" out_buffer_size, in_buffer_size, default_timeout,\n"
201" security_attributes, /)\n"
202"--\n"
203"\n");
204
205#define _WINAPI_CREATENAMEDPIPE_METHODDEF \
206 {"CreateNamedPipe", (PyCFunction)_winapi_CreateNamedPipe, METH_VARARGS, _winapi_CreateNamedPipe__doc__},
207
208static HANDLE
Zachary Ware77772c02015-05-13 10:58:35 -0500209_winapi_CreateNamedPipe_impl(PyModuleDef *module, LPCTSTR name,
210 DWORD open_mode, DWORD pipe_mode,
211 DWORD max_instances, DWORD out_buffer_size,
212 DWORD in_buffer_size, DWORD default_timeout,
213 LPSECURITY_ATTRIBUTES security_attributes);
Zachary Waref2244ea2015-05-13 01:22:54 -0500214
215static PyObject *
216_winapi_CreateNamedPipe(PyModuleDef *module, PyObject *args)
217{
218 PyObject *return_value = NULL;
219 LPCTSTR name;
220 DWORD open_mode;
221 DWORD pipe_mode;
222 DWORD max_instances;
223 DWORD out_buffer_size;
224 DWORD in_buffer_size;
225 DWORD default_timeout;
226 LPSECURITY_ATTRIBUTES security_attributes;
227 HANDLE _return_value;
228
Zachary Ware77772c02015-05-13 10:58:35 -0500229 if (!PyArg_ParseTuple(args, "skkkkkk" F_POINTER ":CreateNamedPipe",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300230 &name, &open_mode, &pipe_mode, &max_instances, &out_buffer_size, &in_buffer_size, &default_timeout, &security_attributes)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500231 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300232 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500233 _return_value = _winapi_CreateNamedPipe_impl(module, name, open_mode, pipe_mode, max_instances, out_buffer_size, in_buffer_size, default_timeout, security_attributes);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300234 if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500235 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300236 }
237 if (_return_value == NULL) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500238 Py_RETURN_NONE;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300239 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500240 return_value = HANDLE_TO_PYNUM(_return_value);
241
242exit:
243 return return_value;
244}
245
246PyDoc_STRVAR(_winapi_CreatePipe__doc__,
247"CreatePipe($module, pipe_attrs, size, /)\n"
248"--\n"
249"\n"
250"Create an anonymous pipe.\n"
251"\n"
252" pipe_attrs\n"
253" Ignored internally, can be None.\n"
254"\n"
255"Returns a 2-tuple of handles, to the read and write ends of the pipe.");
256
257#define _WINAPI_CREATEPIPE_METHODDEF \
258 {"CreatePipe", (PyCFunction)_winapi_CreatePipe, METH_VARARGS, _winapi_CreatePipe__doc__},
259
260static PyObject *
Zachary Ware77772c02015-05-13 10:58:35 -0500261_winapi_CreatePipe_impl(PyModuleDef *module, PyObject *pipe_attrs,
262 DWORD size);
Zachary Waref2244ea2015-05-13 01:22:54 -0500263
264static PyObject *
265_winapi_CreatePipe(PyModuleDef *module, PyObject *args)
266{
267 PyObject *return_value = NULL;
268 PyObject *pipe_attrs;
269 DWORD size;
270
Zachary Ware77772c02015-05-13 10:58:35 -0500271 if (!PyArg_ParseTuple(args, "Ok:CreatePipe",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300272 &pipe_attrs, &size)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500273 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300274 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500275 return_value = _winapi_CreatePipe_impl(module, pipe_attrs, size);
276
277exit:
278 return return_value;
279}
280
281PyDoc_STRVAR(_winapi_CreateProcess__doc__,
282"CreateProcess($module, application_name, command_line, proc_attrs,\n"
283" thread_attrs, inherit_handles, creation_flags,\n"
284" env_mapping, current_directory, startup_info, /)\n"
285"--\n"
286"\n"
287"Create a new process and its primary thread.\n"
288"\n"
289" proc_attrs\n"
290" Ignored internally, can be None.\n"
291" thread_attrs\n"
292" Ignored internally, can be None.\n"
293"\n"
294"The return value is a tuple of the process handle, thread handle,\n"
295"process ID, and thread ID.");
296
297#define _WINAPI_CREATEPROCESS_METHODDEF \
298 {"CreateProcess", (PyCFunction)_winapi_CreateProcess, METH_VARARGS, _winapi_CreateProcess__doc__},
299
300static PyObject *
Zachary Ware77772c02015-05-13 10:58:35 -0500301_winapi_CreateProcess_impl(PyModuleDef *module, Py_UNICODE *application_name,
302 Py_UNICODE *command_line, PyObject *proc_attrs,
303 PyObject *thread_attrs, BOOL inherit_handles,
304 DWORD creation_flags, PyObject *env_mapping,
305 Py_UNICODE *current_directory,
306 PyObject *startup_info);
Zachary Waref2244ea2015-05-13 01:22:54 -0500307
308static PyObject *
309_winapi_CreateProcess(PyModuleDef *module, PyObject *args)
310{
311 PyObject *return_value = NULL;
312 Py_UNICODE *application_name;
313 Py_UNICODE *command_line;
314 PyObject *proc_attrs;
315 PyObject *thread_attrs;
316 BOOL inherit_handles;
317 DWORD creation_flags;
318 PyObject *env_mapping;
319 Py_UNICODE *current_directory;
320 PyObject *startup_info;
321
Zachary Ware77772c02015-05-13 10:58:35 -0500322 if (!PyArg_ParseTuple(args, "ZZOOikOZO:CreateProcess",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300323 &application_name, &command_line, &proc_attrs, &thread_attrs, &inherit_handles, &creation_flags, &env_mapping, &current_directory, &startup_info)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500324 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300325 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500326 return_value = _winapi_CreateProcess_impl(module, application_name, command_line, proc_attrs, thread_attrs, inherit_handles, creation_flags, env_mapping, current_directory, startup_info);
327
328exit:
329 return return_value;
330}
331
332PyDoc_STRVAR(_winapi_DuplicateHandle__doc__,
333"DuplicateHandle($module, source_process_handle, source_handle,\n"
334" target_process_handle, desired_access, inherit_handle,\n"
335" options=0, /)\n"
336"--\n"
337"\n"
338"Return a duplicate handle object.\n"
339"\n"
340"The duplicate handle refers to the same object as the original\n"
341"handle. Therefore, any changes to the object are reflected\n"
342"through both handles.");
343
344#define _WINAPI_DUPLICATEHANDLE_METHODDEF \
345 {"DuplicateHandle", (PyCFunction)_winapi_DuplicateHandle, METH_VARARGS, _winapi_DuplicateHandle__doc__},
346
347static HANDLE
Zachary Ware77772c02015-05-13 10:58:35 -0500348_winapi_DuplicateHandle_impl(PyModuleDef *module,
349 HANDLE source_process_handle,
350 HANDLE source_handle,
351 HANDLE target_process_handle,
352 DWORD desired_access, BOOL inherit_handle,
353 DWORD options);
Zachary Waref2244ea2015-05-13 01:22:54 -0500354
355static PyObject *
356_winapi_DuplicateHandle(PyModuleDef *module, PyObject *args)
357{
358 PyObject *return_value = NULL;
359 HANDLE source_process_handle;
360 HANDLE source_handle;
361 HANDLE target_process_handle;
362 DWORD desired_access;
363 BOOL inherit_handle;
364 DWORD options = 0;
365 HANDLE _return_value;
366
Zachary Ware77772c02015-05-13 10:58:35 -0500367 if (!PyArg_ParseTuple(args, "" F_HANDLE "" F_HANDLE "" F_HANDLE "ki|k:DuplicateHandle",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300368 &source_process_handle, &source_handle, &target_process_handle, &desired_access, &inherit_handle, &options)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500369 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300370 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500371 _return_value = _winapi_DuplicateHandle_impl(module, source_process_handle, source_handle, target_process_handle, desired_access, inherit_handle, options);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300372 if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500373 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300374 }
375 if (_return_value == NULL) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500376 Py_RETURN_NONE;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300377 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500378 return_value = HANDLE_TO_PYNUM(_return_value);
379
380exit:
381 return return_value;
382}
383
384PyDoc_STRVAR(_winapi_ExitProcess__doc__,
385"ExitProcess($module, ExitCode, /)\n"
386"--\n"
387"\n");
388
389#define _WINAPI_EXITPROCESS_METHODDEF \
390 {"ExitProcess", (PyCFunction)_winapi_ExitProcess, METH_O, _winapi_ExitProcess__doc__},
391
392static PyObject *
393_winapi_ExitProcess_impl(PyModuleDef *module, UINT ExitCode);
394
395static PyObject *
396_winapi_ExitProcess(PyModuleDef *module, PyObject *arg)
397{
398 PyObject *return_value = NULL;
399 UINT ExitCode;
400
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300401 if (!PyArg_Parse(arg, "I:ExitProcess", &ExitCode)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500402 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300403 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500404 return_value = _winapi_ExitProcess_impl(module, ExitCode);
405
406exit:
407 return return_value;
408}
409
410PyDoc_STRVAR(_winapi_GetCurrentProcess__doc__,
411"GetCurrentProcess($module, /)\n"
412"--\n"
413"\n"
414"Return a handle object for the current process.");
415
416#define _WINAPI_GETCURRENTPROCESS_METHODDEF \
417 {"GetCurrentProcess", (PyCFunction)_winapi_GetCurrentProcess, METH_NOARGS, _winapi_GetCurrentProcess__doc__},
418
419static HANDLE
420_winapi_GetCurrentProcess_impl(PyModuleDef *module);
421
422static PyObject *
423_winapi_GetCurrentProcess(PyModuleDef *module, PyObject *Py_UNUSED(ignored))
424{
425 PyObject *return_value = NULL;
426 HANDLE _return_value;
427
428 _return_value = _winapi_GetCurrentProcess_impl(module);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300429 if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500430 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300431 }
432 if (_return_value == NULL) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500433 Py_RETURN_NONE;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300434 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500435 return_value = HANDLE_TO_PYNUM(_return_value);
436
437exit:
438 return return_value;
439}
440
441PyDoc_STRVAR(_winapi_GetExitCodeProcess__doc__,
442"GetExitCodeProcess($module, process, /)\n"
443"--\n"
444"\n"
445"Return the termination status of the specified process.");
446
447#define _WINAPI_GETEXITCODEPROCESS_METHODDEF \
448 {"GetExitCodeProcess", (PyCFunction)_winapi_GetExitCodeProcess, METH_O, _winapi_GetExitCodeProcess__doc__},
449
450static DWORD
451_winapi_GetExitCodeProcess_impl(PyModuleDef *module, HANDLE process);
452
453static PyObject *
454_winapi_GetExitCodeProcess(PyModuleDef *module, PyObject *arg)
455{
456 PyObject *return_value = NULL;
457 HANDLE process;
458 DWORD _return_value;
459
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300460 if (!PyArg_Parse(arg, "" F_HANDLE ":GetExitCodeProcess", &process)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500461 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300462 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500463 _return_value = _winapi_GetExitCodeProcess_impl(module, process);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300464 if ((_return_value == DWORD_MAX) && PyErr_Occurred()) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500465 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300466 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500467 return_value = Py_BuildValue("k", _return_value);
468
469exit:
470 return return_value;
471}
472
473PyDoc_STRVAR(_winapi_GetLastError__doc__,
474"GetLastError($module, /)\n"
475"--\n"
476"\n");
477
478#define _WINAPI_GETLASTERROR_METHODDEF \
479 {"GetLastError", (PyCFunction)_winapi_GetLastError, METH_NOARGS, _winapi_GetLastError__doc__},
480
481static DWORD
482_winapi_GetLastError_impl(PyModuleDef *module);
483
484static PyObject *
485_winapi_GetLastError(PyModuleDef *module, PyObject *Py_UNUSED(ignored))
486{
487 PyObject *return_value = NULL;
488 DWORD _return_value;
489
490 _return_value = _winapi_GetLastError_impl(module);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300491 if ((_return_value == DWORD_MAX) && PyErr_Occurred()) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500492 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300493 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500494 return_value = Py_BuildValue("k", _return_value);
495
496exit:
497 return return_value;
498}
499
500PyDoc_STRVAR(_winapi_GetModuleFileName__doc__,
501"GetModuleFileName($module, module_handle, /)\n"
502"--\n"
503"\n"
504"Return the fully-qualified path for the file that contains module.\n"
505"\n"
506"The module must have been loaded by the current process.\n"
507"\n"
508"The module parameter should be a handle to the loaded module\n"
509"whose path is being requested. If this parameter is 0,\n"
510"GetModuleFileName retrieves the path of the executable file\n"
511"of the current process.");
512
513#define _WINAPI_GETMODULEFILENAME_METHODDEF \
514 {"GetModuleFileName", (PyCFunction)_winapi_GetModuleFileName, METH_O, _winapi_GetModuleFileName__doc__},
515
516static PyObject *
517_winapi_GetModuleFileName_impl(PyModuleDef *module, HMODULE module_handle);
518
519static PyObject *
520_winapi_GetModuleFileName(PyModuleDef *module, PyObject *arg)
521{
522 PyObject *return_value = NULL;
523 HMODULE module_handle;
524
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300525 if (!PyArg_Parse(arg, "" F_HANDLE ":GetModuleFileName", &module_handle)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500526 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300527 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500528 return_value = _winapi_GetModuleFileName_impl(module, module_handle);
529
530exit:
531 return return_value;
532}
533
534PyDoc_STRVAR(_winapi_GetStdHandle__doc__,
535"GetStdHandle($module, std_handle, /)\n"
536"--\n"
537"\n"
538"Return a handle to the specified standard device.\n"
539"\n"
540" std_handle\n"
541" One of STD_INPUT_HANDLE, STD_OUTPUT_HANDLE, or STD_ERROR_HANDLE.\n"
542"\n"
543"The integer associated with the handle object is returned.");
544
545#define _WINAPI_GETSTDHANDLE_METHODDEF \
546 {"GetStdHandle", (PyCFunction)_winapi_GetStdHandle, METH_O, _winapi_GetStdHandle__doc__},
547
548static HANDLE
549_winapi_GetStdHandle_impl(PyModuleDef *module, DWORD std_handle);
550
551static PyObject *
552_winapi_GetStdHandle(PyModuleDef *module, PyObject *arg)
553{
554 PyObject *return_value = NULL;
555 DWORD std_handle;
556 HANDLE _return_value;
557
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300558 if (!PyArg_Parse(arg, "k:GetStdHandle", &std_handle)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500559 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300560 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500561 _return_value = _winapi_GetStdHandle_impl(module, std_handle);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300562 if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500563 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300564 }
565 if (_return_value == NULL) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500566 Py_RETURN_NONE;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300567 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500568 return_value = HANDLE_TO_PYNUM(_return_value);
569
570exit:
571 return return_value;
572}
573
574PyDoc_STRVAR(_winapi_GetVersion__doc__,
575"GetVersion($module, /)\n"
576"--\n"
577"\n"
578"Return the version number of the current operating system.");
579
580#define _WINAPI_GETVERSION_METHODDEF \
581 {"GetVersion", (PyCFunction)_winapi_GetVersion, METH_NOARGS, _winapi_GetVersion__doc__},
582
583static long
584_winapi_GetVersion_impl(PyModuleDef *module);
585
586static PyObject *
587_winapi_GetVersion(PyModuleDef *module, PyObject *Py_UNUSED(ignored))
588{
589 PyObject *return_value = NULL;
590 long _return_value;
591
592 _return_value = _winapi_GetVersion_impl(module);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300593 if ((_return_value == -1) && PyErr_Occurred()) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500594 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300595 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500596 return_value = PyLong_FromLong(_return_value);
597
598exit:
599 return return_value;
600}
601
602PyDoc_STRVAR(_winapi_OpenProcess__doc__,
603"OpenProcess($module, desired_access, inherit_handle, process_id, /)\n"
604"--\n"
605"\n");
606
607#define _WINAPI_OPENPROCESS_METHODDEF \
608 {"OpenProcess", (PyCFunction)_winapi_OpenProcess, METH_VARARGS, _winapi_OpenProcess__doc__},
609
610static HANDLE
Zachary Ware77772c02015-05-13 10:58:35 -0500611_winapi_OpenProcess_impl(PyModuleDef *module, DWORD desired_access,
612 BOOL inherit_handle, DWORD process_id);
Zachary Waref2244ea2015-05-13 01:22:54 -0500613
614static PyObject *
615_winapi_OpenProcess(PyModuleDef *module, PyObject *args)
616{
617 PyObject *return_value = NULL;
618 DWORD desired_access;
619 BOOL inherit_handle;
620 DWORD process_id;
621 HANDLE _return_value;
622
Zachary Ware77772c02015-05-13 10:58:35 -0500623 if (!PyArg_ParseTuple(args, "kik:OpenProcess",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300624 &desired_access, &inherit_handle, &process_id)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500625 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300626 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500627 _return_value = _winapi_OpenProcess_impl(module, desired_access, inherit_handle, process_id);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300628 if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500629 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300630 }
631 if (_return_value == NULL) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500632 Py_RETURN_NONE;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300633 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500634 return_value = HANDLE_TO_PYNUM(_return_value);
635
636exit:
637 return return_value;
638}
639
640PyDoc_STRVAR(_winapi_PeekNamedPipe__doc__,
641"PeekNamedPipe($module, handle, size=0, /)\n"
642"--\n"
643"\n");
644
645#define _WINAPI_PEEKNAMEDPIPE_METHODDEF \
646 {"PeekNamedPipe", (PyCFunction)_winapi_PeekNamedPipe, METH_VARARGS, _winapi_PeekNamedPipe__doc__},
647
648static PyObject *
649_winapi_PeekNamedPipe_impl(PyModuleDef *module, HANDLE handle, int size);
650
651static PyObject *
652_winapi_PeekNamedPipe(PyModuleDef *module, PyObject *args)
653{
654 PyObject *return_value = NULL;
655 HANDLE handle;
656 int size = 0;
657
Zachary Ware77772c02015-05-13 10:58:35 -0500658 if (!PyArg_ParseTuple(args, "" F_HANDLE "|i:PeekNamedPipe",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300659 &handle, &size)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500660 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300661 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500662 return_value = _winapi_PeekNamedPipe_impl(module, handle, size);
663
664exit:
665 return return_value;
666}
667
668PyDoc_STRVAR(_winapi_ReadFile__doc__,
669"ReadFile($module, /, handle, size, overlapped=False)\n"
670"--\n"
671"\n");
672
673#define _WINAPI_READFILE_METHODDEF \
674 {"ReadFile", (PyCFunction)_winapi_ReadFile, METH_VARARGS|METH_KEYWORDS, _winapi_ReadFile__doc__},
675
676static PyObject *
Zachary Ware77772c02015-05-13 10:58:35 -0500677_winapi_ReadFile_impl(PyModuleDef *module, HANDLE handle, int size,
678 int use_overlapped);
Zachary Waref2244ea2015-05-13 01:22:54 -0500679
680static PyObject *
681_winapi_ReadFile(PyModuleDef *module, PyObject *args, PyObject *kwargs)
682{
683 PyObject *return_value = NULL;
684 static char *_keywords[] = {"handle", "size", "overlapped", NULL};
685 HANDLE handle;
686 int size;
687 int use_overlapped = 0;
688
Zachary Ware77772c02015-05-13 10:58:35 -0500689 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "" F_HANDLE "i|i:ReadFile", _keywords,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300690 &handle, &size, &use_overlapped)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500691 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300692 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500693 return_value = _winapi_ReadFile_impl(module, handle, size, use_overlapped);
694
695exit:
696 return return_value;
697}
698
699PyDoc_STRVAR(_winapi_SetNamedPipeHandleState__doc__,
700"SetNamedPipeHandleState($module, named_pipe, mode,\n"
701" max_collection_count, collect_data_timeout, /)\n"
702"--\n"
703"\n");
704
705#define _WINAPI_SETNAMEDPIPEHANDLESTATE_METHODDEF \
706 {"SetNamedPipeHandleState", (PyCFunction)_winapi_SetNamedPipeHandleState, METH_VARARGS, _winapi_SetNamedPipeHandleState__doc__},
707
708static PyObject *
Zachary Ware77772c02015-05-13 10:58:35 -0500709_winapi_SetNamedPipeHandleState_impl(PyModuleDef *module, HANDLE named_pipe,
710 PyObject *mode,
711 PyObject *max_collection_count,
712 PyObject *collect_data_timeout);
Zachary Waref2244ea2015-05-13 01:22:54 -0500713
714static PyObject *
715_winapi_SetNamedPipeHandleState(PyModuleDef *module, PyObject *args)
716{
717 PyObject *return_value = NULL;
718 HANDLE named_pipe;
719 PyObject *mode;
720 PyObject *max_collection_count;
721 PyObject *collect_data_timeout;
722
Zachary Ware77772c02015-05-13 10:58:35 -0500723 if (!PyArg_ParseTuple(args, "" F_HANDLE "OOO:SetNamedPipeHandleState",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300724 &named_pipe, &mode, &max_collection_count, &collect_data_timeout)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500725 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300726 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500727 return_value = _winapi_SetNamedPipeHandleState_impl(module, named_pipe, mode, max_collection_count, collect_data_timeout);
728
729exit:
730 return return_value;
731}
732
733PyDoc_STRVAR(_winapi_TerminateProcess__doc__,
734"TerminateProcess($module, handle, exit_code, /)\n"
735"--\n"
736"\n"
737"Terminate the specified process and all of its threads.");
738
739#define _WINAPI_TERMINATEPROCESS_METHODDEF \
740 {"TerminateProcess", (PyCFunction)_winapi_TerminateProcess, METH_VARARGS, _winapi_TerminateProcess__doc__},
741
742static PyObject *
Zachary Ware77772c02015-05-13 10:58:35 -0500743_winapi_TerminateProcess_impl(PyModuleDef *module, HANDLE handle,
744 UINT exit_code);
Zachary Waref2244ea2015-05-13 01:22:54 -0500745
746static PyObject *
747_winapi_TerminateProcess(PyModuleDef *module, PyObject *args)
748{
749 PyObject *return_value = NULL;
750 HANDLE handle;
751 UINT exit_code;
752
Zachary Ware77772c02015-05-13 10:58:35 -0500753 if (!PyArg_ParseTuple(args, "" F_HANDLE "I:TerminateProcess",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300754 &handle, &exit_code)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500755 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300756 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500757 return_value = _winapi_TerminateProcess_impl(module, handle, exit_code);
758
759exit:
760 return return_value;
761}
762
763PyDoc_STRVAR(_winapi_WaitNamedPipe__doc__,
764"WaitNamedPipe($module, name, timeout, /)\n"
765"--\n"
766"\n");
767
768#define _WINAPI_WAITNAMEDPIPE_METHODDEF \
769 {"WaitNamedPipe", (PyCFunction)_winapi_WaitNamedPipe, METH_VARARGS, _winapi_WaitNamedPipe__doc__},
770
771static PyObject *
772_winapi_WaitNamedPipe_impl(PyModuleDef *module, LPCTSTR name, DWORD timeout);
773
774static PyObject *
775_winapi_WaitNamedPipe(PyModuleDef *module, PyObject *args)
776{
777 PyObject *return_value = NULL;
778 LPCTSTR name;
779 DWORD timeout;
780
Zachary Ware77772c02015-05-13 10:58:35 -0500781 if (!PyArg_ParseTuple(args, "sk:WaitNamedPipe",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300782 &name, &timeout)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500783 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300784 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500785 return_value = _winapi_WaitNamedPipe_impl(module, name, timeout);
786
787exit:
788 return return_value;
789}
790
791PyDoc_STRVAR(_winapi_WaitForMultipleObjects__doc__,
792"WaitForMultipleObjects($module, handle_seq, wait_flag,\n"
793" milliseconds=_winapi.INFINITE, /)\n"
794"--\n"
795"\n");
796
797#define _WINAPI_WAITFORMULTIPLEOBJECTS_METHODDEF \
798 {"WaitForMultipleObjects", (PyCFunction)_winapi_WaitForMultipleObjects, METH_VARARGS, _winapi_WaitForMultipleObjects__doc__},
799
800static PyObject *
Zachary Ware77772c02015-05-13 10:58:35 -0500801_winapi_WaitForMultipleObjects_impl(PyModuleDef *module,
802 PyObject *handle_seq, BOOL wait_flag,
803 DWORD milliseconds);
Zachary Waref2244ea2015-05-13 01:22:54 -0500804
805static PyObject *
806_winapi_WaitForMultipleObjects(PyModuleDef *module, PyObject *args)
807{
808 PyObject *return_value = NULL;
809 PyObject *handle_seq;
810 BOOL wait_flag;
811 DWORD milliseconds = INFINITE;
812
Zachary Ware77772c02015-05-13 10:58:35 -0500813 if (!PyArg_ParseTuple(args, "Oi|k:WaitForMultipleObjects",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300814 &handle_seq, &wait_flag, &milliseconds)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500815 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300816 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500817 return_value = _winapi_WaitForMultipleObjects_impl(module, handle_seq, wait_flag, milliseconds);
818
819exit:
820 return return_value;
821}
822
823PyDoc_STRVAR(_winapi_WaitForSingleObject__doc__,
824"WaitForSingleObject($module, handle, milliseconds, /)\n"
825"--\n"
826"\n"
827"Wait for a single object.\n"
828"\n"
829"Wait until the specified object is in the signaled state or\n"
830"the time-out interval elapses. The timeout value is specified\n"
831"in milliseconds.");
832
833#define _WINAPI_WAITFORSINGLEOBJECT_METHODDEF \
834 {"WaitForSingleObject", (PyCFunction)_winapi_WaitForSingleObject, METH_VARARGS, _winapi_WaitForSingleObject__doc__},
835
836static long
Zachary Ware77772c02015-05-13 10:58:35 -0500837_winapi_WaitForSingleObject_impl(PyModuleDef *module, HANDLE handle,
838 DWORD milliseconds);
Zachary Waref2244ea2015-05-13 01:22:54 -0500839
840static PyObject *
841_winapi_WaitForSingleObject(PyModuleDef *module, PyObject *args)
842{
843 PyObject *return_value = NULL;
844 HANDLE handle;
845 DWORD milliseconds;
846 long _return_value;
847
Zachary Ware77772c02015-05-13 10:58:35 -0500848 if (!PyArg_ParseTuple(args, "" F_HANDLE "k:WaitForSingleObject",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300849 &handle, &milliseconds)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500850 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300851 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500852 _return_value = _winapi_WaitForSingleObject_impl(module, handle, milliseconds);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300853 if ((_return_value == -1) && PyErr_Occurred()) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500854 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300855 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500856 return_value = PyLong_FromLong(_return_value);
857
858exit:
859 return return_value;
860}
861
862PyDoc_STRVAR(_winapi_WriteFile__doc__,
863"WriteFile($module, /, handle, buffer, overlapped=False)\n"
864"--\n"
865"\n");
866
867#define _WINAPI_WRITEFILE_METHODDEF \
868 {"WriteFile", (PyCFunction)_winapi_WriteFile, METH_VARARGS|METH_KEYWORDS, _winapi_WriteFile__doc__},
869
870static PyObject *
Zachary Ware77772c02015-05-13 10:58:35 -0500871_winapi_WriteFile_impl(PyModuleDef *module, HANDLE handle, PyObject *buffer,
872 int use_overlapped);
Zachary Waref2244ea2015-05-13 01:22:54 -0500873
874static PyObject *
875_winapi_WriteFile(PyModuleDef *module, PyObject *args, PyObject *kwargs)
876{
877 PyObject *return_value = NULL;
878 static char *_keywords[] = {"handle", "buffer", "overlapped", NULL};
879 HANDLE handle;
880 PyObject *buffer;
881 int use_overlapped = 0;
882
Zachary Ware77772c02015-05-13 10:58:35 -0500883 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "" F_HANDLE "O|i:WriteFile", _keywords,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300884 &handle, &buffer, &use_overlapped)) {
Zachary Waref2244ea2015-05-13 01:22:54 -0500885 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300886 }
Zachary Waref2244ea2015-05-13 01:22:54 -0500887 return_value = _winapi_WriteFile_impl(module, handle, buffer, use_overlapped);
888
889exit:
890 return return_value;
891}
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300892/*[clinic end generated code: output=d099ee4fbcdd5bc0 input=a9049054013a1b77]*/