17db96d56Sopenharmony_ci/*[clinic input] 27db96d56Sopenharmony_cipreserve 37db96d56Sopenharmony_ci[clinic start generated code]*/ 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_HKEYType_Close__doc__, 67db96d56Sopenharmony_ci"Close($self, /)\n" 77db96d56Sopenharmony_ci"--\n" 87db96d56Sopenharmony_ci"\n" 97db96d56Sopenharmony_ci"Closes the underlying Windows handle.\n" 107db96d56Sopenharmony_ci"\n" 117db96d56Sopenharmony_ci"If the handle is already closed, no error is raised."); 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_ci#define WINREG_HKEYTYPE_CLOSE_METHODDEF \ 147db96d56Sopenharmony_ci {"Close", (PyCFunction)winreg_HKEYType_Close, METH_NOARGS, winreg_HKEYType_Close__doc__}, 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_cistatic PyObject * 177db96d56Sopenharmony_ciwinreg_HKEYType_Close_impl(PyHKEYObject *self); 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_cistatic PyObject * 207db96d56Sopenharmony_ciwinreg_HKEYType_Close(PyHKEYObject *self, PyObject *Py_UNUSED(ignored)) 217db96d56Sopenharmony_ci{ 227db96d56Sopenharmony_ci return winreg_HKEYType_Close_impl(self); 237db96d56Sopenharmony_ci} 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_HKEYType_Detach__doc__, 267db96d56Sopenharmony_ci"Detach($self, /)\n" 277db96d56Sopenharmony_ci"--\n" 287db96d56Sopenharmony_ci"\n" 297db96d56Sopenharmony_ci"Detaches the Windows handle from the handle object.\n" 307db96d56Sopenharmony_ci"\n" 317db96d56Sopenharmony_ci"The result is the value of the handle before it is detached. If the\n" 327db96d56Sopenharmony_ci"handle is already detached, this will return zero.\n" 337db96d56Sopenharmony_ci"\n" 347db96d56Sopenharmony_ci"After calling this function, the handle is effectively invalidated,\n" 357db96d56Sopenharmony_ci"but the handle is not closed. You would call this function when you\n" 367db96d56Sopenharmony_ci"need the underlying win32 handle to exist beyond the lifetime of the\n" 377db96d56Sopenharmony_ci"handle object."); 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ci#define WINREG_HKEYTYPE_DETACH_METHODDEF \ 407db96d56Sopenharmony_ci {"Detach", (PyCFunction)winreg_HKEYType_Detach, METH_NOARGS, winreg_HKEYType_Detach__doc__}, 417db96d56Sopenharmony_ci 427db96d56Sopenharmony_cistatic PyObject * 437db96d56Sopenharmony_ciwinreg_HKEYType_Detach_impl(PyHKEYObject *self); 447db96d56Sopenharmony_ci 457db96d56Sopenharmony_cistatic PyObject * 467db96d56Sopenharmony_ciwinreg_HKEYType_Detach(PyHKEYObject *self, PyObject *Py_UNUSED(ignored)) 477db96d56Sopenharmony_ci{ 487db96d56Sopenharmony_ci return winreg_HKEYType_Detach_impl(self); 497db96d56Sopenharmony_ci} 507db96d56Sopenharmony_ci 517db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_HKEYType___enter____doc__, 527db96d56Sopenharmony_ci"__enter__($self, /)\n" 537db96d56Sopenharmony_ci"--\n" 547db96d56Sopenharmony_ci"\n"); 557db96d56Sopenharmony_ci 567db96d56Sopenharmony_ci#define WINREG_HKEYTYPE___ENTER___METHODDEF \ 577db96d56Sopenharmony_ci {"__enter__", (PyCFunction)winreg_HKEYType___enter__, METH_NOARGS, winreg_HKEYType___enter____doc__}, 587db96d56Sopenharmony_ci 597db96d56Sopenharmony_cistatic PyHKEYObject * 607db96d56Sopenharmony_ciwinreg_HKEYType___enter___impl(PyHKEYObject *self); 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_cistatic PyObject * 637db96d56Sopenharmony_ciwinreg_HKEYType___enter__(PyHKEYObject *self, PyObject *Py_UNUSED(ignored)) 647db96d56Sopenharmony_ci{ 657db96d56Sopenharmony_ci PyObject *return_value = NULL; 667db96d56Sopenharmony_ci PyHKEYObject *_return_value; 677db96d56Sopenharmony_ci 687db96d56Sopenharmony_ci _return_value = winreg_HKEYType___enter___impl(self); 697db96d56Sopenharmony_ci return_value = (PyObject *)_return_value; 707db96d56Sopenharmony_ci 717db96d56Sopenharmony_ci return return_value; 727db96d56Sopenharmony_ci} 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_HKEYType___exit____doc__, 757db96d56Sopenharmony_ci"__exit__($self, /, exc_type, exc_value, traceback)\n" 767db96d56Sopenharmony_ci"--\n" 777db96d56Sopenharmony_ci"\n"); 787db96d56Sopenharmony_ci 797db96d56Sopenharmony_ci#define WINREG_HKEYTYPE___EXIT___METHODDEF \ 807db96d56Sopenharmony_ci {"__exit__", _PyCFunction_CAST(winreg_HKEYType___exit__), METH_FASTCALL|METH_KEYWORDS, winreg_HKEYType___exit____doc__}, 817db96d56Sopenharmony_ci 827db96d56Sopenharmony_cistatic PyObject * 837db96d56Sopenharmony_ciwinreg_HKEYType___exit___impl(PyHKEYObject *self, PyObject *exc_type, 847db96d56Sopenharmony_ci PyObject *exc_value, PyObject *traceback); 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_cistatic PyObject * 877db96d56Sopenharmony_ciwinreg_HKEYType___exit__(PyHKEYObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 887db96d56Sopenharmony_ci{ 897db96d56Sopenharmony_ci PyObject *return_value = NULL; 907db96d56Sopenharmony_ci static const char * const _keywords[] = {"exc_type", "exc_value", "traceback", NULL}; 917db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "__exit__", 0}; 927db96d56Sopenharmony_ci PyObject *argsbuf[3]; 937db96d56Sopenharmony_ci PyObject *exc_type; 947db96d56Sopenharmony_ci PyObject *exc_value; 957db96d56Sopenharmony_ci PyObject *traceback; 967db96d56Sopenharmony_ci 977db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 3, 3, 0, argsbuf); 987db96d56Sopenharmony_ci if (!args) { 997db96d56Sopenharmony_ci goto exit; 1007db96d56Sopenharmony_ci } 1017db96d56Sopenharmony_ci exc_type = args[0]; 1027db96d56Sopenharmony_ci exc_value = args[1]; 1037db96d56Sopenharmony_ci traceback = args[2]; 1047db96d56Sopenharmony_ci return_value = winreg_HKEYType___exit___impl(self, exc_type, exc_value, traceback); 1057db96d56Sopenharmony_ci 1067db96d56Sopenharmony_ciexit: 1077db96d56Sopenharmony_ci return return_value; 1087db96d56Sopenharmony_ci} 1097db96d56Sopenharmony_ci 1107db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_CloseKey__doc__, 1117db96d56Sopenharmony_ci"CloseKey($module, hkey, /)\n" 1127db96d56Sopenharmony_ci"--\n" 1137db96d56Sopenharmony_ci"\n" 1147db96d56Sopenharmony_ci"Closes a previously opened registry key.\n" 1157db96d56Sopenharmony_ci"\n" 1167db96d56Sopenharmony_ci" hkey\n" 1177db96d56Sopenharmony_ci" A previously opened key.\n" 1187db96d56Sopenharmony_ci"\n" 1197db96d56Sopenharmony_ci"Note that if the key is not closed using this method, it will be\n" 1207db96d56Sopenharmony_ci"closed when the hkey object is destroyed by Python."); 1217db96d56Sopenharmony_ci 1227db96d56Sopenharmony_ci#define WINREG_CLOSEKEY_METHODDEF \ 1237db96d56Sopenharmony_ci {"CloseKey", (PyCFunction)winreg_CloseKey, METH_O, winreg_CloseKey__doc__}, 1247db96d56Sopenharmony_ci 1257db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_ConnectRegistry__doc__, 1267db96d56Sopenharmony_ci"ConnectRegistry($module, computer_name, key, /)\n" 1277db96d56Sopenharmony_ci"--\n" 1287db96d56Sopenharmony_ci"\n" 1297db96d56Sopenharmony_ci"Establishes a connection to the registry on another computer.\n" 1307db96d56Sopenharmony_ci"\n" 1317db96d56Sopenharmony_ci" computer_name\n" 1327db96d56Sopenharmony_ci" The name of the remote computer, of the form r\"\\\\computername\". If\n" 1337db96d56Sopenharmony_ci" None, the local computer is used.\n" 1347db96d56Sopenharmony_ci" key\n" 1357db96d56Sopenharmony_ci" The predefined key to connect to.\n" 1367db96d56Sopenharmony_ci"\n" 1377db96d56Sopenharmony_ci"The return value is the handle of the opened key.\n" 1387db96d56Sopenharmony_ci"If the function fails, an OSError exception is raised."); 1397db96d56Sopenharmony_ci 1407db96d56Sopenharmony_ci#define WINREG_CONNECTREGISTRY_METHODDEF \ 1417db96d56Sopenharmony_ci {"ConnectRegistry", _PyCFunction_CAST(winreg_ConnectRegistry), METH_FASTCALL, winreg_ConnectRegistry__doc__}, 1427db96d56Sopenharmony_ci 1437db96d56Sopenharmony_cistatic HKEY 1447db96d56Sopenharmony_ciwinreg_ConnectRegistry_impl(PyObject *module, 1457db96d56Sopenharmony_ci const Py_UNICODE *computer_name, HKEY key); 1467db96d56Sopenharmony_ci 1477db96d56Sopenharmony_cistatic PyObject * 1487db96d56Sopenharmony_ciwinreg_ConnectRegistry(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 1497db96d56Sopenharmony_ci{ 1507db96d56Sopenharmony_ci PyObject *return_value = NULL; 1517db96d56Sopenharmony_ci const Py_UNICODE *computer_name = NULL; 1527db96d56Sopenharmony_ci HKEY key; 1537db96d56Sopenharmony_ci HKEY _return_value; 1547db96d56Sopenharmony_ci 1557db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("ConnectRegistry", nargs, 2, 2)) { 1567db96d56Sopenharmony_ci goto exit; 1577db96d56Sopenharmony_ci } 1587db96d56Sopenharmony_ci if (args[0] == Py_None) { 1597db96d56Sopenharmony_ci computer_name = NULL; 1607db96d56Sopenharmony_ci } 1617db96d56Sopenharmony_ci else if (PyUnicode_Check(args[0])) { 1627db96d56Sopenharmony_ci #if USE_UNICODE_WCHAR_CACHE 1637db96d56Sopenharmony_ci computer_name = _PyUnicode_AsUnicode(args[0]); 1647db96d56Sopenharmony_ci #else /* USE_UNICODE_WCHAR_CACHE */ 1657db96d56Sopenharmony_ci computer_name = PyUnicode_AsWideCharString(args[0], NULL); 1667db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 1677db96d56Sopenharmony_ci if (computer_name == NULL) { 1687db96d56Sopenharmony_ci goto exit; 1697db96d56Sopenharmony_ci } 1707db96d56Sopenharmony_ci } 1717db96d56Sopenharmony_ci else { 1727db96d56Sopenharmony_ci _PyArg_BadArgument("ConnectRegistry", "argument 1", "str or None", args[0]); 1737db96d56Sopenharmony_ci goto exit; 1747db96d56Sopenharmony_ci } 1757db96d56Sopenharmony_ci if (!clinic_HKEY_converter(args[1], &key)) { 1767db96d56Sopenharmony_ci goto exit; 1777db96d56Sopenharmony_ci } 1787db96d56Sopenharmony_ci _return_value = winreg_ConnectRegistry_impl(module, computer_name, key); 1797db96d56Sopenharmony_ci if (_return_value == NULL) { 1807db96d56Sopenharmony_ci goto exit; 1817db96d56Sopenharmony_ci } 1827db96d56Sopenharmony_ci return_value = PyHKEY_FromHKEY(_return_value); 1837db96d56Sopenharmony_ci 1847db96d56Sopenharmony_ciexit: 1857db96d56Sopenharmony_ci /* Cleanup for computer_name */ 1867db96d56Sopenharmony_ci #if !USE_UNICODE_WCHAR_CACHE 1877db96d56Sopenharmony_ci PyMem_Free((void *)computer_name); 1887db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 1897db96d56Sopenharmony_ci 1907db96d56Sopenharmony_ci return return_value; 1917db96d56Sopenharmony_ci} 1927db96d56Sopenharmony_ci 1937db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_CreateKey__doc__, 1947db96d56Sopenharmony_ci"CreateKey($module, key, sub_key, /)\n" 1957db96d56Sopenharmony_ci"--\n" 1967db96d56Sopenharmony_ci"\n" 1977db96d56Sopenharmony_ci"Creates or opens the specified key.\n" 1987db96d56Sopenharmony_ci"\n" 1997db96d56Sopenharmony_ci" key\n" 2007db96d56Sopenharmony_ci" An already open key, or one of the predefined HKEY_* constants.\n" 2017db96d56Sopenharmony_ci" sub_key\n" 2027db96d56Sopenharmony_ci" The name of the key this method opens or creates.\n" 2037db96d56Sopenharmony_ci"\n" 2047db96d56Sopenharmony_ci"If key is one of the predefined keys, sub_key may be None. In that case,\n" 2057db96d56Sopenharmony_ci"the handle returned is the same key handle passed in to the function.\n" 2067db96d56Sopenharmony_ci"\n" 2077db96d56Sopenharmony_ci"If the key already exists, this function opens the existing key.\n" 2087db96d56Sopenharmony_ci"\n" 2097db96d56Sopenharmony_ci"The return value is the handle of the opened key.\n" 2107db96d56Sopenharmony_ci"If the function fails, an OSError exception is raised."); 2117db96d56Sopenharmony_ci 2127db96d56Sopenharmony_ci#define WINREG_CREATEKEY_METHODDEF \ 2137db96d56Sopenharmony_ci {"CreateKey", _PyCFunction_CAST(winreg_CreateKey), METH_FASTCALL, winreg_CreateKey__doc__}, 2147db96d56Sopenharmony_ci 2157db96d56Sopenharmony_cistatic HKEY 2167db96d56Sopenharmony_ciwinreg_CreateKey_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key); 2177db96d56Sopenharmony_ci 2187db96d56Sopenharmony_cistatic PyObject * 2197db96d56Sopenharmony_ciwinreg_CreateKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 2207db96d56Sopenharmony_ci{ 2217db96d56Sopenharmony_ci PyObject *return_value = NULL; 2227db96d56Sopenharmony_ci HKEY key; 2237db96d56Sopenharmony_ci const Py_UNICODE *sub_key = NULL; 2247db96d56Sopenharmony_ci HKEY _return_value; 2257db96d56Sopenharmony_ci 2267db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("CreateKey", nargs, 2, 2)) { 2277db96d56Sopenharmony_ci goto exit; 2287db96d56Sopenharmony_ci } 2297db96d56Sopenharmony_ci if (!clinic_HKEY_converter(args[0], &key)) { 2307db96d56Sopenharmony_ci goto exit; 2317db96d56Sopenharmony_ci } 2327db96d56Sopenharmony_ci if (args[1] == Py_None) { 2337db96d56Sopenharmony_ci sub_key = NULL; 2347db96d56Sopenharmony_ci } 2357db96d56Sopenharmony_ci else if (PyUnicode_Check(args[1])) { 2367db96d56Sopenharmony_ci #if USE_UNICODE_WCHAR_CACHE 2377db96d56Sopenharmony_ci sub_key = _PyUnicode_AsUnicode(args[1]); 2387db96d56Sopenharmony_ci #else /* USE_UNICODE_WCHAR_CACHE */ 2397db96d56Sopenharmony_ci sub_key = PyUnicode_AsWideCharString(args[1], NULL); 2407db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 2417db96d56Sopenharmony_ci if (sub_key == NULL) { 2427db96d56Sopenharmony_ci goto exit; 2437db96d56Sopenharmony_ci } 2447db96d56Sopenharmony_ci } 2457db96d56Sopenharmony_ci else { 2467db96d56Sopenharmony_ci _PyArg_BadArgument("CreateKey", "argument 2", "str or None", args[1]); 2477db96d56Sopenharmony_ci goto exit; 2487db96d56Sopenharmony_ci } 2497db96d56Sopenharmony_ci _return_value = winreg_CreateKey_impl(module, key, sub_key); 2507db96d56Sopenharmony_ci if (_return_value == NULL) { 2517db96d56Sopenharmony_ci goto exit; 2527db96d56Sopenharmony_ci } 2537db96d56Sopenharmony_ci return_value = PyHKEY_FromHKEY(_return_value); 2547db96d56Sopenharmony_ci 2557db96d56Sopenharmony_ciexit: 2567db96d56Sopenharmony_ci /* Cleanup for sub_key */ 2577db96d56Sopenharmony_ci #if !USE_UNICODE_WCHAR_CACHE 2587db96d56Sopenharmony_ci PyMem_Free((void *)sub_key); 2597db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 2607db96d56Sopenharmony_ci 2617db96d56Sopenharmony_ci return return_value; 2627db96d56Sopenharmony_ci} 2637db96d56Sopenharmony_ci 2647db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_CreateKeyEx__doc__, 2657db96d56Sopenharmony_ci"CreateKeyEx($module, /, key, sub_key, reserved=0,\n" 2667db96d56Sopenharmony_ci" access=winreg.KEY_WRITE)\n" 2677db96d56Sopenharmony_ci"--\n" 2687db96d56Sopenharmony_ci"\n" 2697db96d56Sopenharmony_ci"Creates or opens the specified key.\n" 2707db96d56Sopenharmony_ci"\n" 2717db96d56Sopenharmony_ci" key\n" 2727db96d56Sopenharmony_ci" An already open key, or one of the predefined HKEY_* constants.\n" 2737db96d56Sopenharmony_ci" sub_key\n" 2747db96d56Sopenharmony_ci" The name of the key this method opens or creates.\n" 2757db96d56Sopenharmony_ci" reserved\n" 2767db96d56Sopenharmony_ci" A reserved integer, and must be zero. Default is zero.\n" 2777db96d56Sopenharmony_ci" access\n" 2787db96d56Sopenharmony_ci" An integer that specifies an access mask that describes the\n" 2797db96d56Sopenharmony_ci" desired security access for the key. Default is KEY_WRITE.\n" 2807db96d56Sopenharmony_ci"\n" 2817db96d56Sopenharmony_ci"If key is one of the predefined keys, sub_key may be None. In that case,\n" 2827db96d56Sopenharmony_ci"the handle returned is the same key handle passed in to the function.\n" 2837db96d56Sopenharmony_ci"\n" 2847db96d56Sopenharmony_ci"If the key already exists, this function opens the existing key\n" 2857db96d56Sopenharmony_ci"\n" 2867db96d56Sopenharmony_ci"The return value is the handle of the opened key.\n" 2877db96d56Sopenharmony_ci"If the function fails, an OSError exception is raised."); 2887db96d56Sopenharmony_ci 2897db96d56Sopenharmony_ci#define WINREG_CREATEKEYEX_METHODDEF \ 2907db96d56Sopenharmony_ci {"CreateKeyEx", _PyCFunction_CAST(winreg_CreateKeyEx), METH_FASTCALL|METH_KEYWORDS, winreg_CreateKeyEx__doc__}, 2917db96d56Sopenharmony_ci 2927db96d56Sopenharmony_cistatic HKEY 2937db96d56Sopenharmony_ciwinreg_CreateKeyEx_impl(PyObject *module, HKEY key, 2947db96d56Sopenharmony_ci const Py_UNICODE *sub_key, int reserved, 2957db96d56Sopenharmony_ci REGSAM access); 2967db96d56Sopenharmony_ci 2977db96d56Sopenharmony_cistatic PyObject * 2987db96d56Sopenharmony_ciwinreg_CreateKeyEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 2997db96d56Sopenharmony_ci{ 3007db96d56Sopenharmony_ci PyObject *return_value = NULL; 3017db96d56Sopenharmony_ci static const char * const _keywords[] = {"key", "sub_key", "reserved", "access", NULL}; 3027db96d56Sopenharmony_ci static _PyArg_Parser _parser = {"O&O&|ii:CreateKeyEx", _keywords, 0}; 3037db96d56Sopenharmony_ci HKEY key; 3047db96d56Sopenharmony_ci const Py_UNICODE *sub_key = NULL; 3057db96d56Sopenharmony_ci int reserved = 0; 3067db96d56Sopenharmony_ci REGSAM access = KEY_WRITE; 3077db96d56Sopenharmony_ci HKEY _return_value; 3087db96d56Sopenharmony_ci 3097db96d56Sopenharmony_ci if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, 3107db96d56Sopenharmony_ci clinic_HKEY_converter, &key, _PyUnicode_WideCharString_Opt_Converter, &sub_key, &reserved, &access)) { 3117db96d56Sopenharmony_ci goto exit; 3127db96d56Sopenharmony_ci } 3137db96d56Sopenharmony_ci _return_value = winreg_CreateKeyEx_impl(module, key, sub_key, reserved, access); 3147db96d56Sopenharmony_ci if (_return_value == NULL) { 3157db96d56Sopenharmony_ci goto exit; 3167db96d56Sopenharmony_ci } 3177db96d56Sopenharmony_ci return_value = PyHKEY_FromHKEY(_return_value); 3187db96d56Sopenharmony_ci 3197db96d56Sopenharmony_ciexit: 3207db96d56Sopenharmony_ci /* Cleanup for sub_key */ 3217db96d56Sopenharmony_ci #if !USE_UNICODE_WCHAR_CACHE 3227db96d56Sopenharmony_ci PyMem_Free((void *)sub_key); 3237db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 3247db96d56Sopenharmony_ci 3257db96d56Sopenharmony_ci return return_value; 3267db96d56Sopenharmony_ci} 3277db96d56Sopenharmony_ci 3287db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_DeleteKey__doc__, 3297db96d56Sopenharmony_ci"DeleteKey($module, key, sub_key, /)\n" 3307db96d56Sopenharmony_ci"--\n" 3317db96d56Sopenharmony_ci"\n" 3327db96d56Sopenharmony_ci"Deletes the specified key.\n" 3337db96d56Sopenharmony_ci"\n" 3347db96d56Sopenharmony_ci" key\n" 3357db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 3367db96d56Sopenharmony_ci" sub_key\n" 3377db96d56Sopenharmony_ci" A string that must be the name of a subkey of the key identified by\n" 3387db96d56Sopenharmony_ci" the key parameter. This value must not be None, and the key may not\n" 3397db96d56Sopenharmony_ci" have subkeys.\n" 3407db96d56Sopenharmony_ci"\n" 3417db96d56Sopenharmony_ci"This method can not delete keys with subkeys.\n" 3427db96d56Sopenharmony_ci"\n" 3437db96d56Sopenharmony_ci"If the function succeeds, the entire key, including all of its values,\n" 3447db96d56Sopenharmony_ci"is removed. If the function fails, an OSError exception is raised."); 3457db96d56Sopenharmony_ci 3467db96d56Sopenharmony_ci#define WINREG_DELETEKEY_METHODDEF \ 3477db96d56Sopenharmony_ci {"DeleteKey", _PyCFunction_CAST(winreg_DeleteKey), METH_FASTCALL, winreg_DeleteKey__doc__}, 3487db96d56Sopenharmony_ci 3497db96d56Sopenharmony_cistatic PyObject * 3507db96d56Sopenharmony_ciwinreg_DeleteKey_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key); 3517db96d56Sopenharmony_ci 3527db96d56Sopenharmony_cistatic PyObject * 3537db96d56Sopenharmony_ciwinreg_DeleteKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 3547db96d56Sopenharmony_ci{ 3557db96d56Sopenharmony_ci PyObject *return_value = NULL; 3567db96d56Sopenharmony_ci HKEY key; 3577db96d56Sopenharmony_ci const Py_UNICODE *sub_key = NULL; 3587db96d56Sopenharmony_ci 3597db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("DeleteKey", nargs, 2, 2)) { 3607db96d56Sopenharmony_ci goto exit; 3617db96d56Sopenharmony_ci } 3627db96d56Sopenharmony_ci if (!clinic_HKEY_converter(args[0], &key)) { 3637db96d56Sopenharmony_ci goto exit; 3647db96d56Sopenharmony_ci } 3657db96d56Sopenharmony_ci if (!PyUnicode_Check(args[1])) { 3667db96d56Sopenharmony_ci _PyArg_BadArgument("DeleteKey", "argument 2", "str", args[1]); 3677db96d56Sopenharmony_ci goto exit; 3687db96d56Sopenharmony_ci } 3697db96d56Sopenharmony_ci #if USE_UNICODE_WCHAR_CACHE 3707db96d56Sopenharmony_ci sub_key = _PyUnicode_AsUnicode(args[1]); 3717db96d56Sopenharmony_ci #else /* USE_UNICODE_WCHAR_CACHE */ 3727db96d56Sopenharmony_ci sub_key = PyUnicode_AsWideCharString(args[1], NULL); 3737db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 3747db96d56Sopenharmony_ci if (sub_key == NULL) { 3757db96d56Sopenharmony_ci goto exit; 3767db96d56Sopenharmony_ci } 3777db96d56Sopenharmony_ci return_value = winreg_DeleteKey_impl(module, key, sub_key); 3787db96d56Sopenharmony_ci 3797db96d56Sopenharmony_ciexit: 3807db96d56Sopenharmony_ci /* Cleanup for sub_key */ 3817db96d56Sopenharmony_ci #if !USE_UNICODE_WCHAR_CACHE 3827db96d56Sopenharmony_ci PyMem_Free((void *)sub_key); 3837db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 3847db96d56Sopenharmony_ci 3857db96d56Sopenharmony_ci return return_value; 3867db96d56Sopenharmony_ci} 3877db96d56Sopenharmony_ci 3887db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_DeleteKeyEx__doc__, 3897db96d56Sopenharmony_ci"DeleteKeyEx($module, /, key, sub_key, access=winreg.KEY_WOW64_64KEY,\n" 3907db96d56Sopenharmony_ci" reserved=0)\n" 3917db96d56Sopenharmony_ci"--\n" 3927db96d56Sopenharmony_ci"\n" 3937db96d56Sopenharmony_ci"Deletes the specified key (intended for 64-bit OS).\n" 3947db96d56Sopenharmony_ci"\n" 3957db96d56Sopenharmony_ci" key\n" 3967db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 3977db96d56Sopenharmony_ci" sub_key\n" 3987db96d56Sopenharmony_ci" A string that must be the name of a subkey of the key identified by\n" 3997db96d56Sopenharmony_ci" the key parameter. This value must not be None, and the key may not\n" 4007db96d56Sopenharmony_ci" have subkeys.\n" 4017db96d56Sopenharmony_ci" access\n" 4027db96d56Sopenharmony_ci" An integer that specifies an access mask that describes the\n" 4037db96d56Sopenharmony_ci" desired security access for the key. Default is KEY_WOW64_64KEY.\n" 4047db96d56Sopenharmony_ci" reserved\n" 4057db96d56Sopenharmony_ci" A reserved integer, and must be zero. Default is zero.\n" 4067db96d56Sopenharmony_ci"\n" 4077db96d56Sopenharmony_ci"While this function is intended to be used for 64-bit OS, it is also\n" 4087db96d56Sopenharmony_ci" available on 32-bit systems.\n" 4097db96d56Sopenharmony_ci"\n" 4107db96d56Sopenharmony_ci"This method can not delete keys with subkeys.\n" 4117db96d56Sopenharmony_ci"\n" 4127db96d56Sopenharmony_ci"If the function succeeds, the entire key, including all of its values,\n" 4137db96d56Sopenharmony_ci"is removed. If the function fails, an OSError exception is raised.\n" 4147db96d56Sopenharmony_ci"On unsupported Windows versions, NotImplementedError is raised."); 4157db96d56Sopenharmony_ci 4167db96d56Sopenharmony_ci#define WINREG_DELETEKEYEX_METHODDEF \ 4177db96d56Sopenharmony_ci {"DeleteKeyEx", _PyCFunction_CAST(winreg_DeleteKeyEx), METH_FASTCALL|METH_KEYWORDS, winreg_DeleteKeyEx__doc__}, 4187db96d56Sopenharmony_ci 4197db96d56Sopenharmony_cistatic PyObject * 4207db96d56Sopenharmony_ciwinreg_DeleteKeyEx_impl(PyObject *module, HKEY key, 4217db96d56Sopenharmony_ci const Py_UNICODE *sub_key, REGSAM access, 4227db96d56Sopenharmony_ci int reserved); 4237db96d56Sopenharmony_ci 4247db96d56Sopenharmony_cistatic PyObject * 4257db96d56Sopenharmony_ciwinreg_DeleteKeyEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 4267db96d56Sopenharmony_ci{ 4277db96d56Sopenharmony_ci PyObject *return_value = NULL; 4287db96d56Sopenharmony_ci static const char * const _keywords[] = {"key", "sub_key", "access", "reserved", NULL}; 4297db96d56Sopenharmony_ci static _PyArg_Parser _parser = {"O&O&|ii:DeleteKeyEx", _keywords, 0}; 4307db96d56Sopenharmony_ci HKEY key; 4317db96d56Sopenharmony_ci const Py_UNICODE *sub_key = NULL; 4327db96d56Sopenharmony_ci REGSAM access = KEY_WOW64_64KEY; 4337db96d56Sopenharmony_ci int reserved = 0; 4347db96d56Sopenharmony_ci 4357db96d56Sopenharmony_ci if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, 4367db96d56Sopenharmony_ci clinic_HKEY_converter, &key, _PyUnicode_WideCharString_Converter, &sub_key, &access, &reserved)) { 4377db96d56Sopenharmony_ci goto exit; 4387db96d56Sopenharmony_ci } 4397db96d56Sopenharmony_ci return_value = winreg_DeleteKeyEx_impl(module, key, sub_key, access, reserved); 4407db96d56Sopenharmony_ci 4417db96d56Sopenharmony_ciexit: 4427db96d56Sopenharmony_ci /* Cleanup for sub_key */ 4437db96d56Sopenharmony_ci #if !USE_UNICODE_WCHAR_CACHE 4447db96d56Sopenharmony_ci PyMem_Free((void *)sub_key); 4457db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 4467db96d56Sopenharmony_ci 4477db96d56Sopenharmony_ci return return_value; 4487db96d56Sopenharmony_ci} 4497db96d56Sopenharmony_ci 4507db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_DeleteValue__doc__, 4517db96d56Sopenharmony_ci"DeleteValue($module, key, value, /)\n" 4527db96d56Sopenharmony_ci"--\n" 4537db96d56Sopenharmony_ci"\n" 4547db96d56Sopenharmony_ci"Removes a named value from a registry key.\n" 4557db96d56Sopenharmony_ci"\n" 4567db96d56Sopenharmony_ci" key\n" 4577db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 4587db96d56Sopenharmony_ci" value\n" 4597db96d56Sopenharmony_ci" A string that identifies the value to remove."); 4607db96d56Sopenharmony_ci 4617db96d56Sopenharmony_ci#define WINREG_DELETEVALUE_METHODDEF \ 4627db96d56Sopenharmony_ci {"DeleteValue", _PyCFunction_CAST(winreg_DeleteValue), METH_FASTCALL, winreg_DeleteValue__doc__}, 4637db96d56Sopenharmony_ci 4647db96d56Sopenharmony_cistatic PyObject * 4657db96d56Sopenharmony_ciwinreg_DeleteValue_impl(PyObject *module, HKEY key, const Py_UNICODE *value); 4667db96d56Sopenharmony_ci 4677db96d56Sopenharmony_cistatic PyObject * 4687db96d56Sopenharmony_ciwinreg_DeleteValue(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 4697db96d56Sopenharmony_ci{ 4707db96d56Sopenharmony_ci PyObject *return_value = NULL; 4717db96d56Sopenharmony_ci HKEY key; 4727db96d56Sopenharmony_ci const Py_UNICODE *value = NULL; 4737db96d56Sopenharmony_ci 4747db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("DeleteValue", nargs, 2, 2)) { 4757db96d56Sopenharmony_ci goto exit; 4767db96d56Sopenharmony_ci } 4777db96d56Sopenharmony_ci if (!clinic_HKEY_converter(args[0], &key)) { 4787db96d56Sopenharmony_ci goto exit; 4797db96d56Sopenharmony_ci } 4807db96d56Sopenharmony_ci if (args[1] == Py_None) { 4817db96d56Sopenharmony_ci value = NULL; 4827db96d56Sopenharmony_ci } 4837db96d56Sopenharmony_ci else if (PyUnicode_Check(args[1])) { 4847db96d56Sopenharmony_ci #if USE_UNICODE_WCHAR_CACHE 4857db96d56Sopenharmony_ci value = _PyUnicode_AsUnicode(args[1]); 4867db96d56Sopenharmony_ci #else /* USE_UNICODE_WCHAR_CACHE */ 4877db96d56Sopenharmony_ci value = PyUnicode_AsWideCharString(args[1], NULL); 4887db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 4897db96d56Sopenharmony_ci if (value == NULL) { 4907db96d56Sopenharmony_ci goto exit; 4917db96d56Sopenharmony_ci } 4927db96d56Sopenharmony_ci } 4937db96d56Sopenharmony_ci else { 4947db96d56Sopenharmony_ci _PyArg_BadArgument("DeleteValue", "argument 2", "str or None", args[1]); 4957db96d56Sopenharmony_ci goto exit; 4967db96d56Sopenharmony_ci } 4977db96d56Sopenharmony_ci return_value = winreg_DeleteValue_impl(module, key, value); 4987db96d56Sopenharmony_ci 4997db96d56Sopenharmony_ciexit: 5007db96d56Sopenharmony_ci /* Cleanup for value */ 5017db96d56Sopenharmony_ci #if !USE_UNICODE_WCHAR_CACHE 5027db96d56Sopenharmony_ci PyMem_Free((void *)value); 5037db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 5047db96d56Sopenharmony_ci 5057db96d56Sopenharmony_ci return return_value; 5067db96d56Sopenharmony_ci} 5077db96d56Sopenharmony_ci 5087db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_EnumKey__doc__, 5097db96d56Sopenharmony_ci"EnumKey($module, key, index, /)\n" 5107db96d56Sopenharmony_ci"--\n" 5117db96d56Sopenharmony_ci"\n" 5127db96d56Sopenharmony_ci"Enumerates subkeys of an open registry key.\n" 5137db96d56Sopenharmony_ci"\n" 5147db96d56Sopenharmony_ci" key\n" 5157db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 5167db96d56Sopenharmony_ci" index\n" 5177db96d56Sopenharmony_ci" An integer that identifies the index of the key to retrieve.\n" 5187db96d56Sopenharmony_ci"\n" 5197db96d56Sopenharmony_ci"The function retrieves the name of one subkey each time it is called.\n" 5207db96d56Sopenharmony_ci"It is typically called repeatedly until an OSError exception is\n" 5217db96d56Sopenharmony_ci"raised, indicating no more values are available."); 5227db96d56Sopenharmony_ci 5237db96d56Sopenharmony_ci#define WINREG_ENUMKEY_METHODDEF \ 5247db96d56Sopenharmony_ci {"EnumKey", _PyCFunction_CAST(winreg_EnumKey), METH_FASTCALL, winreg_EnumKey__doc__}, 5257db96d56Sopenharmony_ci 5267db96d56Sopenharmony_cistatic PyObject * 5277db96d56Sopenharmony_ciwinreg_EnumKey_impl(PyObject *module, HKEY key, int index); 5287db96d56Sopenharmony_ci 5297db96d56Sopenharmony_cistatic PyObject * 5307db96d56Sopenharmony_ciwinreg_EnumKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 5317db96d56Sopenharmony_ci{ 5327db96d56Sopenharmony_ci PyObject *return_value = NULL; 5337db96d56Sopenharmony_ci HKEY key; 5347db96d56Sopenharmony_ci int index; 5357db96d56Sopenharmony_ci 5367db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("EnumKey", nargs, 2, 2)) { 5377db96d56Sopenharmony_ci goto exit; 5387db96d56Sopenharmony_ci } 5397db96d56Sopenharmony_ci if (!clinic_HKEY_converter(args[0], &key)) { 5407db96d56Sopenharmony_ci goto exit; 5417db96d56Sopenharmony_ci } 5427db96d56Sopenharmony_ci index = _PyLong_AsInt(args[1]); 5437db96d56Sopenharmony_ci if (index == -1 && PyErr_Occurred()) { 5447db96d56Sopenharmony_ci goto exit; 5457db96d56Sopenharmony_ci } 5467db96d56Sopenharmony_ci return_value = winreg_EnumKey_impl(module, key, index); 5477db96d56Sopenharmony_ci 5487db96d56Sopenharmony_ciexit: 5497db96d56Sopenharmony_ci return return_value; 5507db96d56Sopenharmony_ci} 5517db96d56Sopenharmony_ci 5527db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_EnumValue__doc__, 5537db96d56Sopenharmony_ci"EnumValue($module, key, index, /)\n" 5547db96d56Sopenharmony_ci"--\n" 5557db96d56Sopenharmony_ci"\n" 5567db96d56Sopenharmony_ci"Enumerates values of an open registry key.\n" 5577db96d56Sopenharmony_ci"\n" 5587db96d56Sopenharmony_ci" key\n" 5597db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 5607db96d56Sopenharmony_ci" index\n" 5617db96d56Sopenharmony_ci" An integer that identifies the index of the value to retrieve.\n" 5627db96d56Sopenharmony_ci"\n" 5637db96d56Sopenharmony_ci"The function retrieves the name of one subkey each time it is called.\n" 5647db96d56Sopenharmony_ci"It is typically called repeatedly, until an OSError exception\n" 5657db96d56Sopenharmony_ci"is raised, indicating no more values.\n" 5667db96d56Sopenharmony_ci"\n" 5677db96d56Sopenharmony_ci"The result is a tuple of 3 items:\n" 5687db96d56Sopenharmony_ci" value_name\n" 5697db96d56Sopenharmony_ci" A string that identifies the value.\n" 5707db96d56Sopenharmony_ci" value_data\n" 5717db96d56Sopenharmony_ci" An object that holds the value data, and whose type depends\n" 5727db96d56Sopenharmony_ci" on the underlying registry type.\n" 5737db96d56Sopenharmony_ci" data_type\n" 5747db96d56Sopenharmony_ci" An integer that identifies the type of the value data."); 5757db96d56Sopenharmony_ci 5767db96d56Sopenharmony_ci#define WINREG_ENUMVALUE_METHODDEF \ 5777db96d56Sopenharmony_ci {"EnumValue", _PyCFunction_CAST(winreg_EnumValue), METH_FASTCALL, winreg_EnumValue__doc__}, 5787db96d56Sopenharmony_ci 5797db96d56Sopenharmony_cistatic PyObject * 5807db96d56Sopenharmony_ciwinreg_EnumValue_impl(PyObject *module, HKEY key, int index); 5817db96d56Sopenharmony_ci 5827db96d56Sopenharmony_cistatic PyObject * 5837db96d56Sopenharmony_ciwinreg_EnumValue(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 5847db96d56Sopenharmony_ci{ 5857db96d56Sopenharmony_ci PyObject *return_value = NULL; 5867db96d56Sopenharmony_ci HKEY key; 5877db96d56Sopenharmony_ci int index; 5887db96d56Sopenharmony_ci 5897db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("EnumValue", nargs, 2, 2)) { 5907db96d56Sopenharmony_ci goto exit; 5917db96d56Sopenharmony_ci } 5927db96d56Sopenharmony_ci if (!clinic_HKEY_converter(args[0], &key)) { 5937db96d56Sopenharmony_ci goto exit; 5947db96d56Sopenharmony_ci } 5957db96d56Sopenharmony_ci index = _PyLong_AsInt(args[1]); 5967db96d56Sopenharmony_ci if (index == -1 && PyErr_Occurred()) { 5977db96d56Sopenharmony_ci goto exit; 5987db96d56Sopenharmony_ci } 5997db96d56Sopenharmony_ci return_value = winreg_EnumValue_impl(module, key, index); 6007db96d56Sopenharmony_ci 6017db96d56Sopenharmony_ciexit: 6027db96d56Sopenharmony_ci return return_value; 6037db96d56Sopenharmony_ci} 6047db96d56Sopenharmony_ci 6057db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_ExpandEnvironmentStrings__doc__, 6067db96d56Sopenharmony_ci"ExpandEnvironmentStrings($module, string, /)\n" 6077db96d56Sopenharmony_ci"--\n" 6087db96d56Sopenharmony_ci"\n" 6097db96d56Sopenharmony_ci"Expand environment vars."); 6107db96d56Sopenharmony_ci 6117db96d56Sopenharmony_ci#define WINREG_EXPANDENVIRONMENTSTRINGS_METHODDEF \ 6127db96d56Sopenharmony_ci {"ExpandEnvironmentStrings", (PyCFunction)winreg_ExpandEnvironmentStrings, METH_O, winreg_ExpandEnvironmentStrings__doc__}, 6137db96d56Sopenharmony_ci 6147db96d56Sopenharmony_cistatic PyObject * 6157db96d56Sopenharmony_ciwinreg_ExpandEnvironmentStrings_impl(PyObject *module, 6167db96d56Sopenharmony_ci const Py_UNICODE *string); 6177db96d56Sopenharmony_ci 6187db96d56Sopenharmony_cistatic PyObject * 6197db96d56Sopenharmony_ciwinreg_ExpandEnvironmentStrings(PyObject *module, PyObject *arg) 6207db96d56Sopenharmony_ci{ 6217db96d56Sopenharmony_ci PyObject *return_value = NULL; 6227db96d56Sopenharmony_ci const Py_UNICODE *string = NULL; 6237db96d56Sopenharmony_ci 6247db96d56Sopenharmony_ci if (!PyUnicode_Check(arg)) { 6257db96d56Sopenharmony_ci _PyArg_BadArgument("ExpandEnvironmentStrings", "argument", "str", arg); 6267db96d56Sopenharmony_ci goto exit; 6277db96d56Sopenharmony_ci } 6287db96d56Sopenharmony_ci #if USE_UNICODE_WCHAR_CACHE 6297db96d56Sopenharmony_ci string = _PyUnicode_AsUnicode(arg); 6307db96d56Sopenharmony_ci #else /* USE_UNICODE_WCHAR_CACHE */ 6317db96d56Sopenharmony_ci string = PyUnicode_AsWideCharString(arg, NULL); 6327db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 6337db96d56Sopenharmony_ci if (string == NULL) { 6347db96d56Sopenharmony_ci goto exit; 6357db96d56Sopenharmony_ci } 6367db96d56Sopenharmony_ci return_value = winreg_ExpandEnvironmentStrings_impl(module, string); 6377db96d56Sopenharmony_ci 6387db96d56Sopenharmony_ciexit: 6397db96d56Sopenharmony_ci /* Cleanup for string */ 6407db96d56Sopenharmony_ci #if !USE_UNICODE_WCHAR_CACHE 6417db96d56Sopenharmony_ci PyMem_Free((void *)string); 6427db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 6437db96d56Sopenharmony_ci 6447db96d56Sopenharmony_ci return return_value; 6457db96d56Sopenharmony_ci} 6467db96d56Sopenharmony_ci 6477db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_FlushKey__doc__, 6487db96d56Sopenharmony_ci"FlushKey($module, key, /)\n" 6497db96d56Sopenharmony_ci"--\n" 6507db96d56Sopenharmony_ci"\n" 6517db96d56Sopenharmony_ci"Writes all the attributes of a key to the registry.\n" 6527db96d56Sopenharmony_ci"\n" 6537db96d56Sopenharmony_ci" key\n" 6547db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 6557db96d56Sopenharmony_ci"\n" 6567db96d56Sopenharmony_ci"It is not necessary to call FlushKey to change a key. Registry changes\n" 6577db96d56Sopenharmony_ci"are flushed to disk by the registry using its lazy flusher. Registry\n" 6587db96d56Sopenharmony_ci"changes are also flushed to disk at system shutdown. Unlike\n" 6597db96d56Sopenharmony_ci"CloseKey(), the FlushKey() method returns only when all the data has\n" 6607db96d56Sopenharmony_ci"been written to the registry.\n" 6617db96d56Sopenharmony_ci"\n" 6627db96d56Sopenharmony_ci"An application should only call FlushKey() if it requires absolute\n" 6637db96d56Sopenharmony_ci"certainty that registry changes are on disk. If you don\'t know whether\n" 6647db96d56Sopenharmony_ci"a FlushKey() call is required, it probably isn\'t."); 6657db96d56Sopenharmony_ci 6667db96d56Sopenharmony_ci#define WINREG_FLUSHKEY_METHODDEF \ 6677db96d56Sopenharmony_ci {"FlushKey", (PyCFunction)winreg_FlushKey, METH_O, winreg_FlushKey__doc__}, 6687db96d56Sopenharmony_ci 6697db96d56Sopenharmony_cistatic PyObject * 6707db96d56Sopenharmony_ciwinreg_FlushKey_impl(PyObject *module, HKEY key); 6717db96d56Sopenharmony_ci 6727db96d56Sopenharmony_cistatic PyObject * 6737db96d56Sopenharmony_ciwinreg_FlushKey(PyObject *module, PyObject *arg) 6747db96d56Sopenharmony_ci{ 6757db96d56Sopenharmony_ci PyObject *return_value = NULL; 6767db96d56Sopenharmony_ci HKEY key; 6777db96d56Sopenharmony_ci 6787db96d56Sopenharmony_ci if (!clinic_HKEY_converter(arg, &key)) { 6797db96d56Sopenharmony_ci goto exit; 6807db96d56Sopenharmony_ci } 6817db96d56Sopenharmony_ci return_value = winreg_FlushKey_impl(module, key); 6827db96d56Sopenharmony_ci 6837db96d56Sopenharmony_ciexit: 6847db96d56Sopenharmony_ci return return_value; 6857db96d56Sopenharmony_ci} 6867db96d56Sopenharmony_ci 6877db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_LoadKey__doc__, 6887db96d56Sopenharmony_ci"LoadKey($module, key, sub_key, file_name, /)\n" 6897db96d56Sopenharmony_ci"--\n" 6907db96d56Sopenharmony_ci"\n" 6917db96d56Sopenharmony_ci"Insert data into the registry from a file.\n" 6927db96d56Sopenharmony_ci"\n" 6937db96d56Sopenharmony_ci" key\n" 6947db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 6957db96d56Sopenharmony_ci" sub_key\n" 6967db96d56Sopenharmony_ci" A string that identifies the sub-key to load.\n" 6977db96d56Sopenharmony_ci" file_name\n" 6987db96d56Sopenharmony_ci" The name of the file to load registry data from. This file must\n" 6997db96d56Sopenharmony_ci" have been created with the SaveKey() function. Under the file\n" 7007db96d56Sopenharmony_ci" allocation table (FAT) file system, the filename may not have an\n" 7017db96d56Sopenharmony_ci" extension.\n" 7027db96d56Sopenharmony_ci"\n" 7037db96d56Sopenharmony_ci"Creates a subkey under the specified key and stores registration\n" 7047db96d56Sopenharmony_ci"information from a specified file into that subkey.\n" 7057db96d56Sopenharmony_ci"\n" 7067db96d56Sopenharmony_ci"A call to LoadKey() fails if the calling process does not have the\n" 7077db96d56Sopenharmony_ci"SE_RESTORE_PRIVILEGE privilege.\n" 7087db96d56Sopenharmony_ci"\n" 7097db96d56Sopenharmony_ci"If key is a handle returned by ConnectRegistry(), then the path\n" 7107db96d56Sopenharmony_ci"specified in fileName is relative to the remote computer.\n" 7117db96d56Sopenharmony_ci"\n" 7127db96d56Sopenharmony_ci"The MSDN docs imply key must be in the HKEY_USER or HKEY_LOCAL_MACHINE\n" 7137db96d56Sopenharmony_ci"tree."); 7147db96d56Sopenharmony_ci 7157db96d56Sopenharmony_ci#define WINREG_LOADKEY_METHODDEF \ 7167db96d56Sopenharmony_ci {"LoadKey", _PyCFunction_CAST(winreg_LoadKey), METH_FASTCALL, winreg_LoadKey__doc__}, 7177db96d56Sopenharmony_ci 7187db96d56Sopenharmony_cistatic PyObject * 7197db96d56Sopenharmony_ciwinreg_LoadKey_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key, 7207db96d56Sopenharmony_ci const Py_UNICODE *file_name); 7217db96d56Sopenharmony_ci 7227db96d56Sopenharmony_cistatic PyObject * 7237db96d56Sopenharmony_ciwinreg_LoadKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 7247db96d56Sopenharmony_ci{ 7257db96d56Sopenharmony_ci PyObject *return_value = NULL; 7267db96d56Sopenharmony_ci HKEY key; 7277db96d56Sopenharmony_ci const Py_UNICODE *sub_key = NULL; 7287db96d56Sopenharmony_ci const Py_UNICODE *file_name = NULL; 7297db96d56Sopenharmony_ci 7307db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("LoadKey", nargs, 3, 3)) { 7317db96d56Sopenharmony_ci goto exit; 7327db96d56Sopenharmony_ci } 7337db96d56Sopenharmony_ci if (!clinic_HKEY_converter(args[0], &key)) { 7347db96d56Sopenharmony_ci goto exit; 7357db96d56Sopenharmony_ci } 7367db96d56Sopenharmony_ci if (!PyUnicode_Check(args[1])) { 7377db96d56Sopenharmony_ci _PyArg_BadArgument("LoadKey", "argument 2", "str", args[1]); 7387db96d56Sopenharmony_ci goto exit; 7397db96d56Sopenharmony_ci } 7407db96d56Sopenharmony_ci #if USE_UNICODE_WCHAR_CACHE 7417db96d56Sopenharmony_ci sub_key = _PyUnicode_AsUnicode(args[1]); 7427db96d56Sopenharmony_ci #else /* USE_UNICODE_WCHAR_CACHE */ 7437db96d56Sopenharmony_ci sub_key = PyUnicode_AsWideCharString(args[1], NULL); 7447db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 7457db96d56Sopenharmony_ci if (sub_key == NULL) { 7467db96d56Sopenharmony_ci goto exit; 7477db96d56Sopenharmony_ci } 7487db96d56Sopenharmony_ci if (!PyUnicode_Check(args[2])) { 7497db96d56Sopenharmony_ci _PyArg_BadArgument("LoadKey", "argument 3", "str", args[2]); 7507db96d56Sopenharmony_ci goto exit; 7517db96d56Sopenharmony_ci } 7527db96d56Sopenharmony_ci #if USE_UNICODE_WCHAR_CACHE 7537db96d56Sopenharmony_ci file_name = _PyUnicode_AsUnicode(args[2]); 7547db96d56Sopenharmony_ci #else /* USE_UNICODE_WCHAR_CACHE */ 7557db96d56Sopenharmony_ci file_name = PyUnicode_AsWideCharString(args[2], NULL); 7567db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 7577db96d56Sopenharmony_ci if (file_name == NULL) { 7587db96d56Sopenharmony_ci goto exit; 7597db96d56Sopenharmony_ci } 7607db96d56Sopenharmony_ci return_value = winreg_LoadKey_impl(module, key, sub_key, file_name); 7617db96d56Sopenharmony_ci 7627db96d56Sopenharmony_ciexit: 7637db96d56Sopenharmony_ci /* Cleanup for sub_key */ 7647db96d56Sopenharmony_ci #if !USE_UNICODE_WCHAR_CACHE 7657db96d56Sopenharmony_ci PyMem_Free((void *)sub_key); 7667db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 7677db96d56Sopenharmony_ci /* Cleanup for file_name */ 7687db96d56Sopenharmony_ci #if !USE_UNICODE_WCHAR_CACHE 7697db96d56Sopenharmony_ci PyMem_Free((void *)file_name); 7707db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 7717db96d56Sopenharmony_ci 7727db96d56Sopenharmony_ci return return_value; 7737db96d56Sopenharmony_ci} 7747db96d56Sopenharmony_ci 7757db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_OpenKey__doc__, 7767db96d56Sopenharmony_ci"OpenKey($module, /, key, sub_key, reserved=0, access=winreg.KEY_READ)\n" 7777db96d56Sopenharmony_ci"--\n" 7787db96d56Sopenharmony_ci"\n" 7797db96d56Sopenharmony_ci"Opens the specified key.\n" 7807db96d56Sopenharmony_ci"\n" 7817db96d56Sopenharmony_ci" key\n" 7827db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 7837db96d56Sopenharmony_ci" sub_key\n" 7847db96d56Sopenharmony_ci" A string that identifies the sub_key to open.\n" 7857db96d56Sopenharmony_ci" reserved\n" 7867db96d56Sopenharmony_ci" A reserved integer that must be zero. Default is zero.\n" 7877db96d56Sopenharmony_ci" access\n" 7887db96d56Sopenharmony_ci" An integer that specifies an access mask that describes the desired\n" 7897db96d56Sopenharmony_ci" security access for the key. Default is KEY_READ.\n" 7907db96d56Sopenharmony_ci"\n" 7917db96d56Sopenharmony_ci"The result is a new handle to the specified key.\n" 7927db96d56Sopenharmony_ci"If the function fails, an OSError exception is raised."); 7937db96d56Sopenharmony_ci 7947db96d56Sopenharmony_ci#define WINREG_OPENKEY_METHODDEF \ 7957db96d56Sopenharmony_ci {"OpenKey", _PyCFunction_CAST(winreg_OpenKey), METH_FASTCALL|METH_KEYWORDS, winreg_OpenKey__doc__}, 7967db96d56Sopenharmony_ci 7977db96d56Sopenharmony_cistatic HKEY 7987db96d56Sopenharmony_ciwinreg_OpenKey_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key, 7997db96d56Sopenharmony_ci int reserved, REGSAM access); 8007db96d56Sopenharmony_ci 8017db96d56Sopenharmony_cistatic PyObject * 8027db96d56Sopenharmony_ciwinreg_OpenKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 8037db96d56Sopenharmony_ci{ 8047db96d56Sopenharmony_ci PyObject *return_value = NULL; 8057db96d56Sopenharmony_ci static const char * const _keywords[] = {"key", "sub_key", "reserved", "access", NULL}; 8067db96d56Sopenharmony_ci static _PyArg_Parser _parser = {"O&O&|ii:OpenKey", _keywords, 0}; 8077db96d56Sopenharmony_ci HKEY key; 8087db96d56Sopenharmony_ci const Py_UNICODE *sub_key = NULL; 8097db96d56Sopenharmony_ci int reserved = 0; 8107db96d56Sopenharmony_ci REGSAM access = KEY_READ; 8117db96d56Sopenharmony_ci HKEY _return_value; 8127db96d56Sopenharmony_ci 8137db96d56Sopenharmony_ci if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, 8147db96d56Sopenharmony_ci clinic_HKEY_converter, &key, _PyUnicode_WideCharString_Opt_Converter, &sub_key, &reserved, &access)) { 8157db96d56Sopenharmony_ci goto exit; 8167db96d56Sopenharmony_ci } 8177db96d56Sopenharmony_ci _return_value = winreg_OpenKey_impl(module, key, sub_key, reserved, access); 8187db96d56Sopenharmony_ci if (_return_value == NULL) { 8197db96d56Sopenharmony_ci goto exit; 8207db96d56Sopenharmony_ci } 8217db96d56Sopenharmony_ci return_value = PyHKEY_FromHKEY(_return_value); 8227db96d56Sopenharmony_ci 8237db96d56Sopenharmony_ciexit: 8247db96d56Sopenharmony_ci /* Cleanup for sub_key */ 8257db96d56Sopenharmony_ci #if !USE_UNICODE_WCHAR_CACHE 8267db96d56Sopenharmony_ci PyMem_Free((void *)sub_key); 8277db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 8287db96d56Sopenharmony_ci 8297db96d56Sopenharmony_ci return return_value; 8307db96d56Sopenharmony_ci} 8317db96d56Sopenharmony_ci 8327db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_OpenKeyEx__doc__, 8337db96d56Sopenharmony_ci"OpenKeyEx($module, /, key, sub_key, reserved=0, access=winreg.KEY_READ)\n" 8347db96d56Sopenharmony_ci"--\n" 8357db96d56Sopenharmony_ci"\n" 8367db96d56Sopenharmony_ci"Opens the specified key.\n" 8377db96d56Sopenharmony_ci"\n" 8387db96d56Sopenharmony_ci" key\n" 8397db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 8407db96d56Sopenharmony_ci" sub_key\n" 8417db96d56Sopenharmony_ci" A string that identifies the sub_key to open.\n" 8427db96d56Sopenharmony_ci" reserved\n" 8437db96d56Sopenharmony_ci" A reserved integer that must be zero. Default is zero.\n" 8447db96d56Sopenharmony_ci" access\n" 8457db96d56Sopenharmony_ci" An integer that specifies an access mask that describes the desired\n" 8467db96d56Sopenharmony_ci" security access for the key. Default is KEY_READ.\n" 8477db96d56Sopenharmony_ci"\n" 8487db96d56Sopenharmony_ci"The result is a new handle to the specified key.\n" 8497db96d56Sopenharmony_ci"If the function fails, an OSError exception is raised."); 8507db96d56Sopenharmony_ci 8517db96d56Sopenharmony_ci#define WINREG_OPENKEYEX_METHODDEF \ 8527db96d56Sopenharmony_ci {"OpenKeyEx", _PyCFunction_CAST(winreg_OpenKeyEx), METH_FASTCALL|METH_KEYWORDS, winreg_OpenKeyEx__doc__}, 8537db96d56Sopenharmony_ci 8547db96d56Sopenharmony_cistatic HKEY 8557db96d56Sopenharmony_ciwinreg_OpenKeyEx_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key, 8567db96d56Sopenharmony_ci int reserved, REGSAM access); 8577db96d56Sopenharmony_ci 8587db96d56Sopenharmony_cistatic PyObject * 8597db96d56Sopenharmony_ciwinreg_OpenKeyEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 8607db96d56Sopenharmony_ci{ 8617db96d56Sopenharmony_ci PyObject *return_value = NULL; 8627db96d56Sopenharmony_ci static const char * const _keywords[] = {"key", "sub_key", "reserved", "access", NULL}; 8637db96d56Sopenharmony_ci static _PyArg_Parser _parser = {"O&O&|ii:OpenKeyEx", _keywords, 0}; 8647db96d56Sopenharmony_ci HKEY key; 8657db96d56Sopenharmony_ci const Py_UNICODE *sub_key = NULL; 8667db96d56Sopenharmony_ci int reserved = 0; 8677db96d56Sopenharmony_ci REGSAM access = KEY_READ; 8687db96d56Sopenharmony_ci HKEY _return_value; 8697db96d56Sopenharmony_ci 8707db96d56Sopenharmony_ci if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, 8717db96d56Sopenharmony_ci clinic_HKEY_converter, &key, _PyUnicode_WideCharString_Opt_Converter, &sub_key, &reserved, &access)) { 8727db96d56Sopenharmony_ci goto exit; 8737db96d56Sopenharmony_ci } 8747db96d56Sopenharmony_ci _return_value = winreg_OpenKeyEx_impl(module, key, sub_key, reserved, access); 8757db96d56Sopenharmony_ci if (_return_value == NULL) { 8767db96d56Sopenharmony_ci goto exit; 8777db96d56Sopenharmony_ci } 8787db96d56Sopenharmony_ci return_value = PyHKEY_FromHKEY(_return_value); 8797db96d56Sopenharmony_ci 8807db96d56Sopenharmony_ciexit: 8817db96d56Sopenharmony_ci /* Cleanup for sub_key */ 8827db96d56Sopenharmony_ci #if !USE_UNICODE_WCHAR_CACHE 8837db96d56Sopenharmony_ci PyMem_Free((void *)sub_key); 8847db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 8857db96d56Sopenharmony_ci 8867db96d56Sopenharmony_ci return return_value; 8877db96d56Sopenharmony_ci} 8887db96d56Sopenharmony_ci 8897db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_QueryInfoKey__doc__, 8907db96d56Sopenharmony_ci"QueryInfoKey($module, key, /)\n" 8917db96d56Sopenharmony_ci"--\n" 8927db96d56Sopenharmony_ci"\n" 8937db96d56Sopenharmony_ci"Returns information about a key.\n" 8947db96d56Sopenharmony_ci"\n" 8957db96d56Sopenharmony_ci" key\n" 8967db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 8977db96d56Sopenharmony_ci"\n" 8987db96d56Sopenharmony_ci"The result is a tuple of 3 items:\n" 8997db96d56Sopenharmony_ci"An integer that identifies the number of sub keys this key has.\n" 9007db96d56Sopenharmony_ci"An integer that identifies the number of values this key has.\n" 9017db96d56Sopenharmony_ci"An integer that identifies when the key was last modified (if available)\n" 9027db96d56Sopenharmony_ci"as 100\'s of nanoseconds since Jan 1, 1600."); 9037db96d56Sopenharmony_ci 9047db96d56Sopenharmony_ci#define WINREG_QUERYINFOKEY_METHODDEF \ 9057db96d56Sopenharmony_ci {"QueryInfoKey", (PyCFunction)winreg_QueryInfoKey, METH_O, winreg_QueryInfoKey__doc__}, 9067db96d56Sopenharmony_ci 9077db96d56Sopenharmony_cistatic PyObject * 9087db96d56Sopenharmony_ciwinreg_QueryInfoKey_impl(PyObject *module, HKEY key); 9097db96d56Sopenharmony_ci 9107db96d56Sopenharmony_cistatic PyObject * 9117db96d56Sopenharmony_ciwinreg_QueryInfoKey(PyObject *module, PyObject *arg) 9127db96d56Sopenharmony_ci{ 9137db96d56Sopenharmony_ci PyObject *return_value = NULL; 9147db96d56Sopenharmony_ci HKEY key; 9157db96d56Sopenharmony_ci 9167db96d56Sopenharmony_ci if (!clinic_HKEY_converter(arg, &key)) { 9177db96d56Sopenharmony_ci goto exit; 9187db96d56Sopenharmony_ci } 9197db96d56Sopenharmony_ci return_value = winreg_QueryInfoKey_impl(module, key); 9207db96d56Sopenharmony_ci 9217db96d56Sopenharmony_ciexit: 9227db96d56Sopenharmony_ci return return_value; 9237db96d56Sopenharmony_ci} 9247db96d56Sopenharmony_ci 9257db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_QueryValue__doc__, 9267db96d56Sopenharmony_ci"QueryValue($module, key, sub_key, /)\n" 9277db96d56Sopenharmony_ci"--\n" 9287db96d56Sopenharmony_ci"\n" 9297db96d56Sopenharmony_ci"Retrieves the unnamed value for a key.\n" 9307db96d56Sopenharmony_ci"\n" 9317db96d56Sopenharmony_ci" key\n" 9327db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 9337db96d56Sopenharmony_ci" sub_key\n" 9347db96d56Sopenharmony_ci" A string that holds the name of the subkey with which the value\n" 9357db96d56Sopenharmony_ci" is associated. If this parameter is None or empty, the function\n" 9367db96d56Sopenharmony_ci" retrieves the value set by the SetValue() method for the key\n" 9377db96d56Sopenharmony_ci" identified by key.\n" 9387db96d56Sopenharmony_ci"\n" 9397db96d56Sopenharmony_ci"Values in the registry have name, type, and data components. This method\n" 9407db96d56Sopenharmony_ci"retrieves the data for a key\'s first value that has a NULL name.\n" 9417db96d56Sopenharmony_ci"But since the underlying API call doesn\'t return the type, you\'ll\n" 9427db96d56Sopenharmony_ci"probably be happier using QueryValueEx; this function is just here for\n" 9437db96d56Sopenharmony_ci"completeness."); 9447db96d56Sopenharmony_ci 9457db96d56Sopenharmony_ci#define WINREG_QUERYVALUE_METHODDEF \ 9467db96d56Sopenharmony_ci {"QueryValue", _PyCFunction_CAST(winreg_QueryValue), METH_FASTCALL, winreg_QueryValue__doc__}, 9477db96d56Sopenharmony_ci 9487db96d56Sopenharmony_cistatic PyObject * 9497db96d56Sopenharmony_ciwinreg_QueryValue_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key); 9507db96d56Sopenharmony_ci 9517db96d56Sopenharmony_cistatic PyObject * 9527db96d56Sopenharmony_ciwinreg_QueryValue(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 9537db96d56Sopenharmony_ci{ 9547db96d56Sopenharmony_ci PyObject *return_value = NULL; 9557db96d56Sopenharmony_ci HKEY key; 9567db96d56Sopenharmony_ci const Py_UNICODE *sub_key = NULL; 9577db96d56Sopenharmony_ci 9587db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("QueryValue", nargs, 2, 2)) { 9597db96d56Sopenharmony_ci goto exit; 9607db96d56Sopenharmony_ci } 9617db96d56Sopenharmony_ci if (!clinic_HKEY_converter(args[0], &key)) { 9627db96d56Sopenharmony_ci goto exit; 9637db96d56Sopenharmony_ci } 9647db96d56Sopenharmony_ci if (args[1] == Py_None) { 9657db96d56Sopenharmony_ci sub_key = NULL; 9667db96d56Sopenharmony_ci } 9677db96d56Sopenharmony_ci else if (PyUnicode_Check(args[1])) { 9687db96d56Sopenharmony_ci #if USE_UNICODE_WCHAR_CACHE 9697db96d56Sopenharmony_ci sub_key = _PyUnicode_AsUnicode(args[1]); 9707db96d56Sopenharmony_ci #else /* USE_UNICODE_WCHAR_CACHE */ 9717db96d56Sopenharmony_ci sub_key = PyUnicode_AsWideCharString(args[1], NULL); 9727db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 9737db96d56Sopenharmony_ci if (sub_key == NULL) { 9747db96d56Sopenharmony_ci goto exit; 9757db96d56Sopenharmony_ci } 9767db96d56Sopenharmony_ci } 9777db96d56Sopenharmony_ci else { 9787db96d56Sopenharmony_ci _PyArg_BadArgument("QueryValue", "argument 2", "str or None", args[1]); 9797db96d56Sopenharmony_ci goto exit; 9807db96d56Sopenharmony_ci } 9817db96d56Sopenharmony_ci return_value = winreg_QueryValue_impl(module, key, sub_key); 9827db96d56Sopenharmony_ci 9837db96d56Sopenharmony_ciexit: 9847db96d56Sopenharmony_ci /* Cleanup for sub_key */ 9857db96d56Sopenharmony_ci #if !USE_UNICODE_WCHAR_CACHE 9867db96d56Sopenharmony_ci PyMem_Free((void *)sub_key); 9877db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 9887db96d56Sopenharmony_ci 9897db96d56Sopenharmony_ci return return_value; 9907db96d56Sopenharmony_ci} 9917db96d56Sopenharmony_ci 9927db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_QueryValueEx__doc__, 9937db96d56Sopenharmony_ci"QueryValueEx($module, key, name, /)\n" 9947db96d56Sopenharmony_ci"--\n" 9957db96d56Sopenharmony_ci"\n" 9967db96d56Sopenharmony_ci"Retrieves the type and value of a specified sub-key.\n" 9977db96d56Sopenharmony_ci"\n" 9987db96d56Sopenharmony_ci" key\n" 9997db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 10007db96d56Sopenharmony_ci" name\n" 10017db96d56Sopenharmony_ci" A string indicating the value to query.\n" 10027db96d56Sopenharmony_ci"\n" 10037db96d56Sopenharmony_ci"Behaves mostly like QueryValue(), but also returns the type of the\n" 10047db96d56Sopenharmony_ci"specified value name associated with the given open registry key.\n" 10057db96d56Sopenharmony_ci"\n" 10067db96d56Sopenharmony_ci"The return value is a tuple of the value and the type_id."); 10077db96d56Sopenharmony_ci 10087db96d56Sopenharmony_ci#define WINREG_QUERYVALUEEX_METHODDEF \ 10097db96d56Sopenharmony_ci {"QueryValueEx", _PyCFunction_CAST(winreg_QueryValueEx), METH_FASTCALL, winreg_QueryValueEx__doc__}, 10107db96d56Sopenharmony_ci 10117db96d56Sopenharmony_cistatic PyObject * 10127db96d56Sopenharmony_ciwinreg_QueryValueEx_impl(PyObject *module, HKEY key, const Py_UNICODE *name); 10137db96d56Sopenharmony_ci 10147db96d56Sopenharmony_cistatic PyObject * 10157db96d56Sopenharmony_ciwinreg_QueryValueEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 10167db96d56Sopenharmony_ci{ 10177db96d56Sopenharmony_ci PyObject *return_value = NULL; 10187db96d56Sopenharmony_ci HKEY key; 10197db96d56Sopenharmony_ci const Py_UNICODE *name = NULL; 10207db96d56Sopenharmony_ci 10217db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("QueryValueEx", nargs, 2, 2)) { 10227db96d56Sopenharmony_ci goto exit; 10237db96d56Sopenharmony_ci } 10247db96d56Sopenharmony_ci if (!clinic_HKEY_converter(args[0], &key)) { 10257db96d56Sopenharmony_ci goto exit; 10267db96d56Sopenharmony_ci } 10277db96d56Sopenharmony_ci if (args[1] == Py_None) { 10287db96d56Sopenharmony_ci name = NULL; 10297db96d56Sopenharmony_ci } 10307db96d56Sopenharmony_ci else if (PyUnicode_Check(args[1])) { 10317db96d56Sopenharmony_ci #if USE_UNICODE_WCHAR_CACHE 10327db96d56Sopenharmony_ci name = _PyUnicode_AsUnicode(args[1]); 10337db96d56Sopenharmony_ci #else /* USE_UNICODE_WCHAR_CACHE */ 10347db96d56Sopenharmony_ci name = PyUnicode_AsWideCharString(args[1], NULL); 10357db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 10367db96d56Sopenharmony_ci if (name == NULL) { 10377db96d56Sopenharmony_ci goto exit; 10387db96d56Sopenharmony_ci } 10397db96d56Sopenharmony_ci } 10407db96d56Sopenharmony_ci else { 10417db96d56Sopenharmony_ci _PyArg_BadArgument("QueryValueEx", "argument 2", "str or None", args[1]); 10427db96d56Sopenharmony_ci goto exit; 10437db96d56Sopenharmony_ci } 10447db96d56Sopenharmony_ci return_value = winreg_QueryValueEx_impl(module, key, name); 10457db96d56Sopenharmony_ci 10467db96d56Sopenharmony_ciexit: 10477db96d56Sopenharmony_ci /* Cleanup for name */ 10487db96d56Sopenharmony_ci #if !USE_UNICODE_WCHAR_CACHE 10497db96d56Sopenharmony_ci PyMem_Free((void *)name); 10507db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 10517db96d56Sopenharmony_ci 10527db96d56Sopenharmony_ci return return_value; 10537db96d56Sopenharmony_ci} 10547db96d56Sopenharmony_ci 10557db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_SaveKey__doc__, 10567db96d56Sopenharmony_ci"SaveKey($module, key, file_name, /)\n" 10577db96d56Sopenharmony_ci"--\n" 10587db96d56Sopenharmony_ci"\n" 10597db96d56Sopenharmony_ci"Saves the specified key, and all its subkeys to the specified file.\n" 10607db96d56Sopenharmony_ci"\n" 10617db96d56Sopenharmony_ci" key\n" 10627db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 10637db96d56Sopenharmony_ci" file_name\n" 10647db96d56Sopenharmony_ci" The name of the file to save registry data to. This file cannot\n" 10657db96d56Sopenharmony_ci" already exist. If this filename includes an extension, it cannot be\n" 10667db96d56Sopenharmony_ci" used on file allocation table (FAT) file systems by the LoadKey(),\n" 10677db96d56Sopenharmony_ci" ReplaceKey() or RestoreKey() methods.\n" 10687db96d56Sopenharmony_ci"\n" 10697db96d56Sopenharmony_ci"If key represents a key on a remote computer, the path described by\n" 10707db96d56Sopenharmony_ci"file_name is relative to the remote computer.\n" 10717db96d56Sopenharmony_ci"\n" 10727db96d56Sopenharmony_ci"The caller of this method must possess the SeBackupPrivilege\n" 10737db96d56Sopenharmony_ci"security privilege. This function passes NULL for security_attributes\n" 10747db96d56Sopenharmony_ci"to the API."); 10757db96d56Sopenharmony_ci 10767db96d56Sopenharmony_ci#define WINREG_SAVEKEY_METHODDEF \ 10777db96d56Sopenharmony_ci {"SaveKey", _PyCFunction_CAST(winreg_SaveKey), METH_FASTCALL, winreg_SaveKey__doc__}, 10787db96d56Sopenharmony_ci 10797db96d56Sopenharmony_cistatic PyObject * 10807db96d56Sopenharmony_ciwinreg_SaveKey_impl(PyObject *module, HKEY key, const Py_UNICODE *file_name); 10817db96d56Sopenharmony_ci 10827db96d56Sopenharmony_cistatic PyObject * 10837db96d56Sopenharmony_ciwinreg_SaveKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 10847db96d56Sopenharmony_ci{ 10857db96d56Sopenharmony_ci PyObject *return_value = NULL; 10867db96d56Sopenharmony_ci HKEY key; 10877db96d56Sopenharmony_ci const Py_UNICODE *file_name = NULL; 10887db96d56Sopenharmony_ci 10897db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("SaveKey", nargs, 2, 2)) { 10907db96d56Sopenharmony_ci goto exit; 10917db96d56Sopenharmony_ci } 10927db96d56Sopenharmony_ci if (!clinic_HKEY_converter(args[0], &key)) { 10937db96d56Sopenharmony_ci goto exit; 10947db96d56Sopenharmony_ci } 10957db96d56Sopenharmony_ci if (!PyUnicode_Check(args[1])) { 10967db96d56Sopenharmony_ci _PyArg_BadArgument("SaveKey", "argument 2", "str", args[1]); 10977db96d56Sopenharmony_ci goto exit; 10987db96d56Sopenharmony_ci } 10997db96d56Sopenharmony_ci #if USE_UNICODE_WCHAR_CACHE 11007db96d56Sopenharmony_ci file_name = _PyUnicode_AsUnicode(args[1]); 11017db96d56Sopenharmony_ci #else /* USE_UNICODE_WCHAR_CACHE */ 11027db96d56Sopenharmony_ci file_name = PyUnicode_AsWideCharString(args[1], NULL); 11037db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 11047db96d56Sopenharmony_ci if (file_name == NULL) { 11057db96d56Sopenharmony_ci goto exit; 11067db96d56Sopenharmony_ci } 11077db96d56Sopenharmony_ci return_value = winreg_SaveKey_impl(module, key, file_name); 11087db96d56Sopenharmony_ci 11097db96d56Sopenharmony_ciexit: 11107db96d56Sopenharmony_ci /* Cleanup for file_name */ 11117db96d56Sopenharmony_ci #if !USE_UNICODE_WCHAR_CACHE 11127db96d56Sopenharmony_ci PyMem_Free((void *)file_name); 11137db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 11147db96d56Sopenharmony_ci 11157db96d56Sopenharmony_ci return return_value; 11167db96d56Sopenharmony_ci} 11177db96d56Sopenharmony_ci 11187db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_SetValue__doc__, 11197db96d56Sopenharmony_ci"SetValue($module, key, sub_key, type, value, /)\n" 11207db96d56Sopenharmony_ci"--\n" 11217db96d56Sopenharmony_ci"\n" 11227db96d56Sopenharmony_ci"Associates a value with a specified key.\n" 11237db96d56Sopenharmony_ci"\n" 11247db96d56Sopenharmony_ci" key\n" 11257db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 11267db96d56Sopenharmony_ci" sub_key\n" 11277db96d56Sopenharmony_ci" A string that names the subkey with which the value is associated.\n" 11287db96d56Sopenharmony_ci" type\n" 11297db96d56Sopenharmony_ci" An integer that specifies the type of the data. Currently this must\n" 11307db96d56Sopenharmony_ci" be REG_SZ, meaning only strings are supported.\n" 11317db96d56Sopenharmony_ci" value\n" 11327db96d56Sopenharmony_ci" A string that specifies the new value.\n" 11337db96d56Sopenharmony_ci"\n" 11347db96d56Sopenharmony_ci"If the key specified by the sub_key parameter does not exist, the\n" 11357db96d56Sopenharmony_ci"SetValue function creates it.\n" 11367db96d56Sopenharmony_ci"\n" 11377db96d56Sopenharmony_ci"Value lengths are limited by available memory. Long values (more than\n" 11387db96d56Sopenharmony_ci"2048 bytes) should be stored as files with the filenames stored in\n" 11397db96d56Sopenharmony_ci"the configuration registry to help the registry perform efficiently.\n" 11407db96d56Sopenharmony_ci"\n" 11417db96d56Sopenharmony_ci"The key identified by the key parameter must have been opened with\n" 11427db96d56Sopenharmony_ci"KEY_SET_VALUE access."); 11437db96d56Sopenharmony_ci 11447db96d56Sopenharmony_ci#define WINREG_SETVALUE_METHODDEF \ 11457db96d56Sopenharmony_ci {"SetValue", _PyCFunction_CAST(winreg_SetValue), METH_FASTCALL, winreg_SetValue__doc__}, 11467db96d56Sopenharmony_ci 11477db96d56Sopenharmony_cistatic PyObject * 11487db96d56Sopenharmony_ciwinreg_SetValue_impl(PyObject *module, HKEY key, const Py_UNICODE *sub_key, 11497db96d56Sopenharmony_ci DWORD type, PyObject *value_obj); 11507db96d56Sopenharmony_ci 11517db96d56Sopenharmony_cistatic PyObject * 11527db96d56Sopenharmony_ciwinreg_SetValue(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 11537db96d56Sopenharmony_ci{ 11547db96d56Sopenharmony_ci PyObject *return_value = NULL; 11557db96d56Sopenharmony_ci HKEY key; 11567db96d56Sopenharmony_ci const Py_UNICODE *sub_key = NULL; 11577db96d56Sopenharmony_ci DWORD type; 11587db96d56Sopenharmony_ci PyObject *value_obj; 11597db96d56Sopenharmony_ci 11607db96d56Sopenharmony_ci if (!_PyArg_ParseStack(args, nargs, "O&O&kU:SetValue", 11617db96d56Sopenharmony_ci clinic_HKEY_converter, &key, _PyUnicode_WideCharString_Opt_Converter, &sub_key, &type, &value_obj)) { 11627db96d56Sopenharmony_ci goto exit; 11637db96d56Sopenharmony_ci } 11647db96d56Sopenharmony_ci return_value = winreg_SetValue_impl(module, key, sub_key, type, value_obj); 11657db96d56Sopenharmony_ci 11667db96d56Sopenharmony_ciexit: 11677db96d56Sopenharmony_ci /* Cleanup for sub_key */ 11687db96d56Sopenharmony_ci #if !USE_UNICODE_WCHAR_CACHE 11697db96d56Sopenharmony_ci PyMem_Free((void *)sub_key); 11707db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 11717db96d56Sopenharmony_ci 11727db96d56Sopenharmony_ci return return_value; 11737db96d56Sopenharmony_ci} 11747db96d56Sopenharmony_ci 11757db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_SetValueEx__doc__, 11767db96d56Sopenharmony_ci"SetValueEx($module, key, value_name, reserved, type, value, /)\n" 11777db96d56Sopenharmony_ci"--\n" 11787db96d56Sopenharmony_ci"\n" 11797db96d56Sopenharmony_ci"Stores data in the value field of an open registry key.\n" 11807db96d56Sopenharmony_ci"\n" 11817db96d56Sopenharmony_ci" key\n" 11827db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 11837db96d56Sopenharmony_ci" value_name\n" 11847db96d56Sopenharmony_ci" A string containing the name of the value to set, or None.\n" 11857db96d56Sopenharmony_ci" reserved\n" 11867db96d56Sopenharmony_ci" Can be anything - zero is always passed to the API.\n" 11877db96d56Sopenharmony_ci" type\n" 11887db96d56Sopenharmony_ci" An integer that specifies the type of the data, one of:\n" 11897db96d56Sopenharmony_ci" REG_BINARY -- Binary data in any form.\n" 11907db96d56Sopenharmony_ci" REG_DWORD -- A 32-bit number.\n" 11917db96d56Sopenharmony_ci" REG_DWORD_LITTLE_ENDIAN -- A 32-bit number in little-endian format. Equivalent to REG_DWORD\n" 11927db96d56Sopenharmony_ci" REG_DWORD_BIG_ENDIAN -- A 32-bit number in big-endian format.\n" 11937db96d56Sopenharmony_ci" REG_EXPAND_SZ -- A null-terminated string that contains unexpanded\n" 11947db96d56Sopenharmony_ci" references to environment variables (for example,\n" 11957db96d56Sopenharmony_ci" %PATH%).\n" 11967db96d56Sopenharmony_ci" REG_LINK -- A Unicode symbolic link.\n" 11977db96d56Sopenharmony_ci" REG_MULTI_SZ -- A sequence of null-terminated strings, terminated\n" 11987db96d56Sopenharmony_ci" by two null characters. Note that Python handles\n" 11997db96d56Sopenharmony_ci" this termination automatically.\n" 12007db96d56Sopenharmony_ci" REG_NONE -- No defined value type.\n" 12017db96d56Sopenharmony_ci" REG_QWORD -- A 64-bit number.\n" 12027db96d56Sopenharmony_ci" REG_QWORD_LITTLE_ENDIAN -- A 64-bit number in little-endian format. Equivalent to REG_QWORD.\n" 12037db96d56Sopenharmony_ci" REG_RESOURCE_LIST -- A device-driver resource list.\n" 12047db96d56Sopenharmony_ci" REG_SZ -- A null-terminated string.\n" 12057db96d56Sopenharmony_ci" value\n" 12067db96d56Sopenharmony_ci" A string that specifies the new value.\n" 12077db96d56Sopenharmony_ci"\n" 12087db96d56Sopenharmony_ci"This method can also set additional value and type information for the\n" 12097db96d56Sopenharmony_ci"specified key. The key identified by the key parameter must have been\n" 12107db96d56Sopenharmony_ci"opened with KEY_SET_VALUE access.\n" 12117db96d56Sopenharmony_ci"\n" 12127db96d56Sopenharmony_ci"To open the key, use the CreateKeyEx() or OpenKeyEx() methods.\n" 12137db96d56Sopenharmony_ci"\n" 12147db96d56Sopenharmony_ci"Value lengths are limited by available memory. Long values (more than\n" 12157db96d56Sopenharmony_ci"2048 bytes) should be stored as files with the filenames stored in\n" 12167db96d56Sopenharmony_ci"the configuration registry to help the registry perform efficiently."); 12177db96d56Sopenharmony_ci 12187db96d56Sopenharmony_ci#define WINREG_SETVALUEEX_METHODDEF \ 12197db96d56Sopenharmony_ci {"SetValueEx", _PyCFunction_CAST(winreg_SetValueEx), METH_FASTCALL, winreg_SetValueEx__doc__}, 12207db96d56Sopenharmony_ci 12217db96d56Sopenharmony_cistatic PyObject * 12227db96d56Sopenharmony_ciwinreg_SetValueEx_impl(PyObject *module, HKEY key, 12237db96d56Sopenharmony_ci const Py_UNICODE *value_name, PyObject *reserved, 12247db96d56Sopenharmony_ci DWORD type, PyObject *value); 12257db96d56Sopenharmony_ci 12267db96d56Sopenharmony_cistatic PyObject * 12277db96d56Sopenharmony_ciwinreg_SetValueEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 12287db96d56Sopenharmony_ci{ 12297db96d56Sopenharmony_ci PyObject *return_value = NULL; 12307db96d56Sopenharmony_ci HKEY key; 12317db96d56Sopenharmony_ci const Py_UNICODE *value_name = NULL; 12327db96d56Sopenharmony_ci PyObject *reserved; 12337db96d56Sopenharmony_ci DWORD type; 12347db96d56Sopenharmony_ci PyObject *value; 12357db96d56Sopenharmony_ci 12367db96d56Sopenharmony_ci if (!_PyArg_ParseStack(args, nargs, "O&O&OkO:SetValueEx", 12377db96d56Sopenharmony_ci clinic_HKEY_converter, &key, _PyUnicode_WideCharString_Opt_Converter, &value_name, &reserved, &type, &value)) { 12387db96d56Sopenharmony_ci goto exit; 12397db96d56Sopenharmony_ci } 12407db96d56Sopenharmony_ci return_value = winreg_SetValueEx_impl(module, key, value_name, reserved, type, value); 12417db96d56Sopenharmony_ci 12427db96d56Sopenharmony_ciexit: 12437db96d56Sopenharmony_ci /* Cleanup for value_name */ 12447db96d56Sopenharmony_ci #if !USE_UNICODE_WCHAR_CACHE 12457db96d56Sopenharmony_ci PyMem_Free((void *)value_name); 12467db96d56Sopenharmony_ci #endif /* USE_UNICODE_WCHAR_CACHE */ 12477db96d56Sopenharmony_ci 12487db96d56Sopenharmony_ci return return_value; 12497db96d56Sopenharmony_ci} 12507db96d56Sopenharmony_ci 12517db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_DisableReflectionKey__doc__, 12527db96d56Sopenharmony_ci"DisableReflectionKey($module, key, /)\n" 12537db96d56Sopenharmony_ci"--\n" 12547db96d56Sopenharmony_ci"\n" 12557db96d56Sopenharmony_ci"Disables registry reflection for 32bit processes running on a 64bit OS.\n" 12567db96d56Sopenharmony_ci"\n" 12577db96d56Sopenharmony_ci" key\n" 12587db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 12597db96d56Sopenharmony_ci"\n" 12607db96d56Sopenharmony_ci"Will generally raise NotImplementedError if executed on a 32bit OS.\n" 12617db96d56Sopenharmony_ci"\n" 12627db96d56Sopenharmony_ci"If the key is not on the reflection list, the function succeeds but has\n" 12637db96d56Sopenharmony_ci"no effect. Disabling reflection for a key does not affect reflection\n" 12647db96d56Sopenharmony_ci"of any subkeys."); 12657db96d56Sopenharmony_ci 12667db96d56Sopenharmony_ci#define WINREG_DISABLEREFLECTIONKEY_METHODDEF \ 12677db96d56Sopenharmony_ci {"DisableReflectionKey", (PyCFunction)winreg_DisableReflectionKey, METH_O, winreg_DisableReflectionKey__doc__}, 12687db96d56Sopenharmony_ci 12697db96d56Sopenharmony_cistatic PyObject * 12707db96d56Sopenharmony_ciwinreg_DisableReflectionKey_impl(PyObject *module, HKEY key); 12717db96d56Sopenharmony_ci 12727db96d56Sopenharmony_cistatic PyObject * 12737db96d56Sopenharmony_ciwinreg_DisableReflectionKey(PyObject *module, PyObject *arg) 12747db96d56Sopenharmony_ci{ 12757db96d56Sopenharmony_ci PyObject *return_value = NULL; 12767db96d56Sopenharmony_ci HKEY key; 12777db96d56Sopenharmony_ci 12787db96d56Sopenharmony_ci if (!clinic_HKEY_converter(arg, &key)) { 12797db96d56Sopenharmony_ci goto exit; 12807db96d56Sopenharmony_ci } 12817db96d56Sopenharmony_ci return_value = winreg_DisableReflectionKey_impl(module, key); 12827db96d56Sopenharmony_ci 12837db96d56Sopenharmony_ciexit: 12847db96d56Sopenharmony_ci return return_value; 12857db96d56Sopenharmony_ci} 12867db96d56Sopenharmony_ci 12877db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_EnableReflectionKey__doc__, 12887db96d56Sopenharmony_ci"EnableReflectionKey($module, key, /)\n" 12897db96d56Sopenharmony_ci"--\n" 12907db96d56Sopenharmony_ci"\n" 12917db96d56Sopenharmony_ci"Restores registry reflection for the specified disabled key.\n" 12927db96d56Sopenharmony_ci"\n" 12937db96d56Sopenharmony_ci" key\n" 12947db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 12957db96d56Sopenharmony_ci"\n" 12967db96d56Sopenharmony_ci"Will generally raise NotImplementedError if executed on a 32bit OS.\n" 12977db96d56Sopenharmony_ci"Restoring reflection for a key does not affect reflection of any\n" 12987db96d56Sopenharmony_ci"subkeys."); 12997db96d56Sopenharmony_ci 13007db96d56Sopenharmony_ci#define WINREG_ENABLEREFLECTIONKEY_METHODDEF \ 13017db96d56Sopenharmony_ci {"EnableReflectionKey", (PyCFunction)winreg_EnableReflectionKey, METH_O, winreg_EnableReflectionKey__doc__}, 13027db96d56Sopenharmony_ci 13037db96d56Sopenharmony_cistatic PyObject * 13047db96d56Sopenharmony_ciwinreg_EnableReflectionKey_impl(PyObject *module, HKEY key); 13057db96d56Sopenharmony_ci 13067db96d56Sopenharmony_cistatic PyObject * 13077db96d56Sopenharmony_ciwinreg_EnableReflectionKey(PyObject *module, PyObject *arg) 13087db96d56Sopenharmony_ci{ 13097db96d56Sopenharmony_ci PyObject *return_value = NULL; 13107db96d56Sopenharmony_ci HKEY key; 13117db96d56Sopenharmony_ci 13127db96d56Sopenharmony_ci if (!clinic_HKEY_converter(arg, &key)) { 13137db96d56Sopenharmony_ci goto exit; 13147db96d56Sopenharmony_ci } 13157db96d56Sopenharmony_ci return_value = winreg_EnableReflectionKey_impl(module, key); 13167db96d56Sopenharmony_ci 13177db96d56Sopenharmony_ciexit: 13187db96d56Sopenharmony_ci return return_value; 13197db96d56Sopenharmony_ci} 13207db96d56Sopenharmony_ci 13217db96d56Sopenharmony_ciPyDoc_STRVAR(winreg_QueryReflectionKey__doc__, 13227db96d56Sopenharmony_ci"QueryReflectionKey($module, key, /)\n" 13237db96d56Sopenharmony_ci"--\n" 13247db96d56Sopenharmony_ci"\n" 13257db96d56Sopenharmony_ci"Returns the reflection state for the specified key as a bool.\n" 13267db96d56Sopenharmony_ci"\n" 13277db96d56Sopenharmony_ci" key\n" 13287db96d56Sopenharmony_ci" An already open key, or any one of the predefined HKEY_* constants.\n" 13297db96d56Sopenharmony_ci"\n" 13307db96d56Sopenharmony_ci"Will generally raise NotImplementedError if executed on a 32bit OS."); 13317db96d56Sopenharmony_ci 13327db96d56Sopenharmony_ci#define WINREG_QUERYREFLECTIONKEY_METHODDEF \ 13337db96d56Sopenharmony_ci {"QueryReflectionKey", (PyCFunction)winreg_QueryReflectionKey, METH_O, winreg_QueryReflectionKey__doc__}, 13347db96d56Sopenharmony_ci 13357db96d56Sopenharmony_cistatic PyObject * 13367db96d56Sopenharmony_ciwinreg_QueryReflectionKey_impl(PyObject *module, HKEY key); 13377db96d56Sopenharmony_ci 13387db96d56Sopenharmony_cistatic PyObject * 13397db96d56Sopenharmony_ciwinreg_QueryReflectionKey(PyObject *module, PyObject *arg) 13407db96d56Sopenharmony_ci{ 13417db96d56Sopenharmony_ci PyObject *return_value = NULL; 13427db96d56Sopenharmony_ci HKEY key; 13437db96d56Sopenharmony_ci 13447db96d56Sopenharmony_ci if (!clinic_HKEY_converter(arg, &key)) { 13457db96d56Sopenharmony_ci goto exit; 13467db96d56Sopenharmony_ci } 13477db96d56Sopenharmony_ci return_value = winreg_QueryReflectionKey_impl(module, key); 13487db96d56Sopenharmony_ci 13497db96d56Sopenharmony_ciexit: 13507db96d56Sopenharmony_ci return return_value; 13517db96d56Sopenharmony_ci} 13527db96d56Sopenharmony_ci/*[clinic end generated code: output=e83bdaabb4fa2167 input=a9049054013a1b77]*/ 1353