Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
f2244eaf
Commit
f2244eaf
authored
May 13, 2015
by
Zachary Ware
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #20172: Convert the _winapi module to Argument Clinic.
parent
45520896
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1292 additions
and
396 deletions
+1292
-396
Modules/_winapi.c
Modules/_winapi.c
+441
-396
Modules/clinic/_winapi.c.h
Modules/clinic/_winapi.c.h
+851
-0
No files found.
Modules/_winapi.c
View file @
f2244eaf
...
...
@@ -58,8 +58,6 @@
#define F_HANDLE F_POINTER
#define F_DWORD "k"
#define F_BOOL "i"
#define F_UINT "I"
#define T_HANDLE T_POINTER
...
...
@@ -147,17 +145,68 @@ overlapped_dealloc(OverlappedObject *self)
PyObject_Del
(
self
);
}
/*[clinic input]
module _winapi
class _winapi.Overlapped "OverlappedObject *" "&OverlappedType"
[clinic start generated code]*/
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=c13d3f5fd1dabb84]*/
/*[python input]
def create_converter(type_, format_unit):
name = type_ + '_converter'
# registered upon creation by CConverter's metaclass
type(name, (CConverter,), {'type': type_, 'format_unit': format_unit})
# format unit differs between platforms for these
create_converter('HANDLE', '" F_HANDLE "')
create_converter('HMODULE', '" F_HANDLE "')
create_converter('LPSECURITY_ATTRIBUTES', '" F_POINTER "')
create_converter('BOOL', 'i') # F_BOOL used previously (always 'i')
create_converter('DWORD', 'k') # F_DWORD is always "k" (which is much shorter)
create_converter('LPCTSTR', 's')
create_converter('LPWSTR', 'u')
create_converter('UINT', 'I') # F_UINT used previously (always 'I')
class HANDLE_return_converter(CReturnConverter):
type = 'HANDLE'
def render(self, function, data):
self.declare(data)
self.err_occurred_if("_return_value == INVALID_HANDLE_VALUE", data)
data.return_conversion.append(
'if (_return_value == NULL)\n Py_RETURN_NONE;\n')
data.return_conversion.append(
'return_value = HANDLE_TO_PYNUM(_return_value);\n')
class DWORD_return_converter(CReturnConverter):
type = 'DWORD'
def render(self, function, data):
self.declare(data)
self.err_occurred_if("_return_value == DWORD_MAX", data)
data.return_conversion.append(
'return_value = Py_BuildValue("k", _return_value);\n')
[python start generated code]*/
/*[python end generated code: output=da39a3ee5e6b4b0d input=374076979596ebba]*/
#include "clinic/_winapi.c.h"
/*[clinic input]
_winapi.Overlapped.GetOverlappedResult
wait: bool
/
[clinic start generated code]*/
static
PyObject
*
overlapped_GetOverlappedResult
(
OverlappedObject
*
self
,
PyObject
*
waitobj
)
_winapi_Overlapped_GetOverlappedResult_impl
(
OverlappedObject
*
self
,
int
wait
)
/*[clinic end generated code: output=bdd0c1ed6518cd03 input=194505ee8e0e3565]*/
{
int
wait
;
BOOL
res
;
DWORD
transferred
=
0
;
DWORD
err
;
wait
=
PyObject_IsTrue
(
waitobj
);
if
(
wait
<
0
)
return
NULL
;
Py_BEGIN_ALLOW_THREADS
res
=
GetOverlappedResult
(
self
->
handle
,
&
self
->
overlapped
,
&
transferred
,
wait
!=
0
);
...
...
@@ -186,8 +235,13 @@ overlapped_GetOverlappedResult(OverlappedObject *self, PyObject *waitobj)
return
Py_BuildValue
(
"II"
,
(
unsigned
)
transferred
,
(
unsigned
)
err
);
}
/*[clinic input]
_winapi.Overlapped.getbuffer
[clinic start generated code]*/
static
PyObject
*
overlapped_getbuffer
(
OverlappedObject
*
self
)
_winapi_Overlapped_getbuffer_impl
(
OverlappedObject
*
self
)
/*[clinic end generated code: output=95a3eceefae0f748 input=347fcfd56b4ceabd]*/
{
PyObject
*
res
;
if
(
!
self
->
completed
)
{
...
...
@@ -201,8 +255,13 @@ overlapped_getbuffer(OverlappedObject *self)
return
res
;
}
/*[clinic input]
_winapi.Overlapped.cancel
[clinic start generated code]*/
static
PyObject
*
overlapped_cancel
(
OverlappedObject
*
self
)
_winapi_Overlapped_cancel_impl
(
OverlappedObject
*
self
)
/*[clinic end generated code: output=fcb9ab5df4ebdae5 input=cbf3da142290039f]*/
{
BOOL
res
=
TRUE
;
...
...
@@ -223,10 +282,9 @@ overlapped_cancel(OverlappedObject *self)
}
static
PyMethodDef
overlapped_methods
[]
=
{
{
"GetOverlappedResult"
,
(
PyCFunction
)
overlapped_GetOverlappedResult
,
METH_O
,
NULL
},
{
"getbuffer"
,
(
PyCFunction
)
overlapped_getbuffer
,
METH_NOARGS
,
NULL
},
{
"cancel"
,
(
PyCFunction
)
overlapped_cancel
,
METH_NOARGS
,
NULL
},
_WINAPI_OVERLAPPED_GETOVERLAPPEDRESULT_METHODDEF
_WINAPI_OVERLAPPED_GETBUFFER_METHODDEF
_WINAPI_OVERLAPPED_CANCEL_METHODDEF
{
NULL
}
};
...
...
@@ -300,22 +358,23 @@ new_overlapped(HANDLE handle)
/* -------------------------------------------------------------------- */
/* windows API functions */
PyDoc_STRVAR
(
CloseHandle_doc
,
"CloseHandle(handle) -> None
\n
\
\n
\
Close handle."
);
/*[clinic input]
_winapi.CloseHandle
handle: HANDLE
/
Close handle.
[clinic start generated code]*/
static
PyObject
*
winapi_CloseHandle
(
PyObject
*
self
,
PyObject
*
args
)
_winapi_CloseHandle_impl
(
PyModuleDef
*
module
,
HANDLE
handle
)
/*[clinic end generated code: output=0548595c71cb4bf7 input=7f0e4ac36e0352b8]*/
{
HANDLE
hObject
;
BOOL
success
;
if
(
!
PyArg_ParseTuple
(
args
,
F_HANDLE
":CloseHandle"
,
&
hObject
))
return
NULL
;
Py_BEGIN_ALLOW_THREADS
success
=
CloseHandle
(
h
Object
);
success
=
CloseHandle
(
h
andle
);
Py_END_ALLOW_THREADS
if
(
!
success
)
...
...
@@ -324,28 +383,28 @@ winapi_CloseHandle(PyObject *self, PyObject *args)
Py_RETURN_NONE
;
}
/*[clinic input]
_winapi.ConnectNamedPipe
handle: HANDLE
overlapped as use_overlapped: int(c_default='0') = False
[clinic start generated code]*/
static
PyObject
*
winapi_ConnectNamedPipe
(
PyObject
*
self
,
PyObject
*
args
,
PyObject
*
kwds
)
_winapi_ConnectNamedPipe_impl
(
PyModuleDef
*
module
,
HANDLE
handle
,
int
use_overlapped
)
/*[clinic end generated code: output=d9a64e59c27e10f6 input=edc83da007ebf3be]*/
{
HANDLE
hNamedPipe
;
int
use_overlapped
=
0
;
BOOL
success
;
OverlappedObject
*
overlapped
=
NULL
;
static
char
*
kwlist
[]
=
{
"handle"
,
"overlapped"
,
NULL
};
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwds
,
F_HANDLE
"|"
F_BOOL
,
kwlist
,
&
hNamedPipe
,
&
use_overlapped
))
return
NULL
;
if
(
use_overlapped
)
{
overlapped
=
new_overlapped
(
h
NamedPip
e
);
overlapped
=
new_overlapped
(
h
andl
e
);
if
(
!
overlapped
)
return
NULL
;
}
Py_BEGIN_ALLOW_THREADS
success
=
ConnectNamedPipe
(
h
NamedPip
e
,
success
=
ConnectNamedPipe
(
h
andl
e
,
overlapped
?
&
overlapped
->
overlapped
:
NULL
);
Py_END_ALLOW_THREADS
...
...
@@ -369,45 +428,50 @@ winapi_ConnectNamedPipe(PyObject *self, PyObject *args, PyObject *kwds)
Py_RETURN_NONE
;
}
static
PyObject
*
winapi_CreateFile
(
PyObject
*
self
,
PyObject
*
args
)
/*[clinic input]
_winapi.CreateFile -> HANDLE
file_name: LPCTSTR
desired_access: DWORD
share_mode: DWORD
security_attributes: LPSECURITY_ATTRIBUTES
creation_disposition: DWORD
flags_and_attributes: DWORD
template_file: HANDLE
/
[clinic start generated code]*/
static
HANDLE
_winapi_CreateFile_impl
(
PyModuleDef
*
module
,
LPCTSTR
file_name
,
DWORD
desired_access
,
DWORD
share_mode
,
LPSECURITY_ATTRIBUTES
security_attributes
,
DWORD
creation_disposition
,
DWORD
flags_and_attributes
,
HANDLE
template_file
)
/*[clinic end generated code: output=f8649129a4959288 input=6423c3e40372dbd5]*/
{
LPCTSTR
lpFileName
;
DWORD
dwDesiredAccess
;
DWORD
dwShareMode
;
LPSECURITY_ATTRIBUTES
lpSecurityAttributes
;
DWORD
dwCreationDisposition
;
DWORD
dwFlagsAndAttributes
;
HANDLE
hTemplateFile
;
HANDLE
handle
;
if
(
!
PyArg_ParseTuple
(
args
,
"s"
F_DWORD
F_DWORD
F_POINTER
F_DWORD
F_DWORD
F_HANDLE
,
&
lpFileName
,
&
dwDesiredAccess
,
&
dwShareMode
,
&
lpSecurityAttributes
,
&
dwCreationDisposition
,
&
dwFlagsAndAttributes
,
&
hTemplateFile
))
return
NULL
;
Py_BEGIN_ALLOW_THREADS
handle
=
CreateFile
(
lpFileName
,
dwDesiredA
ccess
,
dwShareMode
,
lpSecurityA
ttributes
,
dwCreationD
isposition
,
dwFlagsAndAttributes
,
hTemplateF
ile
);
handle
=
CreateFile
(
file_name
,
desired_a
ccess
,
share_mode
,
security_a
ttributes
,
creation_d
isposition
,
flags_and_attributes
,
template_f
ile
);
Py_END_ALLOW_THREADS
if
(
handle
==
INVALID_HANDLE_VALUE
)
return
PyErr_SetFromWindowsErr
(
0
);
PyErr_SetFromWindowsErr
(
0
);
return
Py_BuildValue
(
F_HANDLE
,
handle
)
;
return
handle
;
}
/*[clinic input]
_winapi.CreateJunction
src_path: LPWSTR
dst_path: LPWSTR
/
[clinic start generated code]*/
static
PyObject
*
winapi_CreateJunction
(
PyObject
*
self
,
PyObject
*
args
)
_winapi_CreateJunction_impl
(
PyModuleDef
*
module
,
LPWSTR
src_path
,
LPWSTR
dst_path
)
/*[clinic end generated code: output=df22af7be7045584 input=8cd1f9964b6e3d36]*/
{
/* Input arguments */
LPWSTR
src_path
=
NULL
;
LPWSTR
dst_path
=
NULL
;
/* Privilege adjustment */
HANDLE
token
=
NULL
;
TOKEN_PRIVILEGES
tp
;
...
...
@@ -422,9 +486,6 @@ winapi_CreateJunction(PyObject *self, PyObject *args)
HANDLE
junction
=
NULL
;
DWORD
ret
=
0
;
if
(
!
PyArg_ParseTuple
(
args
,
"uu"
,
&
src_path
,
&
dst_path
))
return
NULL
;
if
(
src_path
==
NULL
||
dst_path
==
NULL
)
return
PyErr_SetFromWindowsErr
(
ERROR_INVALID_PARAMETER
);
...
...
@@ -535,62 +596,60 @@ cleanup:
Py_RETURN_NONE
;
}
static
PyObject
*
winapi_CreateNamedPipe
(
PyObject
*
self
,
PyObject
*
args
)
/*[clinic input]
_winapi.CreateNamedPipe -> HANDLE
name: LPCTSTR
open_mode: DWORD
pipe_mode: DWORD
max_instances: DWORD
out_buffer_size: DWORD
in_buffer_size: DWORD
default_timeout: DWORD
security_attributes: LPSECURITY_ATTRIBUTES
/
[clinic start generated code]*/
static
HANDLE
_winapi_CreateNamedPipe_impl
(
PyModuleDef
*
module
,
LPCTSTR
name
,
DWORD
open_mode
,
DWORD
pipe_mode
,
DWORD
max_instances
,
DWORD
out_buffer_size
,
DWORD
in_buffer_size
,
DWORD
default_timeout
,
LPSECURITY_ATTRIBUTES
security_attributes
)
/*[clinic end generated code: output=711e231639c25c24 input=5a73530b84d8bc37]*/
{
LPCTSTR
lpName
;
DWORD
dwOpenMode
;
DWORD
dwPipeMode
;
DWORD
nMaxInstances
;
DWORD
nOutBufferSize
;
DWORD
nInBufferSize
;
DWORD
nDefaultTimeOut
;
LPSECURITY_ATTRIBUTES
lpSecurityAttributes
;
HANDLE
handle
;
if
(
!
PyArg_ParseTuple
(
args
,
"s"
F_DWORD
F_DWORD
F_DWORD
F_DWORD
F_DWORD
F_DWORD
F_POINTER
,
&
lpName
,
&
dwOpenMode
,
&
dwPipeMode
,
&
nMaxInstances
,
&
nOutBufferSize
,
&
nInBufferSize
,
&
nDefaultTimeOut
,
&
lpSecurityAttributes
))
return
NULL
;
Py_BEGIN_ALLOW_THREADS
handle
=
CreateNamedPipe
(
lpName
,
dwOpenMode
,
dwPipeM
ode
,
nMaxInstances
,
nOutBufferS
ize
,
nInBufferSize
,
nDefaultTimeO
ut
,
lpSecurityA
ttributes
);
handle
=
CreateNamedPipe
(
name
,
open_mode
,
pipe_m
ode
,
max_instances
,
out_buffer_s
ize
,
in_buffer_size
,
default_timeo
ut
,
security_a
ttributes
);
Py_END_ALLOW_THREADS
if
(
handle
==
INVALID_HANDLE_VALUE
)
return
PyErr_SetFromWindowsErr
(
0
);
PyErr_SetFromWindowsErr
(
0
);
return
Py_BuildValue
(
F_HANDLE
,
handle
)
;
return
handle
;
}
PyDoc_STRVAR
(
CreatePipe_doc
,
"CreatePipe(pipe_attrs, size) -> (read_handle, write_handle)
\n
\
\n
\
Create an anonymous pipe, and return handles to the read and
\n
\
write ends of the pipe.
\n
\
\n
\
pipe_attrs is ignored internally and can be None."
);
/*[clinic input]
_winapi.CreatePipe
pipe_attrs: object
Ignored internally, can be None.
size: DWORD
/
Create an anonymous pipe.
Returns a 2-tuple of handles, to the read and write ends of the pipe.
[clinic start generated code]*/
static
PyObject
*
winapi_CreatePipe
(
PyObject
*
self
,
PyObject
*
args
)
_winapi_CreatePipe_impl
(
PyModuleDef
*
module
,
PyObject
*
pipe_attrs
,
DWORD
size
)
/*[clinic end generated code: output=ed09baf1d43086df input=c4f2cfa56ef68d90]*/
{
HANDLE
read_pipe
;
HANDLE
write_pipe
;
BOOL
result
;
PyObject
*
pipe_attributes
;
/* ignored */
DWORD
size
;
if
(
!
PyArg_ParseTuple
(
args
,
"O"
F_DWORD
":CreatePipe"
,
&
pipe_attributes
,
&
size
))
return
NULL
;
Py_BEGIN_ALLOW_THREADS
result
=
CreatePipe
(
&
read_pipe
,
&
write_pipe
,
NULL
,
size
);
Py_END_ALLOW_THREADS
...
...
@@ -721,20 +780,31 @@ getenvironment(PyObject* environment)
return
NULL
;
}
PyDoc_STRVAR
(
CreateProcess_doc
,
"CreateProcess(app_name, cmd_line, proc_attrs, thread_attrs,
\n
\
inherit, flags, env_mapping, curdir,
\n
\
startup_info) -> (proc_handle, thread_handle,
\n
\
pid, tid)
\n
\
\n
\
Create a new process and its primary thread. The return
\n
\
value is a tuple of the process handle, thread handle,
\n
\
process ID, and thread ID.
\n
\
\n
\
proc_attrs and thread_attrs are ignored internally and can be None."
);
/*[clinic input]
_winapi.CreateProcess
application_name: Py_UNICODE(nullable=True)
command_line: Py_UNICODE(nullable=True)
proc_attrs: object
Ignored internally, can be None.
thread_attrs: object
Ignored internally, can be None.
inherit_handles: BOOL
creation_flags: DWORD
env_mapping: object
current_directory: Py_UNICODE(nullable=True)
startup_info: object
/
Create a new process and its primary thread.
The return value is a tuple of the process handle, thread handle,
process ID, and thread ID.
[clinic start generated code]*/
static
PyObject
*
winapi_CreateProcess
(
PyObject
*
self
,
PyObject
*
args
)
_winapi_CreateProcess_impl
(
PyModuleDef
*
module
,
Py_UNICODE
*
application_name
,
Py_UNICODE
*
command_line
,
PyObject
*
proc_attrs
,
PyObject
*
thread_attrs
,
BOOL
inherit_handles
,
DWORD
creation_flags
,
PyObject
*
env_mapping
,
Py_UNICODE
*
current_directory
,
PyObject
*
startup_info
)
/*[clinic end generated code: output=c279c1271b4c45cf input=6667ea0bc7036472]*/
{
BOOL
result
;
PROCESS_INFORMATION
pi
;
...
...
@@ -742,28 +812,6 @@ winapi_CreateProcess(PyObject* self, PyObject* args)
PyObject
*
environment
;
wchar_t
*
wenvironment
;
wchar_t
*
application_name
;
wchar_t
*
command_line
;
PyObject
*
process_attributes
;
/* ignored */
PyObject
*
thread_attributes
;
/* ignored */
BOOL
inherit_handles
;
DWORD
creation_flags
;
PyObject
*
env_mapping
;
wchar_t
*
current_directory
;
PyObject
*
startup_info
;
if
(
!
PyArg_ParseTuple
(
args
,
"ZZOO"
F_BOOL
F_DWORD
"OZO:CreateProcess"
,
&
application_name
,
&
command_line
,
&
process_attributes
,
&
thread_attributes
,
&
inherit_handles
,
&
creation_flags
,
&
env_mapping
,
&
current_directory
,
&
startup_info
))
return
NULL
;
ZeroMemory
(
&
si
,
sizeof
(
si
));
si
.
cb
=
sizeof
(
si
);
...
...
@@ -817,41 +865,31 @@ winapi_CreateProcess(PyObject* self, PyObject* args)
pi
.
dwThreadId
);
}
PyDoc_STRVAR
(
DuplicateHandle_doc
,
"DuplicateHandle(source_proc_handle, source_handle,
\n
\
target_proc_handle, target_handle, access,
\n
\
inherit[, options]) -> handle
\n
\
\n
\
Return a duplicate handle object.
\n
\
\n
\
The duplicate handle refers to the same object as the original
\n
\
handle. Therefore, any changes to the object are reflected
\n
\
through both handles."
);
/*[clinic input]
_winapi.DuplicateHandle -> HANDLE
static
PyObject
*
winapi_DuplicateHandle
(
PyObject
*
self
,
PyObject
*
args
)
source_process_handle: HANDLE
source_handle: HANDLE
target_process_handle: HANDLE
desired_access: DWORD
inherit_handle: BOOL
options: DWORD = 0
/
Return a duplicate handle object.
The duplicate handle refers to the same object as the original
handle. Therefore, any changes to the object are reflected
through both handles.
[clinic start generated code]*/
static
HANDLE
_winapi_DuplicateHandle_impl
(
PyModuleDef
*
module
,
HANDLE
source_process_handle
,
HANDLE
source_handle
,
HANDLE
target_process_handle
,
DWORD
desired_access
,
BOOL
inherit_handle
,
DWORD
options
)
/*[clinic end generated code: output=24a7836ca4d94aba input=b933e3f2356a8c12]*/
{
HANDLE
target_handle
;
BOOL
result
;
HANDLE
source_process_handle
;
HANDLE
source_handle
;
HANDLE
target_process_handle
;
DWORD
desired_access
;
BOOL
inherit_handle
;
DWORD
options
=
0
;
if
(
!
PyArg_ParseTuple
(
args
,
F_HANDLE
F_HANDLE
F_HANDLE
F_DWORD
F_BOOL
F_DWORD
":DuplicateHandle"
,
&
source_process_handle
,
&
source_handle
,
&
target_process_handle
,
&
desired_access
,
&
inherit_handle
,
&
options
))
return
NULL
;
Py_BEGIN_ALLOW_THREADS
result
=
DuplicateHandle
(
source_process_handle
,
...
...
@@ -864,98 +902,111 @@ winapi_DuplicateHandle(PyObject* self, PyObject* args)
);
Py_END_ALLOW_THREADS
if
(
!
result
)
return
PyErr_SetFromWindowsErr
(
GetLastError
());
if
(
!
result
)
{
PyErr_SetFromWindowsErr
(
GetLastError
());
return
INVALID_HANDLE_VALUE
;
}
return
HANDLE_TO_PYNUM
(
target_handle
)
;
return
target_handle
;
}
static
PyObject
*
winapi_ExitProcess
(
PyObject
*
self
,
PyObject
*
args
)
{
UINT
uExitCode
;
/*[clinic input]
_winapi.ExitProcess
if
(
!
PyArg_ParseTuple
(
args
,
F_UINT
,
&
uExitCode
))
return
NULL
;
ExitCode: UINT
/
[clinic start generated code]*/
static
PyObject
*
_winapi_ExitProcess_impl
(
PyModuleDef
*
module
,
UINT
ExitCode
)
/*[clinic end generated code: output=25f3b499c24cedc8 input=4f05466a9406c558]*/
{
#if defined(Py_DEBUG)
SetErrorMode
(
SEM_FAILCRITICALERRORS
|
SEM_NOALIGNMENTFAULTEXCEPT
|
SEM_NOGPFAULTERRORBOX
|
SEM_NOOPENFILEERRORBOX
);
_CrtSetReportMode
(
_CRT_ASSERT
,
_CRTDBG_MODE_DEBUG
);
#endif
ExitProcess
(
u
ExitCode
);
ExitProcess
(
ExitCode
);
return
NULL
;
}
PyDoc_STRVAR
(
GetCurrentProcess_doc
,
"GetCurrentProcess() -> handle
\n
\
\n
\
Return a handle object for the current process."
);
/*[clinic input]
_winapi.GetCurrentProcess -> HANDLE
static
PyObject
*
winapi_GetCurrentProcess
(
PyObject
*
self
,
PyObject
*
args
)
{
if
(
!
PyArg_ParseTuple
(
args
,
":GetCurrentProcess"
))
return
NULL
;
Return a handle object for the current process.
[clinic start generated code]*/
return
HANDLE_TO_PYNUM
(
GetCurrentProcess
());
static
HANDLE
_winapi_GetCurrentProcess_impl
(
PyModuleDef
*
module
)
/*[clinic end generated code: output=be29ac3ad5f8291e input=b213403fd4b96b41]*/
{
return
GetCurrentProcess
();
}
PyDoc_STRVAR
(
GetExitCodeProcess_doc
,
"GetExitCodeProcess(handle) -> Exit code
\n
\
\n
\
Return the termination status of the specified process."
);
/*[clinic input]
_winapi.GetExitCodeProcess -> DWORD
static
PyObject
*
winapi_GetExitCodeProcess
(
PyObject
*
self
,
PyObject
*
args
)
process: HANDLE
/
Return the termination status of the specified process.
[clinic start generated code]*/
static
DWORD
_winapi_GetExitCodeProcess_impl
(
PyModuleDef
*
module
,
HANDLE
process
)
/*[clinic end generated code: output=0b10f0848a410f65 input=61b6bfc7dc2ee374]*/
{
DWORD
exit_code
;
BOOL
result
;
HANDLE
process
;
if
(
!
PyArg_ParseTuple
(
args
,
F_HANDLE
":GetExitCodeProcess"
,
&
process
))
return
NULL
;
result
=
GetExitCodeProcess
(
process
,
&
exit_code
);
if
(
!
result
)
return
PyErr_SetFromWindowsErr
(
GetLastError
());
if
(
!
result
)
{
PyErr_SetFromWindowsErr
(
GetLastError
());
exit_code
=
DWORD_MAX
;
}
return
PyLong_FromUnsignedLong
(
exit_code
)
;
return
exit_code
;
}
static
PyObject
*
winapi_GetLastError
(
PyObject
*
self
,
PyObject
*
args
)
/*[clinic input]
_winapi.GetLastError -> DWORD
[clinic start generated code]*/
static
DWORD
_winapi_GetLastError_impl
(
PyModuleDef
*
module
)
/*[clinic end generated code: output=0ea00d8e67bdd056 input=62d47fb9bce038ba]*/
{
return
Py_BuildValue
(
F_DWORD
,
GetLastError
()
);
return
GetLastError
(
);
}
PyDoc_STRVAR
(
GetModuleFileName_doc
,
"GetModuleFileName(module) -> path
\n
\
\n
\
Return the fully-qualified path for the file that contains
\n
\
the specified module. The module must have been loaded by the
\n
\
current process.
\n
\
\n
\
The module parameter should be a handle to the loaded module
\n
\
whose path is being requested. If this parameter is 0,
\n
\
GetModuleFileName retrieves the path of the executable file
\n
\
of the current process."
);
/*[clinic input]
_winapi.GetModuleFileName
module_handle: HMODULE
/
Return the fully-qualified path for the file that contains module.
The module must have been loaded by the current process.
The module parameter should be a handle to the loaded module
whose path is being requested. If this parameter is 0,
GetModuleFileName retrieves the path of the executable file
of the current process.
[clinic start generated code]*/
static
PyObject
*
winapi_GetModuleFileName
(
PyObject
*
self
,
PyObject
*
args
)
_winapi_GetModuleFileName_impl
(
PyModuleDef
*
module
,
HMODULE
module_handle
)
/*[clinic end generated code: output=90063dc63bdbfa18 input=6d66ff7deca5d11f]*/
{
BOOL
result
;
HMODULE
module
;
WCHAR
filename
[
MAX_PATH
];
if
(
!
PyArg_ParseTuple
(
args
,
F_HANDLE
":GetModuleFileName"
,
&
module
))
return
NULL
;
result
=
GetModuleFileNameW
(
module
,
filename
,
MAX_PATH
);
result
=
GetModuleFileNameW
(
module_handle
,
filename
,
MAX_PATH
);
filename
[
MAX_PATH
-
1
]
=
'\0'
;
if
(
!
result
)
...
...
@@ -964,91 +1015,95 @@ winapi_GetModuleFileName(PyObject* self, PyObject* args)
return
PyUnicode_FromWideChar
(
filename
,
wcslen
(
filename
));
}
PyDoc_STRVAR
(
GetStdHandle_doc
,
"GetStdHandle(handle) -> integer
\n
\
\n
\
Return a handle to the specified standard device
\n
\
(STD_INPUT_HANDLE, STD_OUTPUT_HANDLE, STD_ERROR_HANDLE).
\n
\
The integer associated with the handle object is returned."
);
/*[clinic input]
_winapi.GetStdHandle -> HANDLE
static
PyObject
*
winapi_GetStdHandle
(
PyObject
*
self
,
PyObject
*
args
)
std_handle: DWORD
One of STD_INPUT_HANDLE, STD_OUTPUT_HANDLE, or STD_ERROR_HANDLE.
/
Return a handle to the specified standard device.
The integer associated with the handle object is returned.
[clinic start generated code]*/
static
HANDLE
_winapi_GetStdHandle_impl
(
PyModuleDef
*
module
,
DWORD
std_handle
)
/*[clinic end generated code: output=5f5ca28b28c6fad2 input=07016b06a2fc8826]*/
{
HANDLE
handle
;
DWORD
std_handle
;
if
(
!
PyArg_ParseTuple
(
args
,
F_DWORD
":GetStdHandle"
,
&
std_handle
))
return
NULL
;
Py_BEGIN_ALLOW_THREADS
handle
=
GetStdHandle
(
std_handle
);
Py_END_ALLOW_THREADS
if
(
handle
==
INVALID_HANDLE_VALUE
)
return
PyErr_SetFromWindowsErr
(
GetLastError
());
if
(
!
handle
)
{
Py_INCREF
(
Py_None
);
return
Py_None
;
}
PyErr_SetFromWindowsErr
(
GetLastError
());
/* note: returns integer, not handle object */
return
HANDLE_TO_PYNUM
(
handle
);
return
handle
;
}
PyDoc_STRVAR
(
GetVersion_doc
,
"GetVersion() -> version
\n
\
\n
\
Return the version number of the current operating system."
);
/*[clinic input]
_winapi.GetVersion -> long
Return the version number of the current operating system.
[clinic start generated code]*/
static
long
_winapi_GetVersion_impl
(
PyModuleDef
*
module
)
/*[clinic end generated code: output=95a2f8ad3b948ca8 input=e21dff8d0baeded2]*/
/* Disable deprecation warnings about GetVersionEx as the result is
being passed straight through to the caller, who is responsible for
using it correctly. */
#pragma warning(push)
#pragma warning(disable:4996)
static
PyObject
*
winapi_GetVersion
(
PyObject
*
self
,
PyObject
*
args
)
{
if
(
!
PyArg_ParseTuple
(
args
,
":GetVersion"
))
return
NULL
;
return
PyLong_FromUnsignedLong
(
GetVersion
());
return
GetVersion
();
}
#pragma warning(pop)
static
PyObject
*
winapi_OpenProcess
(
PyObject
*
self
,
PyObject
*
args
)
/*[clinic input]
_winapi.OpenProcess -> HANDLE
desired_access: DWORD
inherit_handle: BOOL
process_id: DWORD
/
[clinic start generated code]*/
static
HANDLE
_winapi_OpenProcess_impl
(
PyModuleDef
*
module
,
DWORD
desired_access
,
BOOL
inherit_handle
,
DWORD
process_id
)
/*[clinic end generated code: output=2a7be5336f16f63c input=ec98c4cf4ea2ec36]*/
{
DWORD
dwDesiredAccess
;
BOOL
bInheritHandle
;
DWORD
dwProcessId
;
HANDLE
handle
;
if
(
!
PyArg_ParseTuple
(
args
,
F_DWORD
F_BOOL
F_DWORD
,
&
dwDesiredAccess
,
&
bInheritHandle
,
&
dwProcessId
))
return
NULL
;
handle
=
OpenProcess
(
dwDesiredAccess
,
bInheritHandle
,
dwProcessId
);
if
(
handle
==
NULL
)
return
PyErr_SetFromWindowsErr
(
0
);
handle
=
OpenProcess
(
desired_access
,
inherit_handle
,
process_id
);
if
(
handle
==
NULL
)
{
PyErr_SetFromWindowsErr
(
0
);
handle
=
INVALID_HANDLE_VALUE
;
}
return
Py_BuildValue
(
F_HANDLE
,
handle
)
;
return
handle
;
}
/*[clinic input]
_winapi.PeekNamedPipe
handle: HANDLE
size: int = 0
/
[clinic start generated code]*/
static
PyObject
*
winapi_PeekNamedPipe
(
PyObject
*
self
,
PyObject
*
args
)
_winapi_PeekNamedPipe_impl
(
PyModuleDef
*
module
,
HANDLE
handle
,
int
size
)
/*[clinic end generated code: output=e6c908e2fb63c798 input=c7aa53bfbce69d70]*/
{
HANDLE
handle
;
int
size
=
0
;
PyObject
*
buf
=
NULL
;
DWORD
nread
,
navail
,
nleft
;
BOOL
ret
;
if
(
!
PyArg_ParseTuple
(
args
,
F_HANDLE
"|i:PeekNamedPipe"
,
&
handle
,
&
size
))
return
NULL
;
if
(
size
<
0
)
{
PyErr_SetString
(
PyExc_ValueError
,
"negative size"
);
return
NULL
;
...
...
@@ -1081,23 +1136,23 @@ winapi_PeekNamedPipe(PyObject *self, PyObject *args)
}
}
/*[clinic input]
_winapi.ReadFile
handle: HANDLE
size: int
overlapped as use_overlapped: int(c_default='0') = False
[clinic start generated code]*/
static
PyObject
*
winapi_ReadFile
(
PyObject
*
self
,
PyObject
*
args
,
PyObject
*
kwds
)
_winapi_ReadFile_impl
(
PyModuleDef
*
module
,
HANDLE
handle
,
int
size
,
int
use_overlapped
)
/*[clinic end generated code: output=5a087be0ff44479a input=8dd810194e86ac7d]*/
{
HANDLE
handle
;
int
size
;
DWORD
nread
;
PyObject
*
buf
;
BOOL
ret
;
int
use_overlapped
=
0
;
DWORD
err
;
OverlappedObject
*
overlapped
=
NULL
;
static
char
*
kwlist
[]
=
{
"handle"
,
"size"
,
"overlapped"
,
NULL
};
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwds
,
F_HANDLE
"i|i:ReadFile"
,
kwlist
,
&
handle
,
&
size
,
&
use_overlapped
))
return
NULL
;
buf
=
PyBytes_FromStringAndSize
(
NULL
,
size
);
if
(
!
buf
)
...
...
@@ -1140,18 +1195,24 @@ winapi_ReadFile(PyObject *self, PyObject *args, PyObject *kwds)
return
Py_BuildValue
(
"NI"
,
buf
,
err
);
}
/*[clinic input]
_winapi.SetNamedPipeHandleState
named_pipe: HANDLE
mode: object
max_collection_count: object
collect_data_timeout: object
/
[clinic start generated code]*/
static
PyObject
*
winapi_SetNamedPipeHandleState
(
PyObject
*
self
,
PyObject
*
args
)
_winapi_SetNamedPipeHandleState_impl
(
PyModuleDef
*
module
,
HANDLE
named_pipe
,
PyObject
*
mode
,
PyObject
*
max_collection_count
,
PyObject
*
collect_data_timeout
)
/*[clinic end generated code: output=327efd18ff0c30ec input=9142d72163d0faa6]*/
{
HANDLE
hNamedPipe
;
PyObject
*
oArgs
[
3
];
PyObject
*
oArgs
[
3
]
=
{
mode
,
max_collection_count
,
collect_data_timeout
};
DWORD
dwArgs
[
3
],
*
pArgs
[
3
]
=
{
NULL
,
NULL
,
NULL
};
int
i
;
if
(
!
PyArg_ParseTuple
(
args
,
F_HANDLE
"OOO"
,
&
hNamedPipe
,
&
oArgs
[
0
],
&
oArgs
[
1
],
&
oArgs
[
2
]))
return
NULL
;
PyErr_Clear
();
for
(
i
=
0
;
i
<
3
;
i
++
)
{
...
...
@@ -1163,49 +1224,53 @@ winapi_SetNamedPipeHandleState(PyObject *self, PyObject *args)
}
}
if
(
!
SetNamedPipeHandleState
(
hNamedP
ipe
,
pArgs
[
0
],
pArgs
[
1
],
pArgs
[
2
]))
if
(
!
SetNamedPipeHandleState
(
named_p
ipe
,
pArgs
[
0
],
pArgs
[
1
],
pArgs
[
2
]))
return
PyErr_SetFromWindowsErr
(
0
);
Py_RETURN_NONE
;
}
PyDoc_STRVAR
(
TerminateProcess_doc
,
"TerminateProcess(handle, exit_code) -> None
\n
\
\n
\
Terminate the specified process and all of its threads."
);
/*[clinic input]
_winapi.TerminateProcess
handle: HANDLE
exit_code: UINT
/
Terminate the specified process and all of its threads.
[clinic start generated code]*/
static
PyObject
*
winapi_TerminateProcess
(
PyObject
*
self
,
PyObject
*
args
)
_winapi_TerminateProcess_impl
(
PyModuleDef
*
module
,
HANDLE
handle
,
UINT
exit_code
)
/*[clinic end generated code: output=1559f0f6500c2283 input=d6bc0aa1ee3bb4df]*/
{
BOOL
result
;
HANDLE
process
;
UINT
exit_code
;
if
(
!
PyArg_ParseTuple
(
args
,
F_HANDLE
F_UINT
":TerminateProcess"
,
&
process
,
&
exit_code
))
return
NULL
;
result
=
TerminateProcess
(
process
,
exit_code
);
result
=
TerminateProcess
(
handle
,
exit_code
);
if
(
!
result
)
return
PyErr_SetFromWindowsErr
(
GetLastError
());
Py_INCREF
(
Py_None
);
return
Py_None
;
Py_RETURN_NONE
;
}
/*[clinic input]
_winapi.WaitNamedPipe
name: LPCTSTR
timeout: DWORD
/
[clinic start generated code]*/
static
PyObject
*
winapi_WaitNamedPipe
(
PyObject
*
self
,
PyObject
*
args
)
_winapi_WaitNamedPipe_impl
(
PyModuleDef
*
module
,
LPCTSTR
name
,
DWORD
timeout
)
/*[clinic end generated code: output=5bca5e02f448c9d7 input=36fc781291b1862c]*/
{
LPCTSTR
lpNamedPipeName
;
DWORD
nTimeOut
;
BOOL
success
;
if
(
!
PyArg_ParseTuple
(
args
,
"s"
F_DWORD
,
&
lpNamedPipeName
,
&
nTimeOut
))
return
NULL
;
Py_BEGIN_ALLOW_THREADS
success
=
WaitNamedPipe
(
lpNamedPipeName
,
nTimeO
ut
);
success
=
WaitNamedPipe
(
name
,
timeo
ut
);
Py_END_ALLOW_THREADS
if
(
!
success
)
...
...
@@ -1214,21 +1279,23 @@ winapi_WaitNamedPipe(PyObject *self, PyObject *args)
Py_RETURN_NONE
;
}
/*[clinic input]
_winapi.WaitForMultipleObjects
handle_seq: object
wait_flag: BOOL
milliseconds: DWORD(c_default='INFINITE') = _winapi.INFINITE
/
[clinic start generated code]*/
static
PyObject
*
winapi_WaitForMultipleObjects
(
PyObject
*
self
,
PyObject
*
args
)
_winapi_WaitForMultipleObjects_impl
(
PyModuleDef
*
module
,
PyObject
*
handle_seq
,
BOOL
wait_flag
,
DWORD
milliseconds
)
/*[clinic end generated code: output=e3efee6b505dd48e input=36f76ca057cd28a0]*/
{
DWORD
result
;
PyObject
*
handle_seq
;
HANDLE
handles
[
MAXIMUM_WAIT_OBJECTS
];
HANDLE
sigint_event
=
NULL
;
Py_ssize_t
nhandles
,
i
;
BOOL
wait_flag
;
DWORD
milliseconds
=
INFINITE
;
if
(
!
PyArg_ParseTuple
(
args
,
"O"
F_BOOL
"|"
F_DWORD
":WaitForMultipleObjects"
,
&
handle_seq
,
&
wait_flag
,
&
milliseconds
))
return
NULL
;
if
(
!
PySequence_Check
(
handle_seq
))
{
PyErr_Format
(
PyExc_TypeError
,
...
...
@@ -1282,53 +1349,55 @@ winapi_WaitForMultipleObjects(PyObject* self, PyObject* args)
return
PyLong_FromLong
((
int
)
result
);
}
PyDoc_STRVAR
(
WaitForSingleObject_doc
,
"WaitForSingleObject(handle, timeout) -> result
\n
\
\n
\
Wait until the specified object is in the signaled state or
\n
\
the time-out interval elapses. The timeout value is specified
\n
\
in milliseconds."
);
/*[clinic input]
_winapi.WaitForSingleObject -> long
static
PyObject
*
winapi_WaitForSingleObject
(
PyObject
*
self
,
PyObject
*
args
)
handle: HANDLE
milliseconds: DWORD
/
Wait for a single object.
Wait until the specified object is in the signaled state or
the time-out interval elapses. The timeout value is specified
in milliseconds.
[clinic start generated code]*/
static
long
_winapi_WaitForSingleObject_impl
(
PyModuleDef
*
module
,
HANDLE
handle
,
DWORD
milliseconds
)
/*[clinic end generated code: output=0c75bcc6eec6b973 input=443d1ab076edc7b1]*/
{
DWORD
result
;
HANDLE
handle
;
DWORD
milliseconds
;
if
(
!
PyArg_ParseTuple
(
args
,
F_HANDLE
F_DWORD
":WaitForSingleObject"
,
&
handle
,
&
milliseconds
))
return
NULL
;
Py_BEGIN_ALLOW_THREADS
result
=
WaitForSingleObject
(
handle
,
milliseconds
);
Py_END_ALLOW_THREADS
if
(
result
==
WAIT_FAILED
)
return
PyErr_SetFromWindowsErr
(
GetLastError
());
if
(
result
==
WAIT_FAILED
)
{
PyErr_SetFromWindowsErr
(
GetLastError
());
return
-
1
;
}
return
PyLong_FromUnsignedLong
(
result
)
;
return
result
;
}
/*[clinic input]
_winapi.WriteFile
handle: HANDLE
buffer: object
overlapped as use_overlapped: int(c_default='0') = False
[clinic start generated code]*/
static
PyObject
*
winapi_WriteFile
(
PyObject
*
self
,
PyObject
*
args
,
PyObject
*
kwds
)
_winapi_WriteFile_impl
(
PyModuleDef
*
module
,
HANDLE
handle
,
PyObject
*
buffer
,
int
use_overlapped
)
/*[clinic end generated code: output=37bd88e293079b2c input=51846a5af52053fd]*/
{
HANDLE
handle
;
Py_buffer
_buf
,
*
buf
;
PyObject
*
bufobj
;
DWORD
len
,
written
;
BOOL
ret
;
int
use_overlapped
=
0
;
DWORD
err
;
OverlappedObject
*
overlapped
=
NULL
;
static
char
*
kwlist
[]
=
{
"handle"
,
"buffer"
,
"overlapped"
,
NULL
};
/* First get handle and use_overlapped to know which Py_buffer to use */
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwds
,
F_HANDLE
"O|i:WriteFile"
,
kwlist
,
&
handle
,
&
bufobj
,
&
use_overlapped
))
return
NULL
;
if
(
use_overlapped
)
{
overlapped
=
new_overlapped
(
handle
);
...
...
@@ -1339,7 +1408,7 @@ winapi_WriteFile(PyObject *self, PyObject *args, PyObject *kwds)
else
buf
=
&
_buf
;
if
(
!
PyArg_Parse
(
buf
obj
,
"y*"
,
buf
))
{
if
(
!
PyArg_Parse
(
buf
fer
,
"y*"
,
buf
))
{
Py_XDECREF
(
overlapped
);
return
NULL
;
}
...
...
@@ -1372,54 +1441,30 @@ winapi_WriteFile(PyObject *self, PyObject *args, PyObject *kwds)
static
PyMethodDef
winapi_functions
[]
=
{
{
"CloseHandle"
,
winapi_CloseHandle
,
METH_VARARGS
,
CloseHandle_doc
},
{
"ConnectNamedPipe"
,
(
PyCFunction
)
winapi_ConnectNamedPipe
,
METH_VARARGS
|
METH_KEYWORDS
,
""
},
{
"CreateFile"
,
winapi_CreateFile
,
METH_VARARGS
,
""
},
{
"CreateJunction"
,
winapi_CreateJunction
,
METH_VARARGS
,
""
},
{
"CreateNamedPipe"
,
winapi_CreateNamedPipe
,
METH_VARARGS
,
""
},
{
"CreatePipe"
,
winapi_CreatePipe
,
METH_VARARGS
,
CreatePipe_doc
},
{
"CreateProcess"
,
winapi_CreateProcess
,
METH_VARARGS
,
CreateProcess_doc
},
{
"DuplicateHandle"
,
winapi_DuplicateHandle
,
METH_VARARGS
,
DuplicateHandle_doc
},
{
"ExitProcess"
,
winapi_ExitProcess
,
METH_VARARGS
,
""
},
{
"GetCurrentProcess"
,
winapi_GetCurrentProcess
,
METH_VARARGS
,
GetCurrentProcess_doc
},
{
"GetExitCodeProcess"
,
winapi_GetExitCodeProcess
,
METH_VARARGS
,
GetExitCodeProcess_doc
},
{
"GetLastError"
,
winapi_GetLastError
,
METH_NOARGS
,
GetCurrentProcess_doc
},
{
"GetModuleFileName"
,
winapi_GetModuleFileName
,
METH_VARARGS
,
GetModuleFileName_doc
},
{
"GetStdHandle"
,
winapi_GetStdHandle
,
METH_VARARGS
,
GetStdHandle_doc
},
{
"GetVersion"
,
winapi_GetVersion
,
METH_VARARGS
,
GetVersion_doc
},
{
"OpenProcess"
,
winapi_OpenProcess
,
METH_VARARGS
,
""
},
{
"PeekNamedPipe"
,
winapi_PeekNamedPipe
,
METH_VARARGS
,
""
},
{
"ReadFile"
,
(
PyCFunction
)
winapi_ReadFile
,
METH_VARARGS
|
METH_KEYWORDS
,
""
},
{
"SetNamedPipeHandleState"
,
winapi_SetNamedPipeHandleState
,
METH_VARARGS
,
""
},
{
"TerminateProcess"
,
winapi_TerminateProcess
,
METH_VARARGS
,
TerminateProcess_doc
},
{
"WaitNamedPipe"
,
winapi_WaitNamedPipe
,
METH_VARARGS
,
""
},
{
"WaitForMultipleObjects"
,
winapi_WaitForMultipleObjects
,
METH_VARARGS
,
""
},
{
"WaitForSingleObject"
,
winapi_WaitForSingleObject
,
METH_VARARGS
,
WaitForSingleObject_doc
},
{
"WriteFile"
,
(
PyCFunction
)
winapi_WriteFile
,
METH_VARARGS
|
METH_KEYWORDS
,
""
},
_WINAPI_CLOSEHANDLE_METHODDEF
_WINAPI_CONNECTNAMEDPIPE_METHODDEF
_WINAPI_CREATEFILE_METHODDEF
_WINAPI_CREATENAMEDPIPE_METHODDEF
_WINAPI_CREATEPIPE_METHODDEF
_WINAPI_CREATEPROCESS_METHODDEF
_WINAPI_CREATEJUNCTION_METHODDEF
_WINAPI_DUPLICATEHANDLE_METHODDEF
_WINAPI_EXITPROCESS_METHODDEF
_WINAPI_GETCURRENTPROCESS_METHODDEF
_WINAPI_GETEXITCODEPROCESS_METHODDEF
_WINAPI_GETLASTERROR_METHODDEF
_WINAPI_GETMODULEFILENAME_METHODDEF
_WINAPI_GETSTDHANDLE_METHODDEF
_WINAPI_GETVERSION_METHODDEF
_WINAPI_OPENPROCESS_METHODDEF
_WINAPI_PEEKNAMEDPIPE_METHODDEF
_WINAPI_READFILE_METHODDEF
_WINAPI_SETNAMEDPIPEHANDLESTATE_METHODDEF
_WINAPI_TERMINATEPROCESS_METHODDEF
_WINAPI_WAITNAMEDPIPE_METHODDEF
_WINAPI_WAITFORMULTIPLEOBJECTS_METHODDEF
_WINAPI_WAITFORSINGLEOBJECT_METHODDEF
_WINAPI_WRITEFILE_METHODDEF
{
NULL
,
NULL
}
};
...
...
Modules/clinic/_winapi.c.h
0 → 100644
View file @
f2244eaf
/*[clinic input]
preserve
[clinic start generated code]*/
PyDoc_STRVAR
(
_winapi_Overlapped_GetOverlappedResult__doc__
,
"GetOverlappedResult($self, wait, /)
\n
"
"--
\n
"
"
\n
"
);
#define _WINAPI_OVERLAPPED_GETOVERLAPPEDRESULT_METHODDEF \
{"GetOverlappedResult", (PyCFunction)_winapi_Overlapped_GetOverlappedResult, METH_O, _winapi_Overlapped_GetOverlappedResult__doc__},
static
PyObject
*
_winapi_Overlapped_GetOverlappedResult_impl
(
OverlappedObject
*
self
,
int
wait
);
static
PyObject
*
_winapi_Overlapped_GetOverlappedResult
(
OverlappedObject
*
self
,
PyObject
*
arg
)
{
PyObject
*
return_value
=
NULL
;
int
wait
;
if
(
!
PyArg_Parse
(
arg
,
"p:GetOverlappedResult"
,
&
wait
))
goto
exit
;
return_value
=
_winapi_Overlapped_GetOverlappedResult_impl
(
self
,
wait
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_Overlapped_getbuffer__doc__
,
"getbuffer($self, /)
\n
"
"--
\n
"
"
\n
"
);
#define _WINAPI_OVERLAPPED_GETBUFFER_METHODDEF \
{"getbuffer", (PyCFunction)_winapi_Overlapped_getbuffer, METH_NOARGS, _winapi_Overlapped_getbuffer__doc__},
static
PyObject
*
_winapi_Overlapped_getbuffer_impl
(
OverlappedObject
*
self
);
static
PyObject
*
_winapi_Overlapped_getbuffer
(
OverlappedObject
*
self
,
PyObject
*
Py_UNUSED
(
ignored
))
{
return
_winapi_Overlapped_getbuffer_impl
(
self
);
}
PyDoc_STRVAR
(
_winapi_Overlapped_cancel__doc__
,
"cancel($self, /)
\n
"
"--
\n
"
"
\n
"
);
#define _WINAPI_OVERLAPPED_CANCEL_METHODDEF \
{"cancel", (PyCFunction)_winapi_Overlapped_cancel, METH_NOARGS, _winapi_Overlapped_cancel__doc__},
static
PyObject
*
_winapi_Overlapped_cancel_impl
(
OverlappedObject
*
self
);
static
PyObject
*
_winapi_Overlapped_cancel
(
OverlappedObject
*
self
,
PyObject
*
Py_UNUSED
(
ignored
))
{
return
_winapi_Overlapped_cancel_impl
(
self
);
}
PyDoc_STRVAR
(
_winapi_CloseHandle__doc__
,
"CloseHandle($module, handle, /)
\n
"
"--
\n
"
"
\n
"
"Close handle."
);
#define _WINAPI_CLOSEHANDLE_METHODDEF \
{"CloseHandle", (PyCFunction)_winapi_CloseHandle, METH_O, _winapi_CloseHandle__doc__},
static
PyObject
*
_winapi_CloseHandle_impl
(
PyModuleDef
*
module
,
HANDLE
handle
);
static
PyObject
*
_winapi_CloseHandle
(
PyModuleDef
*
module
,
PyObject
*
arg
)
{
PyObject
*
return_value
=
NULL
;
HANDLE
handle
;
if
(
!
PyArg_Parse
(
arg
,
""
F_HANDLE
":CloseHandle"
,
&
handle
))
goto
exit
;
return_value
=
_winapi_CloseHandle_impl
(
module
,
handle
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_ConnectNamedPipe__doc__
,
"ConnectNamedPipe($module, /, handle, overlapped=False)
\n
"
"--
\n
"
"
\n
"
);
#define _WINAPI_CONNECTNAMEDPIPE_METHODDEF \
{"ConnectNamedPipe", (PyCFunction)_winapi_ConnectNamedPipe, METH_VARARGS|METH_KEYWORDS, _winapi_ConnectNamedPipe__doc__},
static
PyObject
*
_winapi_ConnectNamedPipe_impl
(
PyModuleDef
*
module
,
HANDLE
handle
,
int
use_overlapped
);
static
PyObject
*
_winapi_ConnectNamedPipe
(
PyModuleDef
*
module
,
PyObject
*
args
,
PyObject
*
kwargs
)
{
PyObject
*
return_value
=
NULL
;
static
char
*
_keywords
[]
=
{
"handle"
,
"overlapped"
,
NULL
};
HANDLE
handle
;
int
use_overlapped
=
0
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwargs
,
""
F_HANDLE
"|i:ConnectNamedPipe"
,
_keywords
,
&
handle
,
&
use_overlapped
))
goto
exit
;
return_value
=
_winapi_ConnectNamedPipe_impl
(
module
,
handle
,
use_overlapped
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_CreateFile__doc__
,
"CreateFile($module, file_name, desired_access, share_mode,
\n
"
" security_attributes, creation_disposition,
\n
"
" flags_and_attributes, template_file, /)
\n
"
"--
\n
"
"
\n
"
);
#define _WINAPI_CREATEFILE_METHODDEF \
{"CreateFile", (PyCFunction)_winapi_CreateFile, METH_VARARGS, _winapi_CreateFile__doc__},
static
HANDLE
_winapi_CreateFile_impl
(
PyModuleDef
*
module
,
LPCTSTR
file_name
,
DWORD
desired_access
,
DWORD
share_mode
,
LPSECURITY_ATTRIBUTES
security_attributes
,
DWORD
creation_disposition
,
DWORD
flags_and_attributes
,
HANDLE
template_file
);
static
PyObject
*
_winapi_CreateFile
(
PyModuleDef
*
module
,
PyObject
*
args
)
{
PyObject
*
return_value
=
NULL
;
LPCTSTR
file_name
;
DWORD
desired_access
;
DWORD
share_mode
;
LPSECURITY_ATTRIBUTES
security_attributes
;
DWORD
creation_disposition
;
DWORD
flags_and_attributes
;
HANDLE
template_file
;
HANDLE
_return_value
;
if
(
!
PyArg_ParseTuple
(
args
,
"skk"
F_POINTER
"kk"
F_HANDLE
":CreateFile"
,
&
file_name
,
&
desired_access
,
&
share_mode
,
&
security_attributes
,
&
creation_disposition
,
&
flags_and_attributes
,
&
template_file
))
goto
exit
;
_return_value
=
_winapi_CreateFile_impl
(
module
,
file_name
,
desired_access
,
share_mode
,
security_attributes
,
creation_disposition
,
flags_and_attributes
,
template_file
);
if
((
_return_value
==
INVALID_HANDLE_VALUE
)
&&
PyErr_Occurred
())
goto
exit
;
if
(
_return_value
==
NULL
)
Py_RETURN_NONE
;
return_value
=
HANDLE_TO_PYNUM
(
_return_value
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_CreateJunction__doc__
,
"CreateJunction($module, src_path, dst_path, /)
\n
"
"--
\n
"
"
\n
"
);
#define _WINAPI_CREATEJUNCTION_METHODDEF \
{"CreateJunction", (PyCFunction)_winapi_CreateJunction, METH_VARARGS, _winapi_CreateJunction__doc__},
static
PyObject
*
_winapi_CreateJunction_impl
(
PyModuleDef
*
module
,
LPWSTR
src_path
,
LPWSTR
dst_path
);
static
PyObject
*
_winapi_CreateJunction
(
PyModuleDef
*
module
,
PyObject
*
args
)
{
PyObject
*
return_value
=
NULL
;
LPWSTR
src_path
;
LPWSTR
dst_path
;
if
(
!
PyArg_ParseTuple
(
args
,
"uu:CreateJunction"
,
&
src_path
,
&
dst_path
))
goto
exit
;
return_value
=
_winapi_CreateJunction_impl
(
module
,
src_path
,
dst_path
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_CreateNamedPipe__doc__
,
"CreateNamedPipe($module, name, open_mode, pipe_mode, max_instances,
\n
"
" out_buffer_size, in_buffer_size, default_timeout,
\n
"
" security_attributes, /)
\n
"
"--
\n
"
"
\n
"
);
#define _WINAPI_CREATENAMEDPIPE_METHODDEF \
{"CreateNamedPipe", (PyCFunction)_winapi_CreateNamedPipe, METH_VARARGS, _winapi_CreateNamedPipe__doc__},
static
HANDLE
_winapi_CreateNamedPipe_impl
(
PyModuleDef
*
module
,
LPCTSTR
name
,
DWORD
open_mode
,
DWORD
pipe_mode
,
DWORD
max_instances
,
DWORD
out_buffer_size
,
DWORD
in_buffer_size
,
DWORD
default_timeout
,
LPSECURITY_ATTRIBUTES
security_attributes
);
static
PyObject
*
_winapi_CreateNamedPipe
(
PyModuleDef
*
module
,
PyObject
*
args
)
{
PyObject
*
return_value
=
NULL
;
LPCTSTR
name
;
DWORD
open_mode
;
DWORD
pipe_mode
;
DWORD
max_instances
;
DWORD
out_buffer_size
;
DWORD
in_buffer_size
;
DWORD
default_timeout
;
LPSECURITY_ATTRIBUTES
security_attributes
;
HANDLE
_return_value
;
if
(
!
PyArg_ParseTuple
(
args
,
"skkkkkk"
F_POINTER
":CreateNamedPipe"
,
&
name
,
&
open_mode
,
&
pipe_mode
,
&
max_instances
,
&
out_buffer_size
,
&
in_buffer_size
,
&
default_timeout
,
&
security_attributes
))
goto
exit
;
_return_value
=
_winapi_CreateNamedPipe_impl
(
module
,
name
,
open_mode
,
pipe_mode
,
max_instances
,
out_buffer_size
,
in_buffer_size
,
default_timeout
,
security_attributes
);
if
((
_return_value
==
INVALID_HANDLE_VALUE
)
&&
PyErr_Occurred
())
goto
exit
;
if
(
_return_value
==
NULL
)
Py_RETURN_NONE
;
return_value
=
HANDLE_TO_PYNUM
(
_return_value
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_CreatePipe__doc__
,
"CreatePipe($module, pipe_attrs, size, /)
\n
"
"--
\n
"
"
\n
"
"Create an anonymous pipe.
\n
"
"
\n
"
" pipe_attrs
\n
"
" Ignored internally, can be None.
\n
"
"
\n
"
"Returns a 2-tuple of handles, to the read and write ends of the pipe."
);
#define _WINAPI_CREATEPIPE_METHODDEF \
{"CreatePipe", (PyCFunction)_winapi_CreatePipe, METH_VARARGS, _winapi_CreatePipe__doc__},
static
PyObject
*
_winapi_CreatePipe_impl
(
PyModuleDef
*
module
,
PyObject
*
pipe_attrs
,
DWORD
size
);
static
PyObject
*
_winapi_CreatePipe
(
PyModuleDef
*
module
,
PyObject
*
args
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
pipe_attrs
;
DWORD
size
;
if
(
!
PyArg_ParseTuple
(
args
,
"Ok:CreatePipe"
,
&
pipe_attrs
,
&
size
))
goto
exit
;
return_value
=
_winapi_CreatePipe_impl
(
module
,
pipe_attrs
,
size
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_CreateProcess__doc__
,
"CreateProcess($module, application_name, command_line, proc_attrs,
\n
"
" thread_attrs, inherit_handles, creation_flags,
\n
"
" env_mapping, current_directory, startup_info, /)
\n
"
"--
\n
"
"
\n
"
"Create a new process and its primary thread.
\n
"
"
\n
"
" proc_attrs
\n
"
" Ignored internally, can be None.
\n
"
" thread_attrs
\n
"
" Ignored internally, can be None.
\n
"
"
\n
"
"The return value is a tuple of the process handle, thread handle,
\n
"
"process ID, and thread ID."
);
#define _WINAPI_CREATEPROCESS_METHODDEF \
{"CreateProcess", (PyCFunction)_winapi_CreateProcess, METH_VARARGS, _winapi_CreateProcess__doc__},
static
PyObject
*
_winapi_CreateProcess_impl
(
PyModuleDef
*
module
,
Py_UNICODE
*
application_name
,
Py_UNICODE
*
command_line
,
PyObject
*
proc_attrs
,
PyObject
*
thread_attrs
,
BOOL
inherit_handles
,
DWORD
creation_flags
,
PyObject
*
env_mapping
,
Py_UNICODE
*
current_directory
,
PyObject
*
startup_info
);
static
PyObject
*
_winapi_CreateProcess
(
PyModuleDef
*
module
,
PyObject
*
args
)
{
PyObject
*
return_value
=
NULL
;
Py_UNICODE
*
application_name
;
Py_UNICODE
*
command_line
;
PyObject
*
proc_attrs
;
PyObject
*
thread_attrs
;
BOOL
inherit_handles
;
DWORD
creation_flags
;
PyObject
*
env_mapping
;
Py_UNICODE
*
current_directory
;
PyObject
*
startup_info
;
if
(
!
PyArg_ParseTuple
(
args
,
"ZZOOikOZO:CreateProcess"
,
&
application_name
,
&
command_line
,
&
proc_attrs
,
&
thread_attrs
,
&
inherit_handles
,
&
creation_flags
,
&
env_mapping
,
&
current_directory
,
&
startup_info
))
goto
exit
;
return_value
=
_winapi_CreateProcess_impl
(
module
,
application_name
,
command_line
,
proc_attrs
,
thread_attrs
,
inherit_handles
,
creation_flags
,
env_mapping
,
current_directory
,
startup_info
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_DuplicateHandle__doc__
,
"DuplicateHandle($module, source_process_handle, source_handle,
\n
"
" target_process_handle, desired_access, inherit_handle,
\n
"
" options=0, /)
\n
"
"--
\n
"
"
\n
"
"Return a duplicate handle object.
\n
"
"
\n
"
"The duplicate handle refers to the same object as the original
\n
"
"handle. Therefore, any changes to the object are reflected
\n
"
"through both handles."
);
#define _WINAPI_DUPLICATEHANDLE_METHODDEF \
{"DuplicateHandle", (PyCFunction)_winapi_DuplicateHandle, METH_VARARGS, _winapi_DuplicateHandle__doc__},
static
HANDLE
_winapi_DuplicateHandle_impl
(
PyModuleDef
*
module
,
HANDLE
source_process_handle
,
HANDLE
source_handle
,
HANDLE
target_process_handle
,
DWORD
desired_access
,
BOOL
inherit_handle
,
DWORD
options
);
static
PyObject
*
_winapi_DuplicateHandle
(
PyModuleDef
*
module
,
PyObject
*
args
)
{
PyObject
*
return_value
=
NULL
;
HANDLE
source_process_handle
;
HANDLE
source_handle
;
HANDLE
target_process_handle
;
DWORD
desired_access
;
BOOL
inherit_handle
;
DWORD
options
=
0
;
HANDLE
_return_value
;
if
(
!
PyArg_ParseTuple
(
args
,
""
F_HANDLE
""
F_HANDLE
""
F_HANDLE
"ki|k:DuplicateHandle"
,
&
source_process_handle
,
&
source_handle
,
&
target_process_handle
,
&
desired_access
,
&
inherit_handle
,
&
options
))
goto
exit
;
_return_value
=
_winapi_DuplicateHandle_impl
(
module
,
source_process_handle
,
source_handle
,
target_process_handle
,
desired_access
,
inherit_handle
,
options
);
if
((
_return_value
==
INVALID_HANDLE_VALUE
)
&&
PyErr_Occurred
())
goto
exit
;
if
(
_return_value
==
NULL
)
Py_RETURN_NONE
;
return_value
=
HANDLE_TO_PYNUM
(
_return_value
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_ExitProcess__doc__
,
"ExitProcess($module, ExitCode, /)
\n
"
"--
\n
"
"
\n
"
);
#define _WINAPI_EXITPROCESS_METHODDEF \
{"ExitProcess", (PyCFunction)_winapi_ExitProcess, METH_O, _winapi_ExitProcess__doc__},
static
PyObject
*
_winapi_ExitProcess_impl
(
PyModuleDef
*
module
,
UINT
ExitCode
);
static
PyObject
*
_winapi_ExitProcess
(
PyModuleDef
*
module
,
PyObject
*
arg
)
{
PyObject
*
return_value
=
NULL
;
UINT
ExitCode
;
if
(
!
PyArg_Parse
(
arg
,
"I:ExitProcess"
,
&
ExitCode
))
goto
exit
;
return_value
=
_winapi_ExitProcess_impl
(
module
,
ExitCode
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_GetCurrentProcess__doc__
,
"GetCurrentProcess($module, /)
\n
"
"--
\n
"
"
\n
"
"Return a handle object for the current process."
);
#define _WINAPI_GETCURRENTPROCESS_METHODDEF \
{"GetCurrentProcess", (PyCFunction)_winapi_GetCurrentProcess, METH_NOARGS, _winapi_GetCurrentProcess__doc__},
static
HANDLE
_winapi_GetCurrentProcess_impl
(
PyModuleDef
*
module
);
static
PyObject
*
_winapi_GetCurrentProcess
(
PyModuleDef
*
module
,
PyObject
*
Py_UNUSED
(
ignored
))
{
PyObject
*
return_value
=
NULL
;
HANDLE
_return_value
;
_return_value
=
_winapi_GetCurrentProcess_impl
(
module
);
if
((
_return_value
==
INVALID_HANDLE_VALUE
)
&&
PyErr_Occurred
())
goto
exit
;
if
(
_return_value
==
NULL
)
Py_RETURN_NONE
;
return_value
=
HANDLE_TO_PYNUM
(
_return_value
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_GetExitCodeProcess__doc__
,
"GetExitCodeProcess($module, process, /)
\n
"
"--
\n
"
"
\n
"
"Return the termination status of the specified process."
);
#define _WINAPI_GETEXITCODEPROCESS_METHODDEF \
{"GetExitCodeProcess", (PyCFunction)_winapi_GetExitCodeProcess, METH_O, _winapi_GetExitCodeProcess__doc__},
static
DWORD
_winapi_GetExitCodeProcess_impl
(
PyModuleDef
*
module
,
HANDLE
process
);
static
PyObject
*
_winapi_GetExitCodeProcess
(
PyModuleDef
*
module
,
PyObject
*
arg
)
{
PyObject
*
return_value
=
NULL
;
HANDLE
process
;
DWORD
_return_value
;
if
(
!
PyArg_Parse
(
arg
,
""
F_HANDLE
":GetExitCodeProcess"
,
&
process
))
goto
exit
;
_return_value
=
_winapi_GetExitCodeProcess_impl
(
module
,
process
);
if
((
_return_value
==
DWORD_MAX
)
&&
PyErr_Occurred
())
goto
exit
;
return_value
=
Py_BuildValue
(
"k"
,
_return_value
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_GetLastError__doc__
,
"GetLastError($module, /)
\n
"
"--
\n
"
"
\n
"
);
#define _WINAPI_GETLASTERROR_METHODDEF \
{"GetLastError", (PyCFunction)_winapi_GetLastError, METH_NOARGS, _winapi_GetLastError__doc__},
static
DWORD
_winapi_GetLastError_impl
(
PyModuleDef
*
module
);
static
PyObject
*
_winapi_GetLastError
(
PyModuleDef
*
module
,
PyObject
*
Py_UNUSED
(
ignored
))
{
PyObject
*
return_value
=
NULL
;
DWORD
_return_value
;
_return_value
=
_winapi_GetLastError_impl
(
module
);
if
((
_return_value
==
DWORD_MAX
)
&&
PyErr_Occurred
())
goto
exit
;
return_value
=
Py_BuildValue
(
"k"
,
_return_value
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_GetModuleFileName__doc__
,
"GetModuleFileName($module, module_handle, /)
\n
"
"--
\n
"
"
\n
"
"Return the fully-qualified path for the file that contains module.
\n
"
"
\n
"
"The module must have been loaded by the current process.
\n
"
"
\n
"
"The module parameter should be a handle to the loaded module
\n
"
"whose path is being requested. If this parameter is 0,
\n
"
"GetModuleFileName retrieves the path of the executable file
\n
"
"of the current process."
);
#define _WINAPI_GETMODULEFILENAME_METHODDEF \
{"GetModuleFileName", (PyCFunction)_winapi_GetModuleFileName, METH_O, _winapi_GetModuleFileName__doc__},
static
PyObject
*
_winapi_GetModuleFileName_impl
(
PyModuleDef
*
module
,
HMODULE
module_handle
);
static
PyObject
*
_winapi_GetModuleFileName
(
PyModuleDef
*
module
,
PyObject
*
arg
)
{
PyObject
*
return_value
=
NULL
;
HMODULE
module_handle
;
if
(
!
PyArg_Parse
(
arg
,
""
F_HANDLE
":GetModuleFileName"
,
&
module_handle
))
goto
exit
;
return_value
=
_winapi_GetModuleFileName_impl
(
module
,
module_handle
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_GetStdHandle__doc__
,
"GetStdHandle($module, std_handle, /)
\n
"
"--
\n
"
"
\n
"
"Return a handle to the specified standard device.
\n
"
"
\n
"
" std_handle
\n
"
" One of STD_INPUT_HANDLE, STD_OUTPUT_HANDLE, or STD_ERROR_HANDLE.
\n
"
"
\n
"
"The integer associated with the handle object is returned."
);
#define _WINAPI_GETSTDHANDLE_METHODDEF \
{"GetStdHandle", (PyCFunction)_winapi_GetStdHandle, METH_O, _winapi_GetStdHandle__doc__},
static
HANDLE
_winapi_GetStdHandle_impl
(
PyModuleDef
*
module
,
DWORD
std_handle
);
static
PyObject
*
_winapi_GetStdHandle
(
PyModuleDef
*
module
,
PyObject
*
arg
)
{
PyObject
*
return_value
=
NULL
;
DWORD
std_handle
;
HANDLE
_return_value
;
if
(
!
PyArg_Parse
(
arg
,
"k:GetStdHandle"
,
&
std_handle
))
goto
exit
;
_return_value
=
_winapi_GetStdHandle_impl
(
module
,
std_handle
);
if
((
_return_value
==
INVALID_HANDLE_VALUE
)
&&
PyErr_Occurred
())
goto
exit
;
if
(
_return_value
==
NULL
)
Py_RETURN_NONE
;
return_value
=
HANDLE_TO_PYNUM
(
_return_value
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_GetVersion__doc__
,
"GetVersion($module, /)
\n
"
"--
\n
"
"
\n
"
"Return the version number of the current operating system."
);
#define _WINAPI_GETVERSION_METHODDEF \
{"GetVersion", (PyCFunction)_winapi_GetVersion, METH_NOARGS, _winapi_GetVersion__doc__},
static
long
_winapi_GetVersion_impl
(
PyModuleDef
*
module
);
static
PyObject
*
_winapi_GetVersion
(
PyModuleDef
*
module
,
PyObject
*
Py_UNUSED
(
ignored
))
{
PyObject
*
return_value
=
NULL
;
long
_return_value
;
_return_value
=
_winapi_GetVersion_impl
(
module
);
if
((
_return_value
==
-
1
)
&&
PyErr_Occurred
())
goto
exit
;
return_value
=
PyLong_FromLong
(
_return_value
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_OpenProcess__doc__
,
"OpenProcess($module, desired_access, inherit_handle, process_id, /)
\n
"
"--
\n
"
"
\n
"
);
#define _WINAPI_OPENPROCESS_METHODDEF \
{"OpenProcess", (PyCFunction)_winapi_OpenProcess, METH_VARARGS, _winapi_OpenProcess__doc__},
static
HANDLE
_winapi_OpenProcess_impl
(
PyModuleDef
*
module
,
DWORD
desired_access
,
BOOL
inherit_handle
,
DWORD
process_id
);
static
PyObject
*
_winapi_OpenProcess
(
PyModuleDef
*
module
,
PyObject
*
args
)
{
PyObject
*
return_value
=
NULL
;
DWORD
desired_access
;
BOOL
inherit_handle
;
DWORD
process_id
;
HANDLE
_return_value
;
if
(
!
PyArg_ParseTuple
(
args
,
"kik:OpenProcess"
,
&
desired_access
,
&
inherit_handle
,
&
process_id
))
goto
exit
;
_return_value
=
_winapi_OpenProcess_impl
(
module
,
desired_access
,
inherit_handle
,
process_id
);
if
((
_return_value
==
INVALID_HANDLE_VALUE
)
&&
PyErr_Occurred
())
goto
exit
;
if
(
_return_value
==
NULL
)
Py_RETURN_NONE
;
return_value
=
HANDLE_TO_PYNUM
(
_return_value
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_PeekNamedPipe__doc__
,
"PeekNamedPipe($module, handle, size=0, /)
\n
"
"--
\n
"
"
\n
"
);
#define _WINAPI_PEEKNAMEDPIPE_METHODDEF \
{"PeekNamedPipe", (PyCFunction)_winapi_PeekNamedPipe, METH_VARARGS, _winapi_PeekNamedPipe__doc__},
static
PyObject
*
_winapi_PeekNamedPipe_impl
(
PyModuleDef
*
module
,
HANDLE
handle
,
int
size
);
static
PyObject
*
_winapi_PeekNamedPipe
(
PyModuleDef
*
module
,
PyObject
*
args
)
{
PyObject
*
return_value
=
NULL
;
HANDLE
handle
;
int
size
=
0
;
if
(
!
PyArg_ParseTuple
(
args
,
""
F_HANDLE
"|i:PeekNamedPipe"
,
&
handle
,
&
size
))
goto
exit
;
return_value
=
_winapi_PeekNamedPipe_impl
(
module
,
handle
,
size
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_ReadFile__doc__
,
"ReadFile($module, /, handle, size, overlapped=False)
\n
"
"--
\n
"
"
\n
"
);
#define _WINAPI_READFILE_METHODDEF \
{"ReadFile", (PyCFunction)_winapi_ReadFile, METH_VARARGS|METH_KEYWORDS, _winapi_ReadFile__doc__},
static
PyObject
*
_winapi_ReadFile_impl
(
PyModuleDef
*
module
,
HANDLE
handle
,
int
size
,
int
use_overlapped
);
static
PyObject
*
_winapi_ReadFile
(
PyModuleDef
*
module
,
PyObject
*
args
,
PyObject
*
kwargs
)
{
PyObject
*
return_value
=
NULL
;
static
char
*
_keywords
[]
=
{
"handle"
,
"size"
,
"overlapped"
,
NULL
};
HANDLE
handle
;
int
size
;
int
use_overlapped
=
0
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwargs
,
""
F_HANDLE
"i|i:ReadFile"
,
_keywords
,
&
handle
,
&
size
,
&
use_overlapped
))
goto
exit
;
return_value
=
_winapi_ReadFile_impl
(
module
,
handle
,
size
,
use_overlapped
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_SetNamedPipeHandleState__doc__
,
"SetNamedPipeHandleState($module, named_pipe, mode,
\n
"
" max_collection_count, collect_data_timeout, /)
\n
"
"--
\n
"
"
\n
"
);
#define _WINAPI_SETNAMEDPIPEHANDLESTATE_METHODDEF \
{"SetNamedPipeHandleState", (PyCFunction)_winapi_SetNamedPipeHandleState, METH_VARARGS, _winapi_SetNamedPipeHandleState__doc__},
static
PyObject
*
_winapi_SetNamedPipeHandleState_impl
(
PyModuleDef
*
module
,
HANDLE
named_pipe
,
PyObject
*
mode
,
PyObject
*
max_collection_count
,
PyObject
*
collect_data_timeout
);
static
PyObject
*
_winapi_SetNamedPipeHandleState
(
PyModuleDef
*
module
,
PyObject
*
args
)
{
PyObject
*
return_value
=
NULL
;
HANDLE
named_pipe
;
PyObject
*
mode
;
PyObject
*
max_collection_count
;
PyObject
*
collect_data_timeout
;
if
(
!
PyArg_ParseTuple
(
args
,
""
F_HANDLE
"OOO:SetNamedPipeHandleState"
,
&
named_pipe
,
&
mode
,
&
max_collection_count
,
&
collect_data_timeout
))
goto
exit
;
return_value
=
_winapi_SetNamedPipeHandleState_impl
(
module
,
named_pipe
,
mode
,
max_collection_count
,
collect_data_timeout
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_TerminateProcess__doc__
,
"TerminateProcess($module, handle, exit_code, /)
\n
"
"--
\n
"
"
\n
"
"Terminate the specified process and all of its threads."
);
#define _WINAPI_TERMINATEPROCESS_METHODDEF \
{"TerminateProcess", (PyCFunction)_winapi_TerminateProcess, METH_VARARGS, _winapi_TerminateProcess__doc__},
static
PyObject
*
_winapi_TerminateProcess_impl
(
PyModuleDef
*
module
,
HANDLE
handle
,
UINT
exit_code
);
static
PyObject
*
_winapi_TerminateProcess
(
PyModuleDef
*
module
,
PyObject
*
args
)
{
PyObject
*
return_value
=
NULL
;
HANDLE
handle
;
UINT
exit_code
;
if
(
!
PyArg_ParseTuple
(
args
,
""
F_HANDLE
"I:TerminateProcess"
,
&
handle
,
&
exit_code
))
goto
exit
;
return_value
=
_winapi_TerminateProcess_impl
(
module
,
handle
,
exit_code
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_WaitNamedPipe__doc__
,
"WaitNamedPipe($module, name, timeout, /)
\n
"
"--
\n
"
"
\n
"
);
#define _WINAPI_WAITNAMEDPIPE_METHODDEF \
{"WaitNamedPipe", (PyCFunction)_winapi_WaitNamedPipe, METH_VARARGS, _winapi_WaitNamedPipe__doc__},
static
PyObject
*
_winapi_WaitNamedPipe_impl
(
PyModuleDef
*
module
,
LPCTSTR
name
,
DWORD
timeout
);
static
PyObject
*
_winapi_WaitNamedPipe
(
PyModuleDef
*
module
,
PyObject
*
args
)
{
PyObject
*
return_value
=
NULL
;
LPCTSTR
name
;
DWORD
timeout
;
if
(
!
PyArg_ParseTuple
(
args
,
"sk:WaitNamedPipe"
,
&
name
,
&
timeout
))
goto
exit
;
return_value
=
_winapi_WaitNamedPipe_impl
(
module
,
name
,
timeout
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_WaitForMultipleObjects__doc__
,
"WaitForMultipleObjects($module, handle_seq, wait_flag,
\n
"
" milliseconds=_winapi.INFINITE, /)
\n
"
"--
\n
"
"
\n
"
);
#define _WINAPI_WAITFORMULTIPLEOBJECTS_METHODDEF \
{"WaitForMultipleObjects", (PyCFunction)_winapi_WaitForMultipleObjects, METH_VARARGS, _winapi_WaitForMultipleObjects__doc__},
static
PyObject
*
_winapi_WaitForMultipleObjects_impl
(
PyModuleDef
*
module
,
PyObject
*
handle_seq
,
BOOL
wait_flag
,
DWORD
milliseconds
);
static
PyObject
*
_winapi_WaitForMultipleObjects
(
PyModuleDef
*
module
,
PyObject
*
args
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
handle_seq
;
BOOL
wait_flag
;
DWORD
milliseconds
=
INFINITE
;
if
(
!
PyArg_ParseTuple
(
args
,
"Oi|k:WaitForMultipleObjects"
,
&
handle_seq
,
&
wait_flag
,
&
milliseconds
))
goto
exit
;
return_value
=
_winapi_WaitForMultipleObjects_impl
(
module
,
handle_seq
,
wait_flag
,
milliseconds
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_WaitForSingleObject__doc__
,
"WaitForSingleObject($module, handle, milliseconds, /)
\n
"
"--
\n
"
"
\n
"
"Wait for a single object.
\n
"
"
\n
"
"Wait until the specified object is in the signaled state or
\n
"
"the time-out interval elapses. The timeout value is specified
\n
"
"in milliseconds."
);
#define _WINAPI_WAITFORSINGLEOBJECT_METHODDEF \
{"WaitForSingleObject", (PyCFunction)_winapi_WaitForSingleObject, METH_VARARGS, _winapi_WaitForSingleObject__doc__},
static
long
_winapi_WaitForSingleObject_impl
(
PyModuleDef
*
module
,
HANDLE
handle
,
DWORD
milliseconds
);
static
PyObject
*
_winapi_WaitForSingleObject
(
PyModuleDef
*
module
,
PyObject
*
args
)
{
PyObject
*
return_value
=
NULL
;
HANDLE
handle
;
DWORD
milliseconds
;
long
_return_value
;
if
(
!
PyArg_ParseTuple
(
args
,
""
F_HANDLE
"k:WaitForSingleObject"
,
&
handle
,
&
milliseconds
))
goto
exit
;
_return_value
=
_winapi_WaitForSingleObject_impl
(
module
,
handle
,
milliseconds
);
if
((
_return_value
==
-
1
)
&&
PyErr_Occurred
())
goto
exit
;
return_value
=
PyLong_FromLong
(
_return_value
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_winapi_WriteFile__doc__
,
"WriteFile($module, /, handle, buffer, overlapped=False)
\n
"
"--
\n
"
"
\n
"
);
#define _WINAPI_WRITEFILE_METHODDEF \
{"WriteFile", (PyCFunction)_winapi_WriteFile, METH_VARARGS|METH_KEYWORDS, _winapi_WriteFile__doc__},
static
PyObject
*
_winapi_WriteFile_impl
(
PyModuleDef
*
module
,
HANDLE
handle
,
PyObject
*
buffer
,
int
use_overlapped
);
static
PyObject
*
_winapi_WriteFile
(
PyModuleDef
*
module
,
PyObject
*
args
,
PyObject
*
kwargs
)
{
PyObject
*
return_value
=
NULL
;
static
char
*
_keywords
[]
=
{
"handle"
,
"buffer"
,
"overlapped"
,
NULL
};
HANDLE
handle
;
PyObject
*
buffer
;
int
use_overlapped
=
0
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwargs
,
""
F_HANDLE
"O|i:WriteFile"
,
_keywords
,
&
handle
,
&
buffer
,
&
use_overlapped
))
goto
exit
;
return_value
=
_winapi_WriteFile_impl
(
module
,
handle
,
buffer
,
use_overlapped
);
exit:
return
return_value
;
}
/*[clinic end generated code: output=107b73892f62ff3c input=a9049054013a1b77]*/
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment