1import sys 2from typing import Any, Union, Tuple, Optional, overload, Dict, NoReturn, Sequence 3 4if sys.version_info >= (3, 8): 5 from typing import Literal 6else: 7 from typing_extensions import Literal 8 9CREATE_NEW_CONSOLE: int 10CREATE_NEW_PROCESS_GROUP: int 11DUPLICATE_CLOSE_SOURCE: int 12DUPLICATE_SAME_ACCESS: int 13ERROR_ALREADY_EXISTS: int 14ERROR_BROKEN_PIPE: int 15ERROR_IO_PENDING: int 16ERROR_MORE_DATA: int 17ERROR_NETNAME_DELETED: int 18ERROR_NO_DATA: int 19ERROR_NO_SYSTEM_RESOURCES: int 20ERROR_OPERATION_ABORTED: int 21ERROR_PIPE_BUSY: int 22ERROR_PIPE_CONNECTED: int 23ERROR_SEM_TIMEOUT: int 24FILE_FLAG_FIRST_PIPE_INSTANCE: int 25FILE_FLAG_OVERLAPPED: int 26FILE_GENERIC_READ: int 27FILE_GENERIC_WRITE: int 28GENERIC_READ: int 29GENERIC_WRITE: int 30INFINITE: int 31NMPWAIT_WAIT_FOREVER: int 32NULL: int 33OPEN_EXISTING: int 34PIPE_ACCESS_DUPLEX: int 35PIPE_ACCESS_INBOUND: int 36PIPE_READMODE_MESSAGE: int 37PIPE_TYPE_MESSAGE: int 38PIPE_UNLIMITED_INSTANCES: int 39PIPE_WAIT: int 40PROCESS_ALL_ACCESS: int 41PROCESS_DUP_HANDLE: int 42STARTF_USESHOWWINDOW: int 43STARTF_USESTDHANDLES: int 44STD_ERROR_HANDLE: int 45STD_INPUT_HANDLE: int 46STD_OUTPUT_HANDLE: int 47STILL_ACTIVE: int 48SW_HIDE: int 49WAIT_ABANDONED_0: int 50WAIT_OBJECT_0: int 51WAIT_TIMEOUT: int 52 53def CloseHandle(handle: int) -> None: ... 54 55@overload 56def ConnectNamedPipe(handle: int, overlapped: Literal[True]) -> Overlapped: ... 57@overload 58def ConnectNamedPipe(handle: int, overlapped: Literal[False] = ...) -> None: ... 59@overload 60def ConnectNamedPipe(handle: int, overlapped: bool) -> Any: ... 61 62def CreateFile(file_name: str, desired_access: int, share_mode: int, security_attributes: int, creation_disposition: int, flags_and_attributes: int, template_file: int) -> int: ... 63def CreateJunction(src_path: str, dest_path: str) -> None: ... 64def CreateNamedPipe(name: str, open_mode: int, pipe_mode: int, max_instances: int, out_buffer_size: int, in_buffer_size: int, default_timeout: int, security_attributes: int) -> int: ... 65def CreatePipe(pipe_attrs: Any, size: int) -> Tuple[int, int]: ... 66def CreateProcess(application_name: Optional[str], command_line: Optional[str], proc_attrs: Any, thread_attrs: Any, inherit_handles: bool, creation_flags: int, env_mapping: Dict[str, str], cwd: Optional[str], startup_info: Any) -> Tuple[int, int, int, int]: ... 67def DuplicateHandle(source_process_handle: int, source_handle: int, target_process_handle: int, desired_access: int, inherit_handle: bool, options: int = ...) -> int: ... 68def ExitProcess(ExitCode: int) -> NoReturn: ... 69def GetACP() -> int: ... 70def GetFileType(handle: int) -> int: ... 71def GetCurrentProcess() -> int: ... 72def GetExitCodeProcess(process: int) -> int: ... 73def GetLastError() -> int: ... 74def GetModuleFileName(module_handle: int) -> str: ... 75def GetStdHandle(std_handle: int) -> int: ... 76def GetVersion() -> int: ... 77def OpenProcess(desired_access: int, inherit_handle: bool, process_id: int) -> int: ... 78def PeekNamedPipe(handle: int, size: int = ...) -> Union[Tuple[int, int], Tuple[bytes, int, int]]: ... 79 80# TODO: once literal types are supported, overload with Literal[True/False] 81@overload 82def ReadFile(handle: int, size: int, overlapped: Union[int, bool]) -> Any: ... 83@overload 84def ReadFile(handle: int, size: int) -> Tuple[int, int]: ... 85 86def SetNamedPipeHandleState(named_pipe: int, mode: Optional[int], max_collection_count: Optional[int], collect_data_timeout: Optional[int]) -> None: ... 87def TerminateProcess(handle: int, exit_code: int) -> None: ... 88def WaitForMultipleObjects(handle_seq: Sequence[int], wait_flag: bool, milliseconds: int = ...) -> int: ... 89def WaitForSingleObject(handle: int, milliseconds: int) -> int: ... 90def WaitNamedPipe(name: str, timeout: int) -> None: ... 91 92# TODO: once literal types are supported, overload with Literal[True/False] 93@overload 94def WriteFile(handle: int, buffer: bytes, overlapped: Union[int, bool]) -> Any: ... 95@overload 96def WriteFile(handle: int, buffer: bytes) -> Tuple[bytes, int]: ... 97 98 99class Overlapped: 100 event: int = ... 101 def GetOverlappedResult(self, wait: bool) -> Tuple[int, int]: ... 102 def cancel(self) -> None: ... 103 def getbuffer(self) -> Optional[bytes]: ... 104