17db96d56Sopenharmony_ci/*[clinic input]
27db96d56Sopenharmony_cipreserve
37db96d56Sopenharmony_ci[clinic start generated code]*/
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_Overlapped_GetOverlappedResult__doc__,
67db96d56Sopenharmony_ci"GetOverlappedResult($self, wait, /)\n"
77db96d56Sopenharmony_ci"--\n"
87db96d56Sopenharmony_ci"\n");
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_ci#define _WINAPI_OVERLAPPED_GETOVERLAPPEDRESULT_METHODDEF    \
117db96d56Sopenharmony_ci    {"GetOverlappedResult", (PyCFunction)_winapi_Overlapped_GetOverlappedResult, METH_O, _winapi_Overlapped_GetOverlappedResult__doc__},
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_cistatic PyObject *
147db96d56Sopenharmony_ci_winapi_Overlapped_GetOverlappedResult_impl(OverlappedObject *self, int wait);
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_cistatic PyObject *
177db96d56Sopenharmony_ci_winapi_Overlapped_GetOverlappedResult(OverlappedObject *self, PyObject *arg)
187db96d56Sopenharmony_ci{
197db96d56Sopenharmony_ci    PyObject *return_value = NULL;
207db96d56Sopenharmony_ci    int wait;
217db96d56Sopenharmony_ci
227db96d56Sopenharmony_ci    wait = PyObject_IsTrue(arg);
237db96d56Sopenharmony_ci    if (wait < 0) {
247db96d56Sopenharmony_ci        goto exit;
257db96d56Sopenharmony_ci    }
267db96d56Sopenharmony_ci    return_value = _winapi_Overlapped_GetOverlappedResult_impl(self, wait);
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ciexit:
297db96d56Sopenharmony_ci    return return_value;
307db96d56Sopenharmony_ci}
317db96d56Sopenharmony_ci
327db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_Overlapped_getbuffer__doc__,
337db96d56Sopenharmony_ci"getbuffer($self, /)\n"
347db96d56Sopenharmony_ci"--\n"
357db96d56Sopenharmony_ci"\n");
367db96d56Sopenharmony_ci
377db96d56Sopenharmony_ci#define _WINAPI_OVERLAPPED_GETBUFFER_METHODDEF    \
387db96d56Sopenharmony_ci    {"getbuffer", (PyCFunction)_winapi_Overlapped_getbuffer, METH_NOARGS, _winapi_Overlapped_getbuffer__doc__},
397db96d56Sopenharmony_ci
407db96d56Sopenharmony_cistatic PyObject *
417db96d56Sopenharmony_ci_winapi_Overlapped_getbuffer_impl(OverlappedObject *self);
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_cistatic PyObject *
447db96d56Sopenharmony_ci_winapi_Overlapped_getbuffer(OverlappedObject *self, PyObject *Py_UNUSED(ignored))
457db96d56Sopenharmony_ci{
467db96d56Sopenharmony_ci    return _winapi_Overlapped_getbuffer_impl(self);
477db96d56Sopenharmony_ci}
487db96d56Sopenharmony_ci
497db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_Overlapped_cancel__doc__,
507db96d56Sopenharmony_ci"cancel($self, /)\n"
517db96d56Sopenharmony_ci"--\n"
527db96d56Sopenharmony_ci"\n");
537db96d56Sopenharmony_ci
547db96d56Sopenharmony_ci#define _WINAPI_OVERLAPPED_CANCEL_METHODDEF    \
557db96d56Sopenharmony_ci    {"cancel", (PyCFunction)_winapi_Overlapped_cancel, METH_NOARGS, _winapi_Overlapped_cancel__doc__},
567db96d56Sopenharmony_ci
577db96d56Sopenharmony_cistatic PyObject *
587db96d56Sopenharmony_ci_winapi_Overlapped_cancel_impl(OverlappedObject *self);
597db96d56Sopenharmony_ci
607db96d56Sopenharmony_cistatic PyObject *
617db96d56Sopenharmony_ci_winapi_Overlapped_cancel(OverlappedObject *self, PyObject *Py_UNUSED(ignored))
627db96d56Sopenharmony_ci{
637db96d56Sopenharmony_ci    return _winapi_Overlapped_cancel_impl(self);
647db96d56Sopenharmony_ci}
657db96d56Sopenharmony_ci
667db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_CloseHandle__doc__,
677db96d56Sopenharmony_ci"CloseHandle($module, handle, /)\n"
687db96d56Sopenharmony_ci"--\n"
697db96d56Sopenharmony_ci"\n"
707db96d56Sopenharmony_ci"Close handle.");
717db96d56Sopenharmony_ci
727db96d56Sopenharmony_ci#define _WINAPI_CLOSEHANDLE_METHODDEF    \
737db96d56Sopenharmony_ci    {"CloseHandle", (PyCFunction)_winapi_CloseHandle, METH_O, _winapi_CloseHandle__doc__},
747db96d56Sopenharmony_ci
757db96d56Sopenharmony_cistatic PyObject *
767db96d56Sopenharmony_ci_winapi_CloseHandle_impl(PyObject *module, HANDLE handle);
777db96d56Sopenharmony_ci
787db96d56Sopenharmony_cistatic PyObject *
797db96d56Sopenharmony_ci_winapi_CloseHandle(PyObject *module, PyObject *arg)
807db96d56Sopenharmony_ci{
817db96d56Sopenharmony_ci    PyObject *return_value = NULL;
827db96d56Sopenharmony_ci    HANDLE handle;
837db96d56Sopenharmony_ci
847db96d56Sopenharmony_ci    if (!PyArg_Parse(arg, "" F_HANDLE ":CloseHandle", &handle)) {
857db96d56Sopenharmony_ci        goto exit;
867db96d56Sopenharmony_ci    }
877db96d56Sopenharmony_ci    return_value = _winapi_CloseHandle_impl(module, handle);
887db96d56Sopenharmony_ci
897db96d56Sopenharmony_ciexit:
907db96d56Sopenharmony_ci    return return_value;
917db96d56Sopenharmony_ci}
927db96d56Sopenharmony_ci
937db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_ConnectNamedPipe__doc__,
947db96d56Sopenharmony_ci"ConnectNamedPipe($module, /, handle, overlapped=False)\n"
957db96d56Sopenharmony_ci"--\n"
967db96d56Sopenharmony_ci"\n");
977db96d56Sopenharmony_ci
987db96d56Sopenharmony_ci#define _WINAPI_CONNECTNAMEDPIPE_METHODDEF    \
997db96d56Sopenharmony_ci    {"ConnectNamedPipe", _PyCFunction_CAST(_winapi_ConnectNamedPipe), METH_FASTCALL|METH_KEYWORDS, _winapi_ConnectNamedPipe__doc__},
1007db96d56Sopenharmony_ci
1017db96d56Sopenharmony_cistatic PyObject *
1027db96d56Sopenharmony_ci_winapi_ConnectNamedPipe_impl(PyObject *module, HANDLE handle,
1037db96d56Sopenharmony_ci                              int use_overlapped);
1047db96d56Sopenharmony_ci
1057db96d56Sopenharmony_cistatic PyObject *
1067db96d56Sopenharmony_ci_winapi_ConnectNamedPipe(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
1077db96d56Sopenharmony_ci{
1087db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1097db96d56Sopenharmony_ci    static const char * const _keywords[] = {"handle", "overlapped", NULL};
1107db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {"" F_HANDLE "|i:ConnectNamedPipe", _keywords, 0};
1117db96d56Sopenharmony_ci    HANDLE handle;
1127db96d56Sopenharmony_ci    int use_overlapped = 0;
1137db96d56Sopenharmony_ci
1147db96d56Sopenharmony_ci    if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
1157db96d56Sopenharmony_ci        &handle, &use_overlapped)) {
1167db96d56Sopenharmony_ci        goto exit;
1177db96d56Sopenharmony_ci    }
1187db96d56Sopenharmony_ci    return_value = _winapi_ConnectNamedPipe_impl(module, handle, use_overlapped);
1197db96d56Sopenharmony_ci
1207db96d56Sopenharmony_ciexit:
1217db96d56Sopenharmony_ci    return return_value;
1227db96d56Sopenharmony_ci}
1237db96d56Sopenharmony_ci
1247db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_CreateFile__doc__,
1257db96d56Sopenharmony_ci"CreateFile($module, file_name, desired_access, share_mode,\n"
1267db96d56Sopenharmony_ci"           security_attributes, creation_disposition,\n"
1277db96d56Sopenharmony_ci"           flags_and_attributes, template_file, /)\n"
1287db96d56Sopenharmony_ci"--\n"
1297db96d56Sopenharmony_ci"\n");
1307db96d56Sopenharmony_ci
1317db96d56Sopenharmony_ci#define _WINAPI_CREATEFILE_METHODDEF    \
1327db96d56Sopenharmony_ci    {"CreateFile", _PyCFunction_CAST(_winapi_CreateFile), METH_FASTCALL, _winapi_CreateFile__doc__},
1337db96d56Sopenharmony_ci
1347db96d56Sopenharmony_cistatic HANDLE
1357db96d56Sopenharmony_ci_winapi_CreateFile_impl(PyObject *module, LPCTSTR file_name,
1367db96d56Sopenharmony_ci                        DWORD desired_access, DWORD share_mode,
1377db96d56Sopenharmony_ci                        LPSECURITY_ATTRIBUTES security_attributes,
1387db96d56Sopenharmony_ci                        DWORD creation_disposition,
1397db96d56Sopenharmony_ci                        DWORD flags_and_attributes, HANDLE template_file);
1407db96d56Sopenharmony_ci
1417db96d56Sopenharmony_cistatic PyObject *
1427db96d56Sopenharmony_ci_winapi_CreateFile(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
1437db96d56Sopenharmony_ci{
1447db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1457db96d56Sopenharmony_ci    LPCTSTR file_name;
1467db96d56Sopenharmony_ci    DWORD desired_access;
1477db96d56Sopenharmony_ci    DWORD share_mode;
1487db96d56Sopenharmony_ci    LPSECURITY_ATTRIBUTES security_attributes;
1497db96d56Sopenharmony_ci    DWORD creation_disposition;
1507db96d56Sopenharmony_ci    DWORD flags_and_attributes;
1517db96d56Sopenharmony_ci    HANDLE template_file;
1527db96d56Sopenharmony_ci    HANDLE _return_value;
1537db96d56Sopenharmony_ci
1547db96d56Sopenharmony_ci    if (!_PyArg_ParseStack(args, nargs, "skk" F_POINTER "kk" F_HANDLE ":CreateFile",
1557db96d56Sopenharmony_ci        &file_name, &desired_access, &share_mode, &security_attributes, &creation_disposition, &flags_and_attributes, &template_file)) {
1567db96d56Sopenharmony_ci        goto exit;
1577db96d56Sopenharmony_ci    }
1587db96d56Sopenharmony_ci    _return_value = _winapi_CreateFile_impl(module, file_name, desired_access, share_mode, security_attributes, creation_disposition, flags_and_attributes, template_file);
1597db96d56Sopenharmony_ci    if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
1607db96d56Sopenharmony_ci        goto exit;
1617db96d56Sopenharmony_ci    }
1627db96d56Sopenharmony_ci    if (_return_value == NULL) {
1637db96d56Sopenharmony_ci        Py_RETURN_NONE;
1647db96d56Sopenharmony_ci    }
1657db96d56Sopenharmony_ci    return_value = HANDLE_TO_PYNUM(_return_value);
1667db96d56Sopenharmony_ci
1677db96d56Sopenharmony_ciexit:
1687db96d56Sopenharmony_ci    return return_value;
1697db96d56Sopenharmony_ci}
1707db96d56Sopenharmony_ci
1717db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_CreateFileMapping__doc__,
1727db96d56Sopenharmony_ci"CreateFileMapping($module, file_handle, security_attributes, protect,\n"
1737db96d56Sopenharmony_ci"                  max_size_high, max_size_low, name, /)\n"
1747db96d56Sopenharmony_ci"--\n"
1757db96d56Sopenharmony_ci"\n");
1767db96d56Sopenharmony_ci
1777db96d56Sopenharmony_ci#define _WINAPI_CREATEFILEMAPPING_METHODDEF    \
1787db96d56Sopenharmony_ci    {"CreateFileMapping", _PyCFunction_CAST(_winapi_CreateFileMapping), METH_FASTCALL, _winapi_CreateFileMapping__doc__},
1797db96d56Sopenharmony_ci
1807db96d56Sopenharmony_cistatic HANDLE
1817db96d56Sopenharmony_ci_winapi_CreateFileMapping_impl(PyObject *module, HANDLE file_handle,
1827db96d56Sopenharmony_ci                               LPSECURITY_ATTRIBUTES security_attributes,
1837db96d56Sopenharmony_ci                               DWORD protect, DWORD max_size_high,
1847db96d56Sopenharmony_ci                               DWORD max_size_low, LPCWSTR name);
1857db96d56Sopenharmony_ci
1867db96d56Sopenharmony_cistatic PyObject *
1877db96d56Sopenharmony_ci_winapi_CreateFileMapping(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
1887db96d56Sopenharmony_ci{
1897db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1907db96d56Sopenharmony_ci    HANDLE file_handle;
1917db96d56Sopenharmony_ci    LPSECURITY_ATTRIBUTES security_attributes;
1927db96d56Sopenharmony_ci    DWORD protect;
1937db96d56Sopenharmony_ci    DWORD max_size_high;
1947db96d56Sopenharmony_ci    DWORD max_size_low;
1957db96d56Sopenharmony_ci    LPCWSTR name = NULL;
1967db96d56Sopenharmony_ci    HANDLE _return_value;
1977db96d56Sopenharmony_ci
1987db96d56Sopenharmony_ci    if (!_PyArg_ParseStack(args, nargs, "" F_HANDLE "" F_POINTER "kkkO&:CreateFileMapping",
1997db96d56Sopenharmony_ci        &file_handle, &security_attributes, &protect, &max_size_high, &max_size_low, _PyUnicode_WideCharString_Converter, &name)) {
2007db96d56Sopenharmony_ci        goto exit;
2017db96d56Sopenharmony_ci    }
2027db96d56Sopenharmony_ci    _return_value = _winapi_CreateFileMapping_impl(module, file_handle, security_attributes, protect, max_size_high, max_size_low, name);
2037db96d56Sopenharmony_ci    if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
2047db96d56Sopenharmony_ci        goto exit;
2057db96d56Sopenharmony_ci    }
2067db96d56Sopenharmony_ci    if (_return_value == NULL) {
2077db96d56Sopenharmony_ci        Py_RETURN_NONE;
2087db96d56Sopenharmony_ci    }
2097db96d56Sopenharmony_ci    return_value = HANDLE_TO_PYNUM(_return_value);
2107db96d56Sopenharmony_ci
2117db96d56Sopenharmony_ciexit:
2127db96d56Sopenharmony_ci    /* Cleanup for name */
2137db96d56Sopenharmony_ci    #if !USE_UNICODE_WCHAR_CACHE
2147db96d56Sopenharmony_ci    PyMem_Free((void *)name);
2157db96d56Sopenharmony_ci    #endif /* USE_UNICODE_WCHAR_CACHE */
2167db96d56Sopenharmony_ci
2177db96d56Sopenharmony_ci    return return_value;
2187db96d56Sopenharmony_ci}
2197db96d56Sopenharmony_ci
2207db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_CreateJunction__doc__,
2217db96d56Sopenharmony_ci"CreateJunction($module, src_path, dst_path, /)\n"
2227db96d56Sopenharmony_ci"--\n"
2237db96d56Sopenharmony_ci"\n");
2247db96d56Sopenharmony_ci
2257db96d56Sopenharmony_ci#define _WINAPI_CREATEJUNCTION_METHODDEF    \
2267db96d56Sopenharmony_ci    {"CreateJunction", _PyCFunction_CAST(_winapi_CreateJunction), METH_FASTCALL, _winapi_CreateJunction__doc__},
2277db96d56Sopenharmony_ci
2287db96d56Sopenharmony_cistatic PyObject *
2297db96d56Sopenharmony_ci_winapi_CreateJunction_impl(PyObject *module, LPCWSTR src_path,
2307db96d56Sopenharmony_ci                            LPCWSTR dst_path);
2317db96d56Sopenharmony_ci
2327db96d56Sopenharmony_cistatic PyObject *
2337db96d56Sopenharmony_ci_winapi_CreateJunction(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
2347db96d56Sopenharmony_ci{
2357db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2367db96d56Sopenharmony_ci    LPCWSTR src_path = NULL;
2377db96d56Sopenharmony_ci    LPCWSTR dst_path = NULL;
2387db96d56Sopenharmony_ci
2397db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("CreateJunction", nargs, 2, 2)) {
2407db96d56Sopenharmony_ci        goto exit;
2417db96d56Sopenharmony_ci    }
2427db96d56Sopenharmony_ci    if (!PyUnicode_Check(args[0])) {
2437db96d56Sopenharmony_ci        _PyArg_BadArgument("CreateJunction", "argument 1", "str", args[0]);
2447db96d56Sopenharmony_ci        goto exit;
2457db96d56Sopenharmony_ci    }
2467db96d56Sopenharmony_ci    #if USE_UNICODE_WCHAR_CACHE
2477db96d56Sopenharmony_ci    src_path = _PyUnicode_AsUnicode(args[0]);
2487db96d56Sopenharmony_ci    #else /* USE_UNICODE_WCHAR_CACHE */
2497db96d56Sopenharmony_ci    src_path = PyUnicode_AsWideCharString(args[0], NULL);
2507db96d56Sopenharmony_ci    #endif /* USE_UNICODE_WCHAR_CACHE */
2517db96d56Sopenharmony_ci    if (src_path == NULL) {
2527db96d56Sopenharmony_ci        goto exit;
2537db96d56Sopenharmony_ci    }
2547db96d56Sopenharmony_ci    if (!PyUnicode_Check(args[1])) {
2557db96d56Sopenharmony_ci        _PyArg_BadArgument("CreateJunction", "argument 2", "str", args[1]);
2567db96d56Sopenharmony_ci        goto exit;
2577db96d56Sopenharmony_ci    }
2587db96d56Sopenharmony_ci    #if USE_UNICODE_WCHAR_CACHE
2597db96d56Sopenharmony_ci    dst_path = _PyUnicode_AsUnicode(args[1]);
2607db96d56Sopenharmony_ci    #else /* USE_UNICODE_WCHAR_CACHE */
2617db96d56Sopenharmony_ci    dst_path = PyUnicode_AsWideCharString(args[1], NULL);
2627db96d56Sopenharmony_ci    #endif /* USE_UNICODE_WCHAR_CACHE */
2637db96d56Sopenharmony_ci    if (dst_path == NULL) {
2647db96d56Sopenharmony_ci        goto exit;
2657db96d56Sopenharmony_ci    }
2667db96d56Sopenharmony_ci    return_value = _winapi_CreateJunction_impl(module, src_path, dst_path);
2677db96d56Sopenharmony_ci
2687db96d56Sopenharmony_ciexit:
2697db96d56Sopenharmony_ci    /* Cleanup for src_path */
2707db96d56Sopenharmony_ci    #if !USE_UNICODE_WCHAR_CACHE
2717db96d56Sopenharmony_ci    PyMem_Free((void *)src_path);
2727db96d56Sopenharmony_ci    #endif /* USE_UNICODE_WCHAR_CACHE */
2737db96d56Sopenharmony_ci    /* Cleanup for dst_path */
2747db96d56Sopenharmony_ci    #if !USE_UNICODE_WCHAR_CACHE
2757db96d56Sopenharmony_ci    PyMem_Free((void *)dst_path);
2767db96d56Sopenharmony_ci    #endif /* USE_UNICODE_WCHAR_CACHE */
2777db96d56Sopenharmony_ci
2787db96d56Sopenharmony_ci    return return_value;
2797db96d56Sopenharmony_ci}
2807db96d56Sopenharmony_ci
2817db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_CreateNamedPipe__doc__,
2827db96d56Sopenharmony_ci"CreateNamedPipe($module, name, open_mode, pipe_mode, max_instances,\n"
2837db96d56Sopenharmony_ci"                out_buffer_size, in_buffer_size, default_timeout,\n"
2847db96d56Sopenharmony_ci"                security_attributes, /)\n"
2857db96d56Sopenharmony_ci"--\n"
2867db96d56Sopenharmony_ci"\n");
2877db96d56Sopenharmony_ci
2887db96d56Sopenharmony_ci#define _WINAPI_CREATENAMEDPIPE_METHODDEF    \
2897db96d56Sopenharmony_ci    {"CreateNamedPipe", _PyCFunction_CAST(_winapi_CreateNamedPipe), METH_FASTCALL, _winapi_CreateNamedPipe__doc__},
2907db96d56Sopenharmony_ci
2917db96d56Sopenharmony_cistatic HANDLE
2927db96d56Sopenharmony_ci_winapi_CreateNamedPipe_impl(PyObject *module, LPCTSTR name, DWORD open_mode,
2937db96d56Sopenharmony_ci                             DWORD pipe_mode, DWORD max_instances,
2947db96d56Sopenharmony_ci                             DWORD out_buffer_size, DWORD in_buffer_size,
2957db96d56Sopenharmony_ci                             DWORD default_timeout,
2967db96d56Sopenharmony_ci                             LPSECURITY_ATTRIBUTES security_attributes);
2977db96d56Sopenharmony_ci
2987db96d56Sopenharmony_cistatic PyObject *
2997db96d56Sopenharmony_ci_winapi_CreateNamedPipe(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
3007db96d56Sopenharmony_ci{
3017db96d56Sopenharmony_ci    PyObject *return_value = NULL;
3027db96d56Sopenharmony_ci    LPCTSTR name;
3037db96d56Sopenharmony_ci    DWORD open_mode;
3047db96d56Sopenharmony_ci    DWORD pipe_mode;
3057db96d56Sopenharmony_ci    DWORD max_instances;
3067db96d56Sopenharmony_ci    DWORD out_buffer_size;
3077db96d56Sopenharmony_ci    DWORD in_buffer_size;
3087db96d56Sopenharmony_ci    DWORD default_timeout;
3097db96d56Sopenharmony_ci    LPSECURITY_ATTRIBUTES security_attributes;
3107db96d56Sopenharmony_ci    HANDLE _return_value;
3117db96d56Sopenharmony_ci
3127db96d56Sopenharmony_ci    if (!_PyArg_ParseStack(args, nargs, "skkkkkk" F_POINTER ":CreateNamedPipe",
3137db96d56Sopenharmony_ci        &name, &open_mode, &pipe_mode, &max_instances, &out_buffer_size, &in_buffer_size, &default_timeout, &security_attributes)) {
3147db96d56Sopenharmony_ci        goto exit;
3157db96d56Sopenharmony_ci    }
3167db96d56Sopenharmony_ci    _return_value = _winapi_CreateNamedPipe_impl(module, name, open_mode, pipe_mode, max_instances, out_buffer_size, in_buffer_size, default_timeout, security_attributes);
3177db96d56Sopenharmony_ci    if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
3187db96d56Sopenharmony_ci        goto exit;
3197db96d56Sopenharmony_ci    }
3207db96d56Sopenharmony_ci    if (_return_value == NULL) {
3217db96d56Sopenharmony_ci        Py_RETURN_NONE;
3227db96d56Sopenharmony_ci    }
3237db96d56Sopenharmony_ci    return_value = HANDLE_TO_PYNUM(_return_value);
3247db96d56Sopenharmony_ci
3257db96d56Sopenharmony_ciexit:
3267db96d56Sopenharmony_ci    return return_value;
3277db96d56Sopenharmony_ci}
3287db96d56Sopenharmony_ci
3297db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_CreatePipe__doc__,
3307db96d56Sopenharmony_ci"CreatePipe($module, pipe_attrs, size, /)\n"
3317db96d56Sopenharmony_ci"--\n"
3327db96d56Sopenharmony_ci"\n"
3337db96d56Sopenharmony_ci"Create an anonymous pipe.\n"
3347db96d56Sopenharmony_ci"\n"
3357db96d56Sopenharmony_ci"  pipe_attrs\n"
3367db96d56Sopenharmony_ci"    Ignored internally, can be None.\n"
3377db96d56Sopenharmony_ci"\n"
3387db96d56Sopenharmony_ci"Returns a 2-tuple of handles, to the read and write ends of the pipe.");
3397db96d56Sopenharmony_ci
3407db96d56Sopenharmony_ci#define _WINAPI_CREATEPIPE_METHODDEF    \
3417db96d56Sopenharmony_ci    {"CreatePipe", _PyCFunction_CAST(_winapi_CreatePipe), METH_FASTCALL, _winapi_CreatePipe__doc__},
3427db96d56Sopenharmony_ci
3437db96d56Sopenharmony_cistatic PyObject *
3447db96d56Sopenharmony_ci_winapi_CreatePipe_impl(PyObject *module, PyObject *pipe_attrs, DWORD size);
3457db96d56Sopenharmony_ci
3467db96d56Sopenharmony_cistatic PyObject *
3477db96d56Sopenharmony_ci_winapi_CreatePipe(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
3487db96d56Sopenharmony_ci{
3497db96d56Sopenharmony_ci    PyObject *return_value = NULL;
3507db96d56Sopenharmony_ci    PyObject *pipe_attrs;
3517db96d56Sopenharmony_ci    DWORD size;
3527db96d56Sopenharmony_ci
3537db96d56Sopenharmony_ci    if (!_PyArg_ParseStack(args, nargs, "Ok:CreatePipe",
3547db96d56Sopenharmony_ci        &pipe_attrs, &size)) {
3557db96d56Sopenharmony_ci        goto exit;
3567db96d56Sopenharmony_ci    }
3577db96d56Sopenharmony_ci    return_value = _winapi_CreatePipe_impl(module, pipe_attrs, size);
3587db96d56Sopenharmony_ci
3597db96d56Sopenharmony_ciexit:
3607db96d56Sopenharmony_ci    return return_value;
3617db96d56Sopenharmony_ci}
3627db96d56Sopenharmony_ci
3637db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_CreateProcess__doc__,
3647db96d56Sopenharmony_ci"CreateProcess($module, application_name, command_line, proc_attrs,\n"
3657db96d56Sopenharmony_ci"              thread_attrs, inherit_handles, creation_flags,\n"
3667db96d56Sopenharmony_ci"              env_mapping, current_directory, startup_info, /)\n"
3677db96d56Sopenharmony_ci"--\n"
3687db96d56Sopenharmony_ci"\n"
3697db96d56Sopenharmony_ci"Create a new process and its primary thread.\n"
3707db96d56Sopenharmony_ci"\n"
3717db96d56Sopenharmony_ci"  command_line\n"
3727db96d56Sopenharmony_ci"    Can be str or None\n"
3737db96d56Sopenharmony_ci"  proc_attrs\n"
3747db96d56Sopenharmony_ci"    Ignored internally, can be None.\n"
3757db96d56Sopenharmony_ci"  thread_attrs\n"
3767db96d56Sopenharmony_ci"    Ignored internally, can be None.\n"
3777db96d56Sopenharmony_ci"\n"
3787db96d56Sopenharmony_ci"The return value is a tuple of the process handle, thread handle,\n"
3797db96d56Sopenharmony_ci"process ID, and thread ID.");
3807db96d56Sopenharmony_ci
3817db96d56Sopenharmony_ci#define _WINAPI_CREATEPROCESS_METHODDEF    \
3827db96d56Sopenharmony_ci    {"CreateProcess", _PyCFunction_CAST(_winapi_CreateProcess), METH_FASTCALL, _winapi_CreateProcess__doc__},
3837db96d56Sopenharmony_ci
3847db96d56Sopenharmony_cistatic PyObject *
3857db96d56Sopenharmony_ci_winapi_CreateProcess_impl(PyObject *module,
3867db96d56Sopenharmony_ci                           const Py_UNICODE *application_name,
3877db96d56Sopenharmony_ci                           PyObject *command_line, PyObject *proc_attrs,
3887db96d56Sopenharmony_ci                           PyObject *thread_attrs, BOOL inherit_handles,
3897db96d56Sopenharmony_ci                           DWORD creation_flags, PyObject *env_mapping,
3907db96d56Sopenharmony_ci                           const Py_UNICODE *current_directory,
3917db96d56Sopenharmony_ci                           PyObject *startup_info);
3927db96d56Sopenharmony_ci
3937db96d56Sopenharmony_cistatic PyObject *
3947db96d56Sopenharmony_ci_winapi_CreateProcess(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
3957db96d56Sopenharmony_ci{
3967db96d56Sopenharmony_ci    PyObject *return_value = NULL;
3977db96d56Sopenharmony_ci    const Py_UNICODE *application_name = NULL;
3987db96d56Sopenharmony_ci    PyObject *command_line;
3997db96d56Sopenharmony_ci    PyObject *proc_attrs;
4007db96d56Sopenharmony_ci    PyObject *thread_attrs;
4017db96d56Sopenharmony_ci    BOOL inherit_handles;
4027db96d56Sopenharmony_ci    DWORD creation_flags;
4037db96d56Sopenharmony_ci    PyObject *env_mapping;
4047db96d56Sopenharmony_ci    const Py_UNICODE *current_directory = NULL;
4057db96d56Sopenharmony_ci    PyObject *startup_info;
4067db96d56Sopenharmony_ci
4077db96d56Sopenharmony_ci    if (!_PyArg_ParseStack(args, nargs, "O&OOOikOO&O:CreateProcess",
4087db96d56Sopenharmony_ci        _PyUnicode_WideCharString_Opt_Converter, &application_name, &command_line, &proc_attrs, &thread_attrs, &inherit_handles, &creation_flags, &env_mapping, _PyUnicode_WideCharString_Opt_Converter, &current_directory, &startup_info)) {
4097db96d56Sopenharmony_ci        goto exit;
4107db96d56Sopenharmony_ci    }
4117db96d56Sopenharmony_ci    return_value = _winapi_CreateProcess_impl(module, application_name, command_line, proc_attrs, thread_attrs, inherit_handles, creation_flags, env_mapping, current_directory, startup_info);
4127db96d56Sopenharmony_ci
4137db96d56Sopenharmony_ciexit:
4147db96d56Sopenharmony_ci    /* Cleanup for application_name */
4157db96d56Sopenharmony_ci    #if !USE_UNICODE_WCHAR_CACHE
4167db96d56Sopenharmony_ci    PyMem_Free((void *)application_name);
4177db96d56Sopenharmony_ci    #endif /* USE_UNICODE_WCHAR_CACHE */
4187db96d56Sopenharmony_ci    /* Cleanup for current_directory */
4197db96d56Sopenharmony_ci    #if !USE_UNICODE_WCHAR_CACHE
4207db96d56Sopenharmony_ci    PyMem_Free((void *)current_directory);
4217db96d56Sopenharmony_ci    #endif /* USE_UNICODE_WCHAR_CACHE */
4227db96d56Sopenharmony_ci
4237db96d56Sopenharmony_ci    return return_value;
4247db96d56Sopenharmony_ci}
4257db96d56Sopenharmony_ci
4267db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_DuplicateHandle__doc__,
4277db96d56Sopenharmony_ci"DuplicateHandle($module, source_process_handle, source_handle,\n"
4287db96d56Sopenharmony_ci"                target_process_handle, desired_access, inherit_handle,\n"
4297db96d56Sopenharmony_ci"                options=0, /)\n"
4307db96d56Sopenharmony_ci"--\n"
4317db96d56Sopenharmony_ci"\n"
4327db96d56Sopenharmony_ci"Return a duplicate handle object.\n"
4337db96d56Sopenharmony_ci"\n"
4347db96d56Sopenharmony_ci"The duplicate handle refers to the same object as the original\n"
4357db96d56Sopenharmony_ci"handle. Therefore, any changes to the object are reflected\n"
4367db96d56Sopenharmony_ci"through both handles.");
4377db96d56Sopenharmony_ci
4387db96d56Sopenharmony_ci#define _WINAPI_DUPLICATEHANDLE_METHODDEF    \
4397db96d56Sopenharmony_ci    {"DuplicateHandle", _PyCFunction_CAST(_winapi_DuplicateHandle), METH_FASTCALL, _winapi_DuplicateHandle__doc__},
4407db96d56Sopenharmony_ci
4417db96d56Sopenharmony_cistatic HANDLE
4427db96d56Sopenharmony_ci_winapi_DuplicateHandle_impl(PyObject *module, HANDLE source_process_handle,
4437db96d56Sopenharmony_ci                             HANDLE source_handle,
4447db96d56Sopenharmony_ci                             HANDLE target_process_handle,
4457db96d56Sopenharmony_ci                             DWORD desired_access, BOOL inherit_handle,
4467db96d56Sopenharmony_ci                             DWORD options);
4477db96d56Sopenharmony_ci
4487db96d56Sopenharmony_cistatic PyObject *
4497db96d56Sopenharmony_ci_winapi_DuplicateHandle(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
4507db96d56Sopenharmony_ci{
4517db96d56Sopenharmony_ci    PyObject *return_value = NULL;
4527db96d56Sopenharmony_ci    HANDLE source_process_handle;
4537db96d56Sopenharmony_ci    HANDLE source_handle;
4547db96d56Sopenharmony_ci    HANDLE target_process_handle;
4557db96d56Sopenharmony_ci    DWORD desired_access;
4567db96d56Sopenharmony_ci    BOOL inherit_handle;
4577db96d56Sopenharmony_ci    DWORD options = 0;
4587db96d56Sopenharmony_ci    HANDLE _return_value;
4597db96d56Sopenharmony_ci
4607db96d56Sopenharmony_ci    if (!_PyArg_ParseStack(args, nargs, "" F_HANDLE "" F_HANDLE "" F_HANDLE "ki|k:DuplicateHandle",
4617db96d56Sopenharmony_ci        &source_process_handle, &source_handle, &target_process_handle, &desired_access, &inherit_handle, &options)) {
4627db96d56Sopenharmony_ci        goto exit;
4637db96d56Sopenharmony_ci    }
4647db96d56Sopenharmony_ci    _return_value = _winapi_DuplicateHandle_impl(module, source_process_handle, source_handle, target_process_handle, desired_access, inherit_handle, options);
4657db96d56Sopenharmony_ci    if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
4667db96d56Sopenharmony_ci        goto exit;
4677db96d56Sopenharmony_ci    }
4687db96d56Sopenharmony_ci    if (_return_value == NULL) {
4697db96d56Sopenharmony_ci        Py_RETURN_NONE;
4707db96d56Sopenharmony_ci    }
4717db96d56Sopenharmony_ci    return_value = HANDLE_TO_PYNUM(_return_value);
4727db96d56Sopenharmony_ci
4737db96d56Sopenharmony_ciexit:
4747db96d56Sopenharmony_ci    return return_value;
4757db96d56Sopenharmony_ci}
4767db96d56Sopenharmony_ci
4777db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_ExitProcess__doc__,
4787db96d56Sopenharmony_ci"ExitProcess($module, ExitCode, /)\n"
4797db96d56Sopenharmony_ci"--\n"
4807db96d56Sopenharmony_ci"\n");
4817db96d56Sopenharmony_ci
4827db96d56Sopenharmony_ci#define _WINAPI_EXITPROCESS_METHODDEF    \
4837db96d56Sopenharmony_ci    {"ExitProcess", (PyCFunction)_winapi_ExitProcess, METH_O, _winapi_ExitProcess__doc__},
4847db96d56Sopenharmony_ci
4857db96d56Sopenharmony_cistatic PyObject *
4867db96d56Sopenharmony_ci_winapi_ExitProcess_impl(PyObject *module, UINT ExitCode);
4877db96d56Sopenharmony_ci
4887db96d56Sopenharmony_cistatic PyObject *
4897db96d56Sopenharmony_ci_winapi_ExitProcess(PyObject *module, PyObject *arg)
4907db96d56Sopenharmony_ci{
4917db96d56Sopenharmony_ci    PyObject *return_value = NULL;
4927db96d56Sopenharmony_ci    UINT ExitCode;
4937db96d56Sopenharmony_ci
4947db96d56Sopenharmony_ci    if (!PyArg_Parse(arg, "I:ExitProcess", &ExitCode)) {
4957db96d56Sopenharmony_ci        goto exit;
4967db96d56Sopenharmony_ci    }
4977db96d56Sopenharmony_ci    return_value = _winapi_ExitProcess_impl(module, ExitCode);
4987db96d56Sopenharmony_ci
4997db96d56Sopenharmony_ciexit:
5007db96d56Sopenharmony_ci    return return_value;
5017db96d56Sopenharmony_ci}
5027db96d56Sopenharmony_ci
5037db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_GetCurrentProcess__doc__,
5047db96d56Sopenharmony_ci"GetCurrentProcess($module, /)\n"
5057db96d56Sopenharmony_ci"--\n"
5067db96d56Sopenharmony_ci"\n"
5077db96d56Sopenharmony_ci"Return a handle object for the current process.");
5087db96d56Sopenharmony_ci
5097db96d56Sopenharmony_ci#define _WINAPI_GETCURRENTPROCESS_METHODDEF    \
5107db96d56Sopenharmony_ci    {"GetCurrentProcess", (PyCFunction)_winapi_GetCurrentProcess, METH_NOARGS, _winapi_GetCurrentProcess__doc__},
5117db96d56Sopenharmony_ci
5127db96d56Sopenharmony_cistatic HANDLE
5137db96d56Sopenharmony_ci_winapi_GetCurrentProcess_impl(PyObject *module);
5147db96d56Sopenharmony_ci
5157db96d56Sopenharmony_cistatic PyObject *
5167db96d56Sopenharmony_ci_winapi_GetCurrentProcess(PyObject *module, PyObject *Py_UNUSED(ignored))
5177db96d56Sopenharmony_ci{
5187db96d56Sopenharmony_ci    PyObject *return_value = NULL;
5197db96d56Sopenharmony_ci    HANDLE _return_value;
5207db96d56Sopenharmony_ci
5217db96d56Sopenharmony_ci    _return_value = _winapi_GetCurrentProcess_impl(module);
5227db96d56Sopenharmony_ci    if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
5237db96d56Sopenharmony_ci        goto exit;
5247db96d56Sopenharmony_ci    }
5257db96d56Sopenharmony_ci    if (_return_value == NULL) {
5267db96d56Sopenharmony_ci        Py_RETURN_NONE;
5277db96d56Sopenharmony_ci    }
5287db96d56Sopenharmony_ci    return_value = HANDLE_TO_PYNUM(_return_value);
5297db96d56Sopenharmony_ci
5307db96d56Sopenharmony_ciexit:
5317db96d56Sopenharmony_ci    return return_value;
5327db96d56Sopenharmony_ci}
5337db96d56Sopenharmony_ci
5347db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_GetExitCodeProcess__doc__,
5357db96d56Sopenharmony_ci"GetExitCodeProcess($module, process, /)\n"
5367db96d56Sopenharmony_ci"--\n"
5377db96d56Sopenharmony_ci"\n"
5387db96d56Sopenharmony_ci"Return the termination status of the specified process.");
5397db96d56Sopenharmony_ci
5407db96d56Sopenharmony_ci#define _WINAPI_GETEXITCODEPROCESS_METHODDEF    \
5417db96d56Sopenharmony_ci    {"GetExitCodeProcess", (PyCFunction)_winapi_GetExitCodeProcess, METH_O, _winapi_GetExitCodeProcess__doc__},
5427db96d56Sopenharmony_ci
5437db96d56Sopenharmony_cistatic DWORD
5447db96d56Sopenharmony_ci_winapi_GetExitCodeProcess_impl(PyObject *module, HANDLE process);
5457db96d56Sopenharmony_ci
5467db96d56Sopenharmony_cistatic PyObject *
5477db96d56Sopenharmony_ci_winapi_GetExitCodeProcess(PyObject *module, PyObject *arg)
5487db96d56Sopenharmony_ci{
5497db96d56Sopenharmony_ci    PyObject *return_value = NULL;
5507db96d56Sopenharmony_ci    HANDLE process;
5517db96d56Sopenharmony_ci    DWORD _return_value;
5527db96d56Sopenharmony_ci
5537db96d56Sopenharmony_ci    if (!PyArg_Parse(arg, "" F_HANDLE ":GetExitCodeProcess", &process)) {
5547db96d56Sopenharmony_ci        goto exit;
5557db96d56Sopenharmony_ci    }
5567db96d56Sopenharmony_ci    _return_value = _winapi_GetExitCodeProcess_impl(module, process);
5577db96d56Sopenharmony_ci    if ((_return_value == PY_DWORD_MAX) && PyErr_Occurred()) {
5587db96d56Sopenharmony_ci        goto exit;
5597db96d56Sopenharmony_ci    }
5607db96d56Sopenharmony_ci    return_value = Py_BuildValue("k", _return_value);
5617db96d56Sopenharmony_ci
5627db96d56Sopenharmony_ciexit:
5637db96d56Sopenharmony_ci    return return_value;
5647db96d56Sopenharmony_ci}
5657db96d56Sopenharmony_ci
5667db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_GetLastError__doc__,
5677db96d56Sopenharmony_ci"GetLastError($module, /)\n"
5687db96d56Sopenharmony_ci"--\n"
5697db96d56Sopenharmony_ci"\n");
5707db96d56Sopenharmony_ci
5717db96d56Sopenharmony_ci#define _WINAPI_GETLASTERROR_METHODDEF    \
5727db96d56Sopenharmony_ci    {"GetLastError", (PyCFunction)_winapi_GetLastError, METH_NOARGS, _winapi_GetLastError__doc__},
5737db96d56Sopenharmony_ci
5747db96d56Sopenharmony_cistatic DWORD
5757db96d56Sopenharmony_ci_winapi_GetLastError_impl(PyObject *module);
5767db96d56Sopenharmony_ci
5777db96d56Sopenharmony_cistatic PyObject *
5787db96d56Sopenharmony_ci_winapi_GetLastError(PyObject *module, PyObject *Py_UNUSED(ignored))
5797db96d56Sopenharmony_ci{
5807db96d56Sopenharmony_ci    PyObject *return_value = NULL;
5817db96d56Sopenharmony_ci    DWORD _return_value;
5827db96d56Sopenharmony_ci
5837db96d56Sopenharmony_ci    _return_value = _winapi_GetLastError_impl(module);
5847db96d56Sopenharmony_ci    if ((_return_value == PY_DWORD_MAX) && PyErr_Occurred()) {
5857db96d56Sopenharmony_ci        goto exit;
5867db96d56Sopenharmony_ci    }
5877db96d56Sopenharmony_ci    return_value = Py_BuildValue("k", _return_value);
5887db96d56Sopenharmony_ci
5897db96d56Sopenharmony_ciexit:
5907db96d56Sopenharmony_ci    return return_value;
5917db96d56Sopenharmony_ci}
5927db96d56Sopenharmony_ci
5937db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_GetModuleFileName__doc__,
5947db96d56Sopenharmony_ci"GetModuleFileName($module, module_handle, /)\n"
5957db96d56Sopenharmony_ci"--\n"
5967db96d56Sopenharmony_ci"\n"
5977db96d56Sopenharmony_ci"Return the fully-qualified path for the file that contains module.\n"
5987db96d56Sopenharmony_ci"\n"
5997db96d56Sopenharmony_ci"The module must have been loaded by the current process.\n"
6007db96d56Sopenharmony_ci"\n"
6017db96d56Sopenharmony_ci"The module parameter should be a handle to the loaded module\n"
6027db96d56Sopenharmony_ci"whose path is being requested. If this parameter is 0,\n"
6037db96d56Sopenharmony_ci"GetModuleFileName retrieves the path of the executable file\n"
6047db96d56Sopenharmony_ci"of the current process.");
6057db96d56Sopenharmony_ci
6067db96d56Sopenharmony_ci#define _WINAPI_GETMODULEFILENAME_METHODDEF    \
6077db96d56Sopenharmony_ci    {"GetModuleFileName", (PyCFunction)_winapi_GetModuleFileName, METH_O, _winapi_GetModuleFileName__doc__},
6087db96d56Sopenharmony_ci
6097db96d56Sopenharmony_cistatic PyObject *
6107db96d56Sopenharmony_ci_winapi_GetModuleFileName_impl(PyObject *module, HMODULE module_handle);
6117db96d56Sopenharmony_ci
6127db96d56Sopenharmony_cistatic PyObject *
6137db96d56Sopenharmony_ci_winapi_GetModuleFileName(PyObject *module, PyObject *arg)
6147db96d56Sopenharmony_ci{
6157db96d56Sopenharmony_ci    PyObject *return_value = NULL;
6167db96d56Sopenharmony_ci    HMODULE module_handle;
6177db96d56Sopenharmony_ci
6187db96d56Sopenharmony_ci    if (!PyArg_Parse(arg, "" F_HANDLE ":GetModuleFileName", &module_handle)) {
6197db96d56Sopenharmony_ci        goto exit;
6207db96d56Sopenharmony_ci    }
6217db96d56Sopenharmony_ci    return_value = _winapi_GetModuleFileName_impl(module, module_handle);
6227db96d56Sopenharmony_ci
6237db96d56Sopenharmony_ciexit:
6247db96d56Sopenharmony_ci    return return_value;
6257db96d56Sopenharmony_ci}
6267db96d56Sopenharmony_ci
6277db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_GetStdHandle__doc__,
6287db96d56Sopenharmony_ci"GetStdHandle($module, std_handle, /)\n"
6297db96d56Sopenharmony_ci"--\n"
6307db96d56Sopenharmony_ci"\n"
6317db96d56Sopenharmony_ci"Return a handle to the specified standard device.\n"
6327db96d56Sopenharmony_ci"\n"
6337db96d56Sopenharmony_ci"  std_handle\n"
6347db96d56Sopenharmony_ci"    One of STD_INPUT_HANDLE, STD_OUTPUT_HANDLE, or STD_ERROR_HANDLE.\n"
6357db96d56Sopenharmony_ci"\n"
6367db96d56Sopenharmony_ci"The integer associated with the handle object is returned.");
6377db96d56Sopenharmony_ci
6387db96d56Sopenharmony_ci#define _WINAPI_GETSTDHANDLE_METHODDEF    \
6397db96d56Sopenharmony_ci    {"GetStdHandle", (PyCFunction)_winapi_GetStdHandle, METH_O, _winapi_GetStdHandle__doc__},
6407db96d56Sopenharmony_ci
6417db96d56Sopenharmony_cistatic HANDLE
6427db96d56Sopenharmony_ci_winapi_GetStdHandle_impl(PyObject *module, DWORD std_handle);
6437db96d56Sopenharmony_ci
6447db96d56Sopenharmony_cistatic PyObject *
6457db96d56Sopenharmony_ci_winapi_GetStdHandle(PyObject *module, PyObject *arg)
6467db96d56Sopenharmony_ci{
6477db96d56Sopenharmony_ci    PyObject *return_value = NULL;
6487db96d56Sopenharmony_ci    DWORD std_handle;
6497db96d56Sopenharmony_ci    HANDLE _return_value;
6507db96d56Sopenharmony_ci
6517db96d56Sopenharmony_ci    if (!PyArg_Parse(arg, "k:GetStdHandle", &std_handle)) {
6527db96d56Sopenharmony_ci        goto exit;
6537db96d56Sopenharmony_ci    }
6547db96d56Sopenharmony_ci    _return_value = _winapi_GetStdHandle_impl(module, std_handle);
6557db96d56Sopenharmony_ci    if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
6567db96d56Sopenharmony_ci        goto exit;
6577db96d56Sopenharmony_ci    }
6587db96d56Sopenharmony_ci    if (_return_value == NULL) {
6597db96d56Sopenharmony_ci        Py_RETURN_NONE;
6607db96d56Sopenharmony_ci    }
6617db96d56Sopenharmony_ci    return_value = HANDLE_TO_PYNUM(_return_value);
6627db96d56Sopenharmony_ci
6637db96d56Sopenharmony_ciexit:
6647db96d56Sopenharmony_ci    return return_value;
6657db96d56Sopenharmony_ci}
6667db96d56Sopenharmony_ci
6677db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_GetVersion__doc__,
6687db96d56Sopenharmony_ci"GetVersion($module, /)\n"
6697db96d56Sopenharmony_ci"--\n"
6707db96d56Sopenharmony_ci"\n"
6717db96d56Sopenharmony_ci"Return the version number of the current operating system.");
6727db96d56Sopenharmony_ci
6737db96d56Sopenharmony_ci#define _WINAPI_GETVERSION_METHODDEF    \
6747db96d56Sopenharmony_ci    {"GetVersion", (PyCFunction)_winapi_GetVersion, METH_NOARGS, _winapi_GetVersion__doc__},
6757db96d56Sopenharmony_ci
6767db96d56Sopenharmony_cistatic long
6777db96d56Sopenharmony_ci_winapi_GetVersion_impl(PyObject *module);
6787db96d56Sopenharmony_ci
6797db96d56Sopenharmony_cistatic PyObject *
6807db96d56Sopenharmony_ci_winapi_GetVersion(PyObject *module, PyObject *Py_UNUSED(ignored))
6817db96d56Sopenharmony_ci{
6827db96d56Sopenharmony_ci    PyObject *return_value = NULL;
6837db96d56Sopenharmony_ci    long _return_value;
6847db96d56Sopenharmony_ci
6857db96d56Sopenharmony_ci    _return_value = _winapi_GetVersion_impl(module);
6867db96d56Sopenharmony_ci    if ((_return_value == -1) && PyErr_Occurred()) {
6877db96d56Sopenharmony_ci        goto exit;
6887db96d56Sopenharmony_ci    }
6897db96d56Sopenharmony_ci    return_value = PyLong_FromLong(_return_value);
6907db96d56Sopenharmony_ci
6917db96d56Sopenharmony_ciexit:
6927db96d56Sopenharmony_ci    return return_value;
6937db96d56Sopenharmony_ci}
6947db96d56Sopenharmony_ci
6957db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_MapViewOfFile__doc__,
6967db96d56Sopenharmony_ci"MapViewOfFile($module, file_map, desired_access, file_offset_high,\n"
6977db96d56Sopenharmony_ci"              file_offset_low, number_bytes, /)\n"
6987db96d56Sopenharmony_ci"--\n"
6997db96d56Sopenharmony_ci"\n");
7007db96d56Sopenharmony_ci
7017db96d56Sopenharmony_ci#define _WINAPI_MAPVIEWOFFILE_METHODDEF    \
7027db96d56Sopenharmony_ci    {"MapViewOfFile", _PyCFunction_CAST(_winapi_MapViewOfFile), METH_FASTCALL, _winapi_MapViewOfFile__doc__},
7037db96d56Sopenharmony_ci
7047db96d56Sopenharmony_cistatic LPVOID
7057db96d56Sopenharmony_ci_winapi_MapViewOfFile_impl(PyObject *module, HANDLE file_map,
7067db96d56Sopenharmony_ci                           DWORD desired_access, DWORD file_offset_high,
7077db96d56Sopenharmony_ci                           DWORD file_offset_low, size_t number_bytes);
7087db96d56Sopenharmony_ci
7097db96d56Sopenharmony_cistatic PyObject *
7107db96d56Sopenharmony_ci_winapi_MapViewOfFile(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
7117db96d56Sopenharmony_ci{
7127db96d56Sopenharmony_ci    PyObject *return_value = NULL;
7137db96d56Sopenharmony_ci    HANDLE file_map;
7147db96d56Sopenharmony_ci    DWORD desired_access;
7157db96d56Sopenharmony_ci    DWORD file_offset_high;
7167db96d56Sopenharmony_ci    DWORD file_offset_low;
7177db96d56Sopenharmony_ci    size_t number_bytes;
7187db96d56Sopenharmony_ci    LPVOID _return_value;
7197db96d56Sopenharmony_ci
7207db96d56Sopenharmony_ci    if (!_PyArg_ParseStack(args, nargs, "" F_HANDLE "kkkO&:MapViewOfFile",
7217db96d56Sopenharmony_ci        &file_map, &desired_access, &file_offset_high, &file_offset_low, _PyLong_Size_t_Converter, &number_bytes)) {
7227db96d56Sopenharmony_ci        goto exit;
7237db96d56Sopenharmony_ci    }
7247db96d56Sopenharmony_ci    _return_value = _winapi_MapViewOfFile_impl(module, file_map, desired_access, file_offset_high, file_offset_low, number_bytes);
7257db96d56Sopenharmony_ci    if ((_return_value == NULL) && PyErr_Occurred()) {
7267db96d56Sopenharmony_ci        goto exit;
7277db96d56Sopenharmony_ci    }
7287db96d56Sopenharmony_ci    return_value = HANDLE_TO_PYNUM(_return_value);
7297db96d56Sopenharmony_ci
7307db96d56Sopenharmony_ciexit:
7317db96d56Sopenharmony_ci    return return_value;
7327db96d56Sopenharmony_ci}
7337db96d56Sopenharmony_ci
7347db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_UnmapViewOfFile__doc__,
7357db96d56Sopenharmony_ci"UnmapViewOfFile($module, address, /)\n"
7367db96d56Sopenharmony_ci"--\n"
7377db96d56Sopenharmony_ci"\n");
7387db96d56Sopenharmony_ci
7397db96d56Sopenharmony_ci#define _WINAPI_UNMAPVIEWOFFILE_METHODDEF    \
7407db96d56Sopenharmony_ci    {"UnmapViewOfFile", (PyCFunction)_winapi_UnmapViewOfFile, METH_O, _winapi_UnmapViewOfFile__doc__},
7417db96d56Sopenharmony_ci
7427db96d56Sopenharmony_cistatic PyObject *
7437db96d56Sopenharmony_ci_winapi_UnmapViewOfFile_impl(PyObject *module, LPCVOID address);
7447db96d56Sopenharmony_ci
7457db96d56Sopenharmony_cistatic PyObject *
7467db96d56Sopenharmony_ci_winapi_UnmapViewOfFile(PyObject *module, PyObject *arg)
7477db96d56Sopenharmony_ci{
7487db96d56Sopenharmony_ci    PyObject *return_value = NULL;
7497db96d56Sopenharmony_ci    LPCVOID address;
7507db96d56Sopenharmony_ci
7517db96d56Sopenharmony_ci    if (!PyArg_Parse(arg, "" F_POINTER ":UnmapViewOfFile", &address)) {
7527db96d56Sopenharmony_ci        goto exit;
7537db96d56Sopenharmony_ci    }
7547db96d56Sopenharmony_ci    return_value = _winapi_UnmapViewOfFile_impl(module, address);
7557db96d56Sopenharmony_ci
7567db96d56Sopenharmony_ciexit:
7577db96d56Sopenharmony_ci    return return_value;
7587db96d56Sopenharmony_ci}
7597db96d56Sopenharmony_ci
7607db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_OpenFileMapping__doc__,
7617db96d56Sopenharmony_ci"OpenFileMapping($module, desired_access, inherit_handle, name, /)\n"
7627db96d56Sopenharmony_ci"--\n"
7637db96d56Sopenharmony_ci"\n");
7647db96d56Sopenharmony_ci
7657db96d56Sopenharmony_ci#define _WINAPI_OPENFILEMAPPING_METHODDEF    \
7667db96d56Sopenharmony_ci    {"OpenFileMapping", _PyCFunction_CAST(_winapi_OpenFileMapping), METH_FASTCALL, _winapi_OpenFileMapping__doc__},
7677db96d56Sopenharmony_ci
7687db96d56Sopenharmony_cistatic HANDLE
7697db96d56Sopenharmony_ci_winapi_OpenFileMapping_impl(PyObject *module, DWORD desired_access,
7707db96d56Sopenharmony_ci                             BOOL inherit_handle, LPCWSTR name);
7717db96d56Sopenharmony_ci
7727db96d56Sopenharmony_cistatic PyObject *
7737db96d56Sopenharmony_ci_winapi_OpenFileMapping(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
7747db96d56Sopenharmony_ci{
7757db96d56Sopenharmony_ci    PyObject *return_value = NULL;
7767db96d56Sopenharmony_ci    DWORD desired_access;
7777db96d56Sopenharmony_ci    BOOL inherit_handle;
7787db96d56Sopenharmony_ci    LPCWSTR name = NULL;
7797db96d56Sopenharmony_ci    HANDLE _return_value;
7807db96d56Sopenharmony_ci
7817db96d56Sopenharmony_ci    if (!_PyArg_ParseStack(args, nargs, "kiO&:OpenFileMapping",
7827db96d56Sopenharmony_ci        &desired_access, &inherit_handle, _PyUnicode_WideCharString_Converter, &name)) {
7837db96d56Sopenharmony_ci        goto exit;
7847db96d56Sopenharmony_ci    }
7857db96d56Sopenharmony_ci    _return_value = _winapi_OpenFileMapping_impl(module, desired_access, inherit_handle, name);
7867db96d56Sopenharmony_ci    if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
7877db96d56Sopenharmony_ci        goto exit;
7887db96d56Sopenharmony_ci    }
7897db96d56Sopenharmony_ci    if (_return_value == NULL) {
7907db96d56Sopenharmony_ci        Py_RETURN_NONE;
7917db96d56Sopenharmony_ci    }
7927db96d56Sopenharmony_ci    return_value = HANDLE_TO_PYNUM(_return_value);
7937db96d56Sopenharmony_ci
7947db96d56Sopenharmony_ciexit:
7957db96d56Sopenharmony_ci    /* Cleanup for name */
7967db96d56Sopenharmony_ci    #if !USE_UNICODE_WCHAR_CACHE
7977db96d56Sopenharmony_ci    PyMem_Free((void *)name);
7987db96d56Sopenharmony_ci    #endif /* USE_UNICODE_WCHAR_CACHE */
7997db96d56Sopenharmony_ci
8007db96d56Sopenharmony_ci    return return_value;
8017db96d56Sopenharmony_ci}
8027db96d56Sopenharmony_ci
8037db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_OpenProcess__doc__,
8047db96d56Sopenharmony_ci"OpenProcess($module, desired_access, inherit_handle, process_id, /)\n"
8057db96d56Sopenharmony_ci"--\n"
8067db96d56Sopenharmony_ci"\n");
8077db96d56Sopenharmony_ci
8087db96d56Sopenharmony_ci#define _WINAPI_OPENPROCESS_METHODDEF    \
8097db96d56Sopenharmony_ci    {"OpenProcess", _PyCFunction_CAST(_winapi_OpenProcess), METH_FASTCALL, _winapi_OpenProcess__doc__},
8107db96d56Sopenharmony_ci
8117db96d56Sopenharmony_cistatic HANDLE
8127db96d56Sopenharmony_ci_winapi_OpenProcess_impl(PyObject *module, DWORD desired_access,
8137db96d56Sopenharmony_ci                         BOOL inherit_handle, DWORD process_id);
8147db96d56Sopenharmony_ci
8157db96d56Sopenharmony_cistatic PyObject *
8167db96d56Sopenharmony_ci_winapi_OpenProcess(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
8177db96d56Sopenharmony_ci{
8187db96d56Sopenharmony_ci    PyObject *return_value = NULL;
8197db96d56Sopenharmony_ci    DWORD desired_access;
8207db96d56Sopenharmony_ci    BOOL inherit_handle;
8217db96d56Sopenharmony_ci    DWORD process_id;
8227db96d56Sopenharmony_ci    HANDLE _return_value;
8237db96d56Sopenharmony_ci
8247db96d56Sopenharmony_ci    if (!_PyArg_ParseStack(args, nargs, "kik:OpenProcess",
8257db96d56Sopenharmony_ci        &desired_access, &inherit_handle, &process_id)) {
8267db96d56Sopenharmony_ci        goto exit;
8277db96d56Sopenharmony_ci    }
8287db96d56Sopenharmony_ci    _return_value = _winapi_OpenProcess_impl(module, desired_access, inherit_handle, process_id);
8297db96d56Sopenharmony_ci    if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
8307db96d56Sopenharmony_ci        goto exit;
8317db96d56Sopenharmony_ci    }
8327db96d56Sopenharmony_ci    if (_return_value == NULL) {
8337db96d56Sopenharmony_ci        Py_RETURN_NONE;
8347db96d56Sopenharmony_ci    }
8357db96d56Sopenharmony_ci    return_value = HANDLE_TO_PYNUM(_return_value);
8367db96d56Sopenharmony_ci
8377db96d56Sopenharmony_ciexit:
8387db96d56Sopenharmony_ci    return return_value;
8397db96d56Sopenharmony_ci}
8407db96d56Sopenharmony_ci
8417db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_PeekNamedPipe__doc__,
8427db96d56Sopenharmony_ci"PeekNamedPipe($module, handle, size=0, /)\n"
8437db96d56Sopenharmony_ci"--\n"
8447db96d56Sopenharmony_ci"\n");
8457db96d56Sopenharmony_ci
8467db96d56Sopenharmony_ci#define _WINAPI_PEEKNAMEDPIPE_METHODDEF    \
8477db96d56Sopenharmony_ci    {"PeekNamedPipe", _PyCFunction_CAST(_winapi_PeekNamedPipe), METH_FASTCALL, _winapi_PeekNamedPipe__doc__},
8487db96d56Sopenharmony_ci
8497db96d56Sopenharmony_cistatic PyObject *
8507db96d56Sopenharmony_ci_winapi_PeekNamedPipe_impl(PyObject *module, HANDLE handle, int size);
8517db96d56Sopenharmony_ci
8527db96d56Sopenharmony_cistatic PyObject *
8537db96d56Sopenharmony_ci_winapi_PeekNamedPipe(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
8547db96d56Sopenharmony_ci{
8557db96d56Sopenharmony_ci    PyObject *return_value = NULL;
8567db96d56Sopenharmony_ci    HANDLE handle;
8577db96d56Sopenharmony_ci    int size = 0;
8587db96d56Sopenharmony_ci
8597db96d56Sopenharmony_ci    if (!_PyArg_ParseStack(args, nargs, "" F_HANDLE "|i:PeekNamedPipe",
8607db96d56Sopenharmony_ci        &handle, &size)) {
8617db96d56Sopenharmony_ci        goto exit;
8627db96d56Sopenharmony_ci    }
8637db96d56Sopenharmony_ci    return_value = _winapi_PeekNamedPipe_impl(module, handle, size);
8647db96d56Sopenharmony_ci
8657db96d56Sopenharmony_ciexit:
8667db96d56Sopenharmony_ci    return return_value;
8677db96d56Sopenharmony_ci}
8687db96d56Sopenharmony_ci
8697db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_LCMapStringEx__doc__,
8707db96d56Sopenharmony_ci"LCMapStringEx($module, /, locale, flags, src)\n"
8717db96d56Sopenharmony_ci"--\n"
8727db96d56Sopenharmony_ci"\n");
8737db96d56Sopenharmony_ci
8747db96d56Sopenharmony_ci#define _WINAPI_LCMAPSTRINGEX_METHODDEF    \
8757db96d56Sopenharmony_ci    {"LCMapStringEx", _PyCFunction_CAST(_winapi_LCMapStringEx), METH_FASTCALL|METH_KEYWORDS, _winapi_LCMapStringEx__doc__},
8767db96d56Sopenharmony_ci
8777db96d56Sopenharmony_cistatic PyObject *
8787db96d56Sopenharmony_ci_winapi_LCMapStringEx_impl(PyObject *module, PyObject *locale, DWORD flags,
8797db96d56Sopenharmony_ci                           PyObject *src);
8807db96d56Sopenharmony_ci
8817db96d56Sopenharmony_cistatic PyObject *
8827db96d56Sopenharmony_ci_winapi_LCMapStringEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
8837db96d56Sopenharmony_ci{
8847db96d56Sopenharmony_ci    PyObject *return_value = NULL;
8857db96d56Sopenharmony_ci    static const char * const _keywords[] = {"locale", "flags", "src", NULL};
8867db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {"UkU:LCMapStringEx", _keywords, 0};
8877db96d56Sopenharmony_ci    PyObject *locale;
8887db96d56Sopenharmony_ci    DWORD flags;
8897db96d56Sopenharmony_ci    PyObject *src;
8907db96d56Sopenharmony_ci
8917db96d56Sopenharmony_ci    if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
8927db96d56Sopenharmony_ci        &locale, &flags, &src)) {
8937db96d56Sopenharmony_ci        goto exit;
8947db96d56Sopenharmony_ci    }
8957db96d56Sopenharmony_ci    return_value = _winapi_LCMapStringEx_impl(module, locale, flags, src);
8967db96d56Sopenharmony_ci
8977db96d56Sopenharmony_ciexit:
8987db96d56Sopenharmony_ci    return return_value;
8997db96d56Sopenharmony_ci}
9007db96d56Sopenharmony_ci
9017db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_ReadFile__doc__,
9027db96d56Sopenharmony_ci"ReadFile($module, /, handle, size, overlapped=False)\n"
9037db96d56Sopenharmony_ci"--\n"
9047db96d56Sopenharmony_ci"\n");
9057db96d56Sopenharmony_ci
9067db96d56Sopenharmony_ci#define _WINAPI_READFILE_METHODDEF    \
9077db96d56Sopenharmony_ci    {"ReadFile", _PyCFunction_CAST(_winapi_ReadFile), METH_FASTCALL|METH_KEYWORDS, _winapi_ReadFile__doc__},
9087db96d56Sopenharmony_ci
9097db96d56Sopenharmony_cistatic PyObject *
9107db96d56Sopenharmony_ci_winapi_ReadFile_impl(PyObject *module, HANDLE handle, DWORD size,
9117db96d56Sopenharmony_ci                      int use_overlapped);
9127db96d56Sopenharmony_ci
9137db96d56Sopenharmony_cistatic PyObject *
9147db96d56Sopenharmony_ci_winapi_ReadFile(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
9157db96d56Sopenharmony_ci{
9167db96d56Sopenharmony_ci    PyObject *return_value = NULL;
9177db96d56Sopenharmony_ci    static const char * const _keywords[] = {"handle", "size", "overlapped", NULL};
9187db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {"" F_HANDLE "k|i:ReadFile", _keywords, 0};
9197db96d56Sopenharmony_ci    HANDLE handle;
9207db96d56Sopenharmony_ci    DWORD size;
9217db96d56Sopenharmony_ci    int use_overlapped = 0;
9227db96d56Sopenharmony_ci
9237db96d56Sopenharmony_ci    if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
9247db96d56Sopenharmony_ci        &handle, &size, &use_overlapped)) {
9257db96d56Sopenharmony_ci        goto exit;
9267db96d56Sopenharmony_ci    }
9277db96d56Sopenharmony_ci    return_value = _winapi_ReadFile_impl(module, handle, size, use_overlapped);
9287db96d56Sopenharmony_ci
9297db96d56Sopenharmony_ciexit:
9307db96d56Sopenharmony_ci    return return_value;
9317db96d56Sopenharmony_ci}
9327db96d56Sopenharmony_ci
9337db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_SetNamedPipeHandleState__doc__,
9347db96d56Sopenharmony_ci"SetNamedPipeHandleState($module, named_pipe, mode,\n"
9357db96d56Sopenharmony_ci"                        max_collection_count, collect_data_timeout, /)\n"
9367db96d56Sopenharmony_ci"--\n"
9377db96d56Sopenharmony_ci"\n");
9387db96d56Sopenharmony_ci
9397db96d56Sopenharmony_ci#define _WINAPI_SETNAMEDPIPEHANDLESTATE_METHODDEF    \
9407db96d56Sopenharmony_ci    {"SetNamedPipeHandleState", _PyCFunction_CAST(_winapi_SetNamedPipeHandleState), METH_FASTCALL, _winapi_SetNamedPipeHandleState__doc__},
9417db96d56Sopenharmony_ci
9427db96d56Sopenharmony_cistatic PyObject *
9437db96d56Sopenharmony_ci_winapi_SetNamedPipeHandleState_impl(PyObject *module, HANDLE named_pipe,
9447db96d56Sopenharmony_ci                                     PyObject *mode,
9457db96d56Sopenharmony_ci                                     PyObject *max_collection_count,
9467db96d56Sopenharmony_ci                                     PyObject *collect_data_timeout);
9477db96d56Sopenharmony_ci
9487db96d56Sopenharmony_cistatic PyObject *
9497db96d56Sopenharmony_ci_winapi_SetNamedPipeHandleState(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
9507db96d56Sopenharmony_ci{
9517db96d56Sopenharmony_ci    PyObject *return_value = NULL;
9527db96d56Sopenharmony_ci    HANDLE named_pipe;
9537db96d56Sopenharmony_ci    PyObject *mode;
9547db96d56Sopenharmony_ci    PyObject *max_collection_count;
9557db96d56Sopenharmony_ci    PyObject *collect_data_timeout;
9567db96d56Sopenharmony_ci
9577db96d56Sopenharmony_ci    if (!_PyArg_ParseStack(args, nargs, "" F_HANDLE "OOO:SetNamedPipeHandleState",
9587db96d56Sopenharmony_ci        &named_pipe, &mode, &max_collection_count, &collect_data_timeout)) {
9597db96d56Sopenharmony_ci        goto exit;
9607db96d56Sopenharmony_ci    }
9617db96d56Sopenharmony_ci    return_value = _winapi_SetNamedPipeHandleState_impl(module, named_pipe, mode, max_collection_count, collect_data_timeout);
9627db96d56Sopenharmony_ci
9637db96d56Sopenharmony_ciexit:
9647db96d56Sopenharmony_ci    return return_value;
9657db96d56Sopenharmony_ci}
9667db96d56Sopenharmony_ci
9677db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_TerminateProcess__doc__,
9687db96d56Sopenharmony_ci"TerminateProcess($module, handle, exit_code, /)\n"
9697db96d56Sopenharmony_ci"--\n"
9707db96d56Sopenharmony_ci"\n"
9717db96d56Sopenharmony_ci"Terminate the specified process and all of its threads.");
9727db96d56Sopenharmony_ci
9737db96d56Sopenharmony_ci#define _WINAPI_TERMINATEPROCESS_METHODDEF    \
9747db96d56Sopenharmony_ci    {"TerminateProcess", _PyCFunction_CAST(_winapi_TerminateProcess), METH_FASTCALL, _winapi_TerminateProcess__doc__},
9757db96d56Sopenharmony_ci
9767db96d56Sopenharmony_cistatic PyObject *
9777db96d56Sopenharmony_ci_winapi_TerminateProcess_impl(PyObject *module, HANDLE handle,
9787db96d56Sopenharmony_ci                              UINT exit_code);
9797db96d56Sopenharmony_ci
9807db96d56Sopenharmony_cistatic PyObject *
9817db96d56Sopenharmony_ci_winapi_TerminateProcess(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
9827db96d56Sopenharmony_ci{
9837db96d56Sopenharmony_ci    PyObject *return_value = NULL;
9847db96d56Sopenharmony_ci    HANDLE handle;
9857db96d56Sopenharmony_ci    UINT exit_code;
9867db96d56Sopenharmony_ci
9877db96d56Sopenharmony_ci    if (!_PyArg_ParseStack(args, nargs, "" F_HANDLE "I:TerminateProcess",
9887db96d56Sopenharmony_ci        &handle, &exit_code)) {
9897db96d56Sopenharmony_ci        goto exit;
9907db96d56Sopenharmony_ci    }
9917db96d56Sopenharmony_ci    return_value = _winapi_TerminateProcess_impl(module, handle, exit_code);
9927db96d56Sopenharmony_ci
9937db96d56Sopenharmony_ciexit:
9947db96d56Sopenharmony_ci    return return_value;
9957db96d56Sopenharmony_ci}
9967db96d56Sopenharmony_ci
9977db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_VirtualQuerySize__doc__,
9987db96d56Sopenharmony_ci"VirtualQuerySize($module, address, /)\n"
9997db96d56Sopenharmony_ci"--\n"
10007db96d56Sopenharmony_ci"\n");
10017db96d56Sopenharmony_ci
10027db96d56Sopenharmony_ci#define _WINAPI_VIRTUALQUERYSIZE_METHODDEF    \
10037db96d56Sopenharmony_ci    {"VirtualQuerySize", (PyCFunction)_winapi_VirtualQuerySize, METH_O, _winapi_VirtualQuerySize__doc__},
10047db96d56Sopenharmony_ci
10057db96d56Sopenharmony_cistatic size_t
10067db96d56Sopenharmony_ci_winapi_VirtualQuerySize_impl(PyObject *module, LPCVOID address);
10077db96d56Sopenharmony_ci
10087db96d56Sopenharmony_cistatic PyObject *
10097db96d56Sopenharmony_ci_winapi_VirtualQuerySize(PyObject *module, PyObject *arg)
10107db96d56Sopenharmony_ci{
10117db96d56Sopenharmony_ci    PyObject *return_value = NULL;
10127db96d56Sopenharmony_ci    LPCVOID address;
10137db96d56Sopenharmony_ci    size_t _return_value;
10147db96d56Sopenharmony_ci
10157db96d56Sopenharmony_ci    if (!PyArg_Parse(arg, "" F_POINTER ":VirtualQuerySize", &address)) {
10167db96d56Sopenharmony_ci        goto exit;
10177db96d56Sopenharmony_ci    }
10187db96d56Sopenharmony_ci    _return_value = _winapi_VirtualQuerySize_impl(module, address);
10197db96d56Sopenharmony_ci    if ((_return_value == (size_t)-1) && PyErr_Occurred()) {
10207db96d56Sopenharmony_ci        goto exit;
10217db96d56Sopenharmony_ci    }
10227db96d56Sopenharmony_ci    return_value = PyLong_FromSize_t(_return_value);
10237db96d56Sopenharmony_ci
10247db96d56Sopenharmony_ciexit:
10257db96d56Sopenharmony_ci    return return_value;
10267db96d56Sopenharmony_ci}
10277db96d56Sopenharmony_ci
10287db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_WaitNamedPipe__doc__,
10297db96d56Sopenharmony_ci"WaitNamedPipe($module, name, timeout, /)\n"
10307db96d56Sopenharmony_ci"--\n"
10317db96d56Sopenharmony_ci"\n");
10327db96d56Sopenharmony_ci
10337db96d56Sopenharmony_ci#define _WINAPI_WAITNAMEDPIPE_METHODDEF    \
10347db96d56Sopenharmony_ci    {"WaitNamedPipe", _PyCFunction_CAST(_winapi_WaitNamedPipe), METH_FASTCALL, _winapi_WaitNamedPipe__doc__},
10357db96d56Sopenharmony_ci
10367db96d56Sopenharmony_cistatic PyObject *
10377db96d56Sopenharmony_ci_winapi_WaitNamedPipe_impl(PyObject *module, LPCTSTR name, DWORD timeout);
10387db96d56Sopenharmony_ci
10397db96d56Sopenharmony_cistatic PyObject *
10407db96d56Sopenharmony_ci_winapi_WaitNamedPipe(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
10417db96d56Sopenharmony_ci{
10427db96d56Sopenharmony_ci    PyObject *return_value = NULL;
10437db96d56Sopenharmony_ci    LPCTSTR name;
10447db96d56Sopenharmony_ci    DWORD timeout;
10457db96d56Sopenharmony_ci
10467db96d56Sopenharmony_ci    if (!_PyArg_ParseStack(args, nargs, "sk:WaitNamedPipe",
10477db96d56Sopenharmony_ci        &name, &timeout)) {
10487db96d56Sopenharmony_ci        goto exit;
10497db96d56Sopenharmony_ci    }
10507db96d56Sopenharmony_ci    return_value = _winapi_WaitNamedPipe_impl(module, name, timeout);
10517db96d56Sopenharmony_ci
10527db96d56Sopenharmony_ciexit:
10537db96d56Sopenharmony_ci    return return_value;
10547db96d56Sopenharmony_ci}
10557db96d56Sopenharmony_ci
10567db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_WaitForMultipleObjects__doc__,
10577db96d56Sopenharmony_ci"WaitForMultipleObjects($module, handle_seq, wait_flag,\n"
10587db96d56Sopenharmony_ci"                       milliseconds=_winapi.INFINITE, /)\n"
10597db96d56Sopenharmony_ci"--\n"
10607db96d56Sopenharmony_ci"\n");
10617db96d56Sopenharmony_ci
10627db96d56Sopenharmony_ci#define _WINAPI_WAITFORMULTIPLEOBJECTS_METHODDEF    \
10637db96d56Sopenharmony_ci    {"WaitForMultipleObjects", _PyCFunction_CAST(_winapi_WaitForMultipleObjects), METH_FASTCALL, _winapi_WaitForMultipleObjects__doc__},
10647db96d56Sopenharmony_ci
10657db96d56Sopenharmony_cistatic PyObject *
10667db96d56Sopenharmony_ci_winapi_WaitForMultipleObjects_impl(PyObject *module, PyObject *handle_seq,
10677db96d56Sopenharmony_ci                                    BOOL wait_flag, DWORD milliseconds);
10687db96d56Sopenharmony_ci
10697db96d56Sopenharmony_cistatic PyObject *
10707db96d56Sopenharmony_ci_winapi_WaitForMultipleObjects(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
10717db96d56Sopenharmony_ci{
10727db96d56Sopenharmony_ci    PyObject *return_value = NULL;
10737db96d56Sopenharmony_ci    PyObject *handle_seq;
10747db96d56Sopenharmony_ci    BOOL wait_flag;
10757db96d56Sopenharmony_ci    DWORD milliseconds = INFINITE;
10767db96d56Sopenharmony_ci
10777db96d56Sopenharmony_ci    if (!_PyArg_ParseStack(args, nargs, "Oi|k:WaitForMultipleObjects",
10787db96d56Sopenharmony_ci        &handle_seq, &wait_flag, &milliseconds)) {
10797db96d56Sopenharmony_ci        goto exit;
10807db96d56Sopenharmony_ci    }
10817db96d56Sopenharmony_ci    return_value = _winapi_WaitForMultipleObjects_impl(module, handle_seq, wait_flag, milliseconds);
10827db96d56Sopenharmony_ci
10837db96d56Sopenharmony_ciexit:
10847db96d56Sopenharmony_ci    return return_value;
10857db96d56Sopenharmony_ci}
10867db96d56Sopenharmony_ci
10877db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_WaitForSingleObject__doc__,
10887db96d56Sopenharmony_ci"WaitForSingleObject($module, handle, milliseconds, /)\n"
10897db96d56Sopenharmony_ci"--\n"
10907db96d56Sopenharmony_ci"\n"
10917db96d56Sopenharmony_ci"Wait for a single object.\n"
10927db96d56Sopenharmony_ci"\n"
10937db96d56Sopenharmony_ci"Wait until the specified object is in the signaled state or\n"
10947db96d56Sopenharmony_ci"the time-out interval elapses. The timeout value is specified\n"
10957db96d56Sopenharmony_ci"in milliseconds.");
10967db96d56Sopenharmony_ci
10977db96d56Sopenharmony_ci#define _WINAPI_WAITFORSINGLEOBJECT_METHODDEF    \
10987db96d56Sopenharmony_ci    {"WaitForSingleObject", _PyCFunction_CAST(_winapi_WaitForSingleObject), METH_FASTCALL, _winapi_WaitForSingleObject__doc__},
10997db96d56Sopenharmony_ci
11007db96d56Sopenharmony_cistatic long
11017db96d56Sopenharmony_ci_winapi_WaitForSingleObject_impl(PyObject *module, HANDLE handle,
11027db96d56Sopenharmony_ci                                 DWORD milliseconds);
11037db96d56Sopenharmony_ci
11047db96d56Sopenharmony_cistatic PyObject *
11057db96d56Sopenharmony_ci_winapi_WaitForSingleObject(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
11067db96d56Sopenharmony_ci{
11077db96d56Sopenharmony_ci    PyObject *return_value = NULL;
11087db96d56Sopenharmony_ci    HANDLE handle;
11097db96d56Sopenharmony_ci    DWORD milliseconds;
11107db96d56Sopenharmony_ci    long _return_value;
11117db96d56Sopenharmony_ci
11127db96d56Sopenharmony_ci    if (!_PyArg_ParseStack(args, nargs, "" F_HANDLE "k:WaitForSingleObject",
11137db96d56Sopenharmony_ci        &handle, &milliseconds)) {
11147db96d56Sopenharmony_ci        goto exit;
11157db96d56Sopenharmony_ci    }
11167db96d56Sopenharmony_ci    _return_value = _winapi_WaitForSingleObject_impl(module, handle, milliseconds);
11177db96d56Sopenharmony_ci    if ((_return_value == -1) && PyErr_Occurred()) {
11187db96d56Sopenharmony_ci        goto exit;
11197db96d56Sopenharmony_ci    }
11207db96d56Sopenharmony_ci    return_value = PyLong_FromLong(_return_value);
11217db96d56Sopenharmony_ci
11227db96d56Sopenharmony_ciexit:
11237db96d56Sopenharmony_ci    return return_value;
11247db96d56Sopenharmony_ci}
11257db96d56Sopenharmony_ci
11267db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_WriteFile__doc__,
11277db96d56Sopenharmony_ci"WriteFile($module, /, handle, buffer, overlapped=False)\n"
11287db96d56Sopenharmony_ci"--\n"
11297db96d56Sopenharmony_ci"\n");
11307db96d56Sopenharmony_ci
11317db96d56Sopenharmony_ci#define _WINAPI_WRITEFILE_METHODDEF    \
11327db96d56Sopenharmony_ci    {"WriteFile", _PyCFunction_CAST(_winapi_WriteFile), METH_FASTCALL|METH_KEYWORDS, _winapi_WriteFile__doc__},
11337db96d56Sopenharmony_ci
11347db96d56Sopenharmony_cistatic PyObject *
11357db96d56Sopenharmony_ci_winapi_WriteFile_impl(PyObject *module, HANDLE handle, PyObject *buffer,
11367db96d56Sopenharmony_ci                       int use_overlapped);
11377db96d56Sopenharmony_ci
11387db96d56Sopenharmony_cistatic PyObject *
11397db96d56Sopenharmony_ci_winapi_WriteFile(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
11407db96d56Sopenharmony_ci{
11417db96d56Sopenharmony_ci    PyObject *return_value = NULL;
11427db96d56Sopenharmony_ci    static const char * const _keywords[] = {"handle", "buffer", "overlapped", NULL};
11437db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {"" F_HANDLE "O|i:WriteFile", _keywords, 0};
11447db96d56Sopenharmony_ci    HANDLE handle;
11457db96d56Sopenharmony_ci    PyObject *buffer;
11467db96d56Sopenharmony_ci    int use_overlapped = 0;
11477db96d56Sopenharmony_ci
11487db96d56Sopenharmony_ci    if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
11497db96d56Sopenharmony_ci        &handle, &buffer, &use_overlapped)) {
11507db96d56Sopenharmony_ci        goto exit;
11517db96d56Sopenharmony_ci    }
11527db96d56Sopenharmony_ci    return_value = _winapi_WriteFile_impl(module, handle, buffer, use_overlapped);
11537db96d56Sopenharmony_ci
11547db96d56Sopenharmony_ciexit:
11557db96d56Sopenharmony_ci    return return_value;
11567db96d56Sopenharmony_ci}
11577db96d56Sopenharmony_ci
11587db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_GetACP__doc__,
11597db96d56Sopenharmony_ci"GetACP($module, /)\n"
11607db96d56Sopenharmony_ci"--\n"
11617db96d56Sopenharmony_ci"\n"
11627db96d56Sopenharmony_ci"Get the current Windows ANSI code page identifier.");
11637db96d56Sopenharmony_ci
11647db96d56Sopenharmony_ci#define _WINAPI_GETACP_METHODDEF    \
11657db96d56Sopenharmony_ci    {"GetACP", (PyCFunction)_winapi_GetACP, METH_NOARGS, _winapi_GetACP__doc__},
11667db96d56Sopenharmony_ci
11677db96d56Sopenharmony_cistatic PyObject *
11687db96d56Sopenharmony_ci_winapi_GetACP_impl(PyObject *module);
11697db96d56Sopenharmony_ci
11707db96d56Sopenharmony_cistatic PyObject *
11717db96d56Sopenharmony_ci_winapi_GetACP(PyObject *module, PyObject *Py_UNUSED(ignored))
11727db96d56Sopenharmony_ci{
11737db96d56Sopenharmony_ci    return _winapi_GetACP_impl(module);
11747db96d56Sopenharmony_ci}
11757db96d56Sopenharmony_ci
11767db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi_GetFileType__doc__,
11777db96d56Sopenharmony_ci"GetFileType($module, /, handle)\n"
11787db96d56Sopenharmony_ci"--\n"
11797db96d56Sopenharmony_ci"\n");
11807db96d56Sopenharmony_ci
11817db96d56Sopenharmony_ci#define _WINAPI_GETFILETYPE_METHODDEF    \
11827db96d56Sopenharmony_ci    {"GetFileType", _PyCFunction_CAST(_winapi_GetFileType), METH_FASTCALL|METH_KEYWORDS, _winapi_GetFileType__doc__},
11837db96d56Sopenharmony_ci
11847db96d56Sopenharmony_cistatic DWORD
11857db96d56Sopenharmony_ci_winapi_GetFileType_impl(PyObject *module, HANDLE handle);
11867db96d56Sopenharmony_ci
11877db96d56Sopenharmony_cistatic PyObject *
11887db96d56Sopenharmony_ci_winapi_GetFileType(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
11897db96d56Sopenharmony_ci{
11907db96d56Sopenharmony_ci    PyObject *return_value = NULL;
11917db96d56Sopenharmony_ci    static const char * const _keywords[] = {"handle", NULL};
11927db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {"" F_HANDLE ":GetFileType", _keywords, 0};
11937db96d56Sopenharmony_ci    HANDLE handle;
11947db96d56Sopenharmony_ci    DWORD _return_value;
11957db96d56Sopenharmony_ci
11967db96d56Sopenharmony_ci    if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
11977db96d56Sopenharmony_ci        &handle)) {
11987db96d56Sopenharmony_ci        goto exit;
11997db96d56Sopenharmony_ci    }
12007db96d56Sopenharmony_ci    _return_value = _winapi_GetFileType_impl(module, handle);
12017db96d56Sopenharmony_ci    if ((_return_value == PY_DWORD_MAX) && PyErr_Occurred()) {
12027db96d56Sopenharmony_ci        goto exit;
12037db96d56Sopenharmony_ci    }
12047db96d56Sopenharmony_ci    return_value = Py_BuildValue("k", _return_value);
12057db96d56Sopenharmony_ci
12067db96d56Sopenharmony_ciexit:
12077db96d56Sopenharmony_ci    return return_value;
12087db96d56Sopenharmony_ci}
12097db96d56Sopenharmony_ci
12107db96d56Sopenharmony_ciPyDoc_STRVAR(_winapi__mimetypes_read_windows_registry__doc__,
12117db96d56Sopenharmony_ci"_mimetypes_read_windows_registry($module, /, on_type_read)\n"
12127db96d56Sopenharmony_ci"--\n"
12137db96d56Sopenharmony_ci"\n"
12147db96d56Sopenharmony_ci"Optimized function for reading all known MIME types from the registry.\n"
12157db96d56Sopenharmony_ci"\n"
12167db96d56Sopenharmony_ci"*on_type_read* is a callable taking *type* and *ext* arguments, as for\n"
12177db96d56Sopenharmony_ci"MimeTypes.add_type.");
12187db96d56Sopenharmony_ci
12197db96d56Sopenharmony_ci#define _WINAPI__MIMETYPES_READ_WINDOWS_REGISTRY_METHODDEF    \
12207db96d56Sopenharmony_ci    {"_mimetypes_read_windows_registry", _PyCFunction_CAST(_winapi__mimetypes_read_windows_registry), METH_FASTCALL|METH_KEYWORDS, _winapi__mimetypes_read_windows_registry__doc__},
12217db96d56Sopenharmony_ci
12227db96d56Sopenharmony_cistatic PyObject *
12237db96d56Sopenharmony_ci_winapi__mimetypes_read_windows_registry_impl(PyObject *module,
12247db96d56Sopenharmony_ci                                              PyObject *on_type_read);
12257db96d56Sopenharmony_ci
12267db96d56Sopenharmony_cistatic PyObject *
12277db96d56Sopenharmony_ci_winapi__mimetypes_read_windows_registry(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
12287db96d56Sopenharmony_ci{
12297db96d56Sopenharmony_ci    PyObject *return_value = NULL;
12307db96d56Sopenharmony_ci    static const char * const _keywords[] = {"on_type_read", NULL};
12317db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "_mimetypes_read_windows_registry", 0};
12327db96d56Sopenharmony_ci    PyObject *argsbuf[1];
12337db96d56Sopenharmony_ci    PyObject *on_type_read;
12347db96d56Sopenharmony_ci
12357db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
12367db96d56Sopenharmony_ci    if (!args) {
12377db96d56Sopenharmony_ci        goto exit;
12387db96d56Sopenharmony_ci    }
12397db96d56Sopenharmony_ci    on_type_read = args[0];
12407db96d56Sopenharmony_ci    return_value = _winapi__mimetypes_read_windows_registry_impl(module, on_type_read);
12417db96d56Sopenharmony_ci
12427db96d56Sopenharmony_ciexit:
12437db96d56Sopenharmony_ci    return return_value;
12447db96d56Sopenharmony_ci}
12457db96d56Sopenharmony_ci/*[clinic end generated code: output=9c08a7371fcf5dd4 input=a9049054013a1b77]*/
1246