diff --git a/Misc/NEWS.d/next/Windows/2026-07-03-17-07-40.gh-issue-152433.Lc6HmG.rst b/Misc/NEWS.d/next/Windows/2026-07-03-17-07-40.gh-issue-152433.Lc6HmG.rst new file mode 100644 index 000000000000000..5f944e05b525679 --- /dev/null +++ b/Misc/NEWS.d/next/Windows/2026-07-03-17-07-40.gh-issue-152433.Lc6HmG.rst @@ -0,0 +1 @@ +``_winapi`` module: improve UWP compatibility diff --git a/Modules/_winapi.c b/Modules/_winapi.c index 535784adedb24d8..b3695ffbd6173d1 100644 --- a/Modules/_winapi.c +++ b/Modules/_winapi.c @@ -1214,6 +1214,7 @@ gethandlelist(PyObject *mapping, const char *name, Py_ssize_t *size) return ret; } +#ifdef MS_WINDOWS_DESKTOP typedef struct { LPPROC_THREAD_ATTRIBUTE_LIST attribute_list; LPHANDLE handle_list; @@ -1325,6 +1326,7 @@ getattributelist(PyObject *obj, const char *name, AttributeList *attribute_list) return ret; } +#endif /*[clinic input] _winapi.CreateProcess @@ -1358,6 +1360,9 @@ _winapi_CreateProcess_impl(PyObject *module, const wchar_t *application_name, PyObject *startup_info) /*[clinic end generated code: output=a25c8e49ea1d6427 input=42ac293eaea03fc4]*/ { +#ifndef MS_WINDOWS_DESKTOP + return NULL; +#else PyObject *ret = NULL; BOOL result; PROCESS_INFORMATION pi; @@ -1439,6 +1444,7 @@ _winapi_CreateProcess_impl(PyObject *module, const wchar_t *application_name, freeattributelist(&attribute_list); return ret; +#endif } /*[clinic input] @@ -2582,7 +2588,9 @@ _winapi_BatchedWaitForMultipleObjects_impl(PyObject *module, while (--thread_count >= 0) { HANDLE t = thread_data[thread_count]->thread; if (t) { +#ifdef MS_WINDOWS_DESKTOP TerminateThread(t, WAIT_ABANDONED_0); +#endif CloseHandle(t); } PyMem_Free((void *)thread_data[thread_count]); @@ -2776,7 +2784,11 @@ static PyObject * _winapi_GetOEMCP_impl(PyObject *module) /*[clinic end generated code: output=4def5b07a8be1b3b input=e8caf4353a28e28e]*/ { +#ifndef MS_WINDOWS_DESKTOP + return NULL; +#else return PyLong_FromUnsignedLong(GetOEMCP()); +#endif } /*[clinic input]