データ構造 | |
struct | spoolss_policy_hnd_object |
関数 | |
PyObject * | new_spoolss_policy_hnd_object (struct cli_state *cli, TALLOC_CTX *mem_ctx, POLICY_HND *pol) |
PyObject * | spoolss_enumprinterdrivers (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_getprinterdriver (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_getprinterdriverdir (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_addprinterdriver (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_addprinterdriverex (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_deleteprinterdriver (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_deleteprinterdriverex (PyObject *self, PyObject *args, PyObject *kw) |
BOOL | py_from_DRIVER_INFO_1 (PyObject **dict, DRIVER_INFO_1 *info) |
BOOL | py_to_DRIVER_INFO_1 (DRIVER_INFO_1 *info, PyObject *dict) |
BOOL | py_from_DRIVER_INFO_2 (PyObject **dict, DRIVER_INFO_2 *info) |
BOOL | py_to_DRIVER_INFO_2 (DRIVER_INFO_2 *info, PyObject *dict) |
BOOL | py_from_DRIVER_INFO_3 (PyObject **dict, DRIVER_INFO_3 *info) |
BOOL | py_to_DRIVER_INFO_3 (DRIVER_INFO_3 *info, PyObject *dict, TALLOC_CTX *mem_ctx) |
BOOL | py_from_DRIVER_INFO_6 (PyObject **dict, DRIVER_INFO_6 *info) |
BOOL | py_to_DRIVER_INFO_6 (DRIVER_INFO_6 *info, PyObject *dict) |
BOOL | py_from_DRIVER_DIRECTORY_1 (PyObject **dict, DRIVER_DIRECTORY_1 *info) |
BOOL | py_to_DRIVER_DIRECTORY_1 (DRIVER_DIRECTORY_1 *info, PyObject *dict) |
PyObject * | spoolss_hnd_addform (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_getform (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_setform (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_deleteform (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_enumforms (PyObject *self, PyObject *args, PyObject *kw) |
BOOL | py_from_FORM_1 (PyObject **dict, FORM_1 *form) |
BOOL | py_to_FORM (FORM *form, PyObject *dict) |
PyObject * | spoolss_hnd_enumjobs (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_setjob (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_getjob (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_startpageprinter (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_endpageprinter (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_startdocprinter (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_enddocprinter (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_writeprinter (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_addjob (PyObject *self, PyObject *args, PyObject *kw) |
BOOL | py_from_JOB_INFO_1 (PyObject **dict, JOB_INFO_1 *info) |
BOOL | py_to_JOB_INFO_1 (JOB_INFO_1 *info, PyObject *dict) |
BOOL | py_from_JOB_INFO_2 (PyObject **dict, JOB_INFO_2 *info) |
BOOL | py_to_JOB_INFO_2 (JOB_INFO_2 *info, PyObject *dict) |
BOOL | py_from_DOC_INFO_1 (PyObject **dict, DOC_INFO_1 *info) |
BOOL | py_to_DOC_INFO_1 (DOC_INFO_1 *info, PyObject *dict) |
PyObject * | spoolss_enumports (PyObject *self, PyObject *args, PyObject *kw) |
BOOL | py_from_PORT_INFO_1 (PyObject **dict, PORT_INFO_1 *info) |
BOOL | py_to_PORT_INFO_1 (PORT_INFO_1 *info, PyObject *dict) |
BOOL | py_from_PORT_INFO_2 (PyObject **dict, PORT_INFO_2 *info) |
BOOL | py_to_PORT_INFO_2 (PORT_INFO_2 *info, PyObject *dict) |
PyObject * | spoolss_hnd_getprinterdata (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_setprinterdata (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_enumprinterdata (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_deleteprinterdata (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_getprinterdataex (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_setprinterdataex (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_enumprinterdataex (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_deleteprinterdataex (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_enumprinterkey (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_deleteprinterkey (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_openprinter (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_closeprinter (PyObject *self, PyObject *args) |
PyObject * | spoolss_hnd_getprinter (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_hnd_setprinter (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_enumprinters (PyObject *self, PyObject *args, PyObject *kw) |
PyObject * | spoolss_addprinterex (PyObject *self, PyObject *args, PyObject *kw) |
BOOL | py_from_DEVICEMODE (PyObject **dict, DEVICEMODE *devmode) |
BOOL | py_to_DEVICEMODE (DEVICEMODE *devmode, PyObject *dict) |
BOOL | py_from_PRINTER_INFO_0 (PyObject **dict, PRINTER_INFO_0 *info) |
BOOL | py_to_PRINTER_INFO_0 (PRINTER_INFO_0 *info, PyObject *dict) |
BOOL | py_from_PRINTER_INFO_1 (PyObject **dict, PRINTER_INFO_1 *info) |
BOOL | py_to_PRINTER_INFO_1 (PRINTER_INFO_1 *info, PyObject *dict) |
BOOL | py_from_PRINTER_INFO_2 (PyObject **dict, PRINTER_INFO_2 *info) |
BOOL | py_to_PRINTER_INFO_2 (PRINTER_INFO_2 *info, PyObject *dict, TALLOC_CTX *mem_ctx) |
BOOL | py_from_PRINTER_INFO_3 (PyObject **dict, PRINTER_INFO_3 *info) |
BOOL | py_to_PRINTER_INFO_3 (PRINTER_INFO_3 *info, PyObject *dict, TALLOC_CTX *mem_ctx) |
変数 | |
PyTypeObject | spoolss_policy_hnd_type |
PyObject * | spoolss_error |
PyObject * | spoolss_werror |
PyObject* new_spoolss_policy_hnd_object | ( | struct cli_state * | cli, | |
TALLOC_CTX * | mem_ctx, | |||
POLICY_HND * | pol | |||
) |
py_spoolss_common.c の 23 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・cli・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・pol・spoolss_policy_hnd_type.
00025 { 00026 spoolss_policy_hnd_object *o; 00027 00028 o = PyObject_New(spoolss_policy_hnd_object, &spoolss_policy_hnd_type); 00029 00030 o->cli = cli; 00031 o->mem_ctx = mem_ctx; 00032 memcpy(&o->pol, pol, sizeof(POLICY_HND)); 00033 00034 return (PyObject*)o; 00035 }
PyObject* spoolss_enumprinterdrivers | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_drivers.c の 25 行で定義されています。
参照先 UNISTR::buffer・cli・cli_shutdown()・driver_info_info::info1・driver_info_info::info2・driver_info_info::info3・driver_info_info::info6・level・cli_state::mem_ctx・name・driver_info_1::name・driver_info_2::name・driver_info_3::name・driver_info_6::name・open_pipe_creds()・cli_state::pipe_list・py_from_DRIVER_INFO_1()・py_from_DRIVER_INFO_2()・py_from_DRIVER_INFO_3()・py_from_DRIVER_INFO_6()・py_werror_tuple()・result・rpccli_spoolss_enumprinterdrivers()・rpcstr_pull()・server・spoolss_error・spoolss_werror・talloc_init()・werror.
00027 { 00028 WERROR werror; 00029 PyObject *result = NULL, *creds = NULL; 00030 PRINTER_DRIVER_CTR ctr; 00031 int level = 1, i; 00032 uint32 num_drivers; 00033 char *arch = "Windows NT x86", *server, *errstr; 00034 static char *kwlist[] = {"server", "level", "creds", "arch", NULL}; 00035 struct cli_state *cli = NULL; 00036 TALLOC_CTX *mem_ctx = NULL; 00037 00038 /* Parse parameters */ 00039 00040 if (!PyArg_ParseTupleAndKeywords( 00041 args, kw, "s|iOs", kwlist, &server, &level, &creds, 00042 &arch)) 00043 return NULL; 00044 00045 if (server[0] != '\\' || server[1] != '\\') { 00046 PyErr_SetString(PyExc_ValueError, "UNC name required"); 00047 return NULL; 00048 } 00049 00050 server += 2; 00051 00052 if (creds && creds != Py_None && !PyDict_Check(creds)) { 00053 PyErr_SetString(PyExc_TypeError, 00054 "credentials must be dictionary or None"); 00055 return NULL; 00056 } 00057 00058 /* Call rpc function */ 00059 00060 if (!(cli = open_pipe_creds(server, creds, PI_SPOOLSS, &errstr))) { 00061 PyErr_SetString(spoolss_error, errstr); 00062 free(errstr); 00063 goto done; 00064 } 00065 00066 if (!(mem_ctx = talloc_init("spoolss_enumprinterdrivers"))) { 00067 PyErr_SetString( 00068 spoolss_error, "unable to init talloc context\n"); 00069 goto done; 00070 } 00071 00072 werror = rpccli_spoolss_enumprinterdrivers( 00073 cli->pipe_list, mem_ctx, level, arch, 00074 &num_drivers, &ctr); 00075 00076 if (!W_ERROR_IS_OK(werror)) { 00077 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00078 goto done; 00079 } 00080 00081 /* Return value */ 00082 00083 switch (level) { 00084 case 1: 00085 result = PyDict_New(); 00086 00087 for (i = 0; i < num_drivers; i++) { 00088 PyObject *value; 00089 fstring name; 00090 00091 rpcstr_pull(name, ctr.info1[i].name.buffer, 00092 sizeof(fstring), -1, STR_TERMINATE); 00093 00094 py_from_DRIVER_INFO_1(&value, &ctr.info1[i]); 00095 00096 PyDict_SetItemString(result, name, value); 00097 } 00098 00099 break; 00100 case 2: 00101 result = PyDict_New(); 00102 00103 for(i = 0; i < num_drivers; i++) { 00104 PyObject *value; 00105 fstring name; 00106 00107 rpcstr_pull(name, ctr.info2[i].name.buffer, 00108 sizeof(fstring), -1, STR_TERMINATE); 00109 00110 py_from_DRIVER_INFO_2(&value, &ctr.info2[i]); 00111 00112 PyDict_SetItemString(result, name, value); 00113 } 00114 00115 break; 00116 case 3: 00117 result = PyDict_New(); 00118 00119 for(i = 0; i < num_drivers; i++) { 00120 PyObject *value; 00121 fstring name; 00122 00123 rpcstr_pull(name, ctr.info3[i].name.buffer, 00124 sizeof(fstring), -1, STR_TERMINATE); 00125 00126 py_from_DRIVER_INFO_3(&value, &ctr.info3[i]); 00127 00128 PyDict_SetItemString(result, name, value); 00129 } 00130 00131 break; 00132 case 6: 00133 result = PyDict_New(); 00134 00135 for(i = 0; i < num_drivers; i++) { 00136 PyObject *value; 00137 fstring name; 00138 00139 rpcstr_pull(name, ctr.info6[i].name.buffer, 00140 sizeof(fstring), -1, STR_TERMINATE); 00141 00142 py_from_DRIVER_INFO_6(&value, &ctr.info6[i]); 00143 00144 PyList_SetItem(result, i, value); 00145 } 00146 00147 break; 00148 default: 00149 PyErr_SetString(spoolss_error, "unknown info level"); 00150 goto done; 00151 } 00152 00153 done: 00154 if (cli) 00155 cli_shutdown(cli); 00156 00157 if (mem_ctx) 00158 talloc_destroy(mem_ctx); 00159 00160 return result; 00161 }
PyObject* spoolss_hnd_getprinterdriver | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_drivers.c の 165 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・driver_info_info::info1・driver_info_info::info2・driver_info_info::info3・driver_info_info::info6・level・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_from_DRIVER_INFO_1()・py_from_DRIVER_INFO_2()・py_from_DRIVER_INFO_3()・py_from_DRIVER_INFO_6()・py_werror_tuple()・result・rpccli_spoolss_getprinterdriver()・spoolss_error・spoolss_werror・werror.
00167 { 00168 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00169 WERROR werror; 00170 PyObject *result = Py_None; 00171 PRINTER_DRIVER_CTR ctr; 00172 int level = 1; 00173 char *arch = "Windows NT x86"; 00174 int version = 2; 00175 static char *kwlist[] = {"level", "arch", NULL}; 00176 00177 /* Parse parameters */ 00178 00179 if (!PyArg_ParseTupleAndKeywords( 00180 args, kw, "|is", kwlist, &level, &arch)) 00181 return NULL; 00182 00183 /* Call rpc function */ 00184 00185 werror = rpccli_spoolss_getprinterdriver( 00186 hnd->cli, hnd->mem_ctx, &hnd->pol, level, arch, version, &ctr); 00187 00188 if (!W_ERROR_IS_OK(werror)) { 00189 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00190 return NULL; 00191 } 00192 00193 /* Return value */ 00194 00195 switch (level) { 00196 case 1: 00197 py_from_DRIVER_INFO_1(&result, ctr.info1); 00198 break; 00199 case 2: 00200 py_from_DRIVER_INFO_2(&result, ctr.info2); 00201 break; 00202 case 3: 00203 py_from_DRIVER_INFO_3(&result, ctr.info3); 00204 break; 00205 case 6: 00206 py_from_DRIVER_INFO_6(&result, ctr.info6); 00207 break; 00208 default: 00209 PyErr_SetString(spoolss_error, "unsupported info level"); 00210 return NULL; 00211 } 00212 00213 Py_INCREF(result); 00214 return result; 00215 }
PyObject* spoolss_getprinterdriverdir | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_drivers.c の 219 行で定義されています。
参照先 cli・cli_shutdown()・driver_info_ctr_info::info1・level・cli_state::mem_ctx・open_pipe_creds()・cli_state::pipe_list・py_from_DRIVER_DIRECTORY_1()・py_werror_tuple()・result・rpccli_spoolss_getprinterdriverdir()・server・spoolss_error・spoolss_werror・talloc_init()・werror.
00221 { 00222 WERROR werror; 00223 PyObject *result = NULL, *creds = NULL; 00224 DRIVER_DIRECTORY_CTR ctr; 00225 uint32 level = 1; 00226 char *arch = "Windows NT x86", *server, *errstr; 00227 static char *kwlist[] = {"server", "level", "arch", "creds", NULL}; 00228 struct cli_state *cli = NULL; 00229 TALLOC_CTX *mem_ctx = NULL; 00230 00231 /* Parse parameters */ 00232 00233 if (!PyArg_ParseTupleAndKeywords( 00234 args, kw, "s|isO", kwlist, &server, &level, 00235 &arch, &creds)) 00236 return NULL; 00237 00238 if (server[0] != '\\' || server[1] != '\\') { 00239 PyErr_SetString(PyExc_ValueError, "UNC name required"); 00240 return NULL; 00241 } 00242 00243 server += 2; 00244 00245 if (creds && creds != Py_None && !PyDict_Check(creds)) { 00246 PyErr_SetString(PyExc_TypeError, 00247 "credentials must be dictionary or None"); 00248 return NULL; 00249 } 00250 00251 /* Call rpc function */ 00252 00253 if (!(cli = open_pipe_creds(server, creds, PI_SPOOLSS, &errstr))) { 00254 PyErr_SetString(spoolss_error, errstr); 00255 free(errstr); 00256 goto done; 00257 } 00258 00259 if (!(mem_ctx = talloc_init("spoolss_getprinterdriverdir"))) { 00260 PyErr_SetString( 00261 spoolss_error, "unable to init talloc context\n"); 00262 goto done; 00263 } 00264 00265 werror = rpccli_spoolss_getprinterdriverdir( 00266 cli->pipe_list, mem_ctx, level, arch, &ctr); 00267 00268 if (!W_ERROR_IS_OK(werror)) { 00269 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00270 goto done; 00271 } 00272 00273 /* Return value */ 00274 00275 switch (level) { 00276 case 1: 00277 py_from_DRIVER_DIRECTORY_1(&result, ctr.info1); 00278 break; 00279 default: 00280 PyErr_SetString(spoolss_error, "unknown info level"); 00281 goto done; 00282 } 00283 00284 done: 00285 if (cli) 00286 cli_shutdown(cli); 00287 00288 if (mem_ctx) 00289 talloc_destroy(mem_ctx); 00290 00291 return result; 00292 }
PyObject* spoolss_addprinterdriver | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_drivers.c の 294 行で定義されています。
参照先 cli・cli_shutdown()・get_level_value()・driver_info_info::info3・level・cli_state::mem_ctx・open_pipe_creds()・cli_state::pipe_list・py_to_DRIVER_INFO_3()・py_werror_tuple()・result・rpccli_spoolss_addprinterdriver()・server・spoolss_error・spoolss_werror・talloc_init()・werror.
00296 { 00297 static char *kwlist[] = { "server", "info", "creds", NULL }; 00298 char *server, *errstr; 00299 uint32 level; 00300 PyObject *info, *result = NULL, *creds = NULL; 00301 WERROR werror; 00302 TALLOC_CTX *mem_ctx = NULL; 00303 struct cli_state *cli = NULL; 00304 PRINTER_DRIVER_CTR ctr; 00305 union { 00306 DRIVER_INFO_3 driver_3; 00307 } dinfo; 00308 00309 if (!PyArg_ParseTupleAndKeywords( 00310 args, kw, "sO!|O", kwlist, &server, &PyDict_Type, 00311 &info, &creds)) 00312 return NULL; 00313 00314 if (server[0] == '\\' || server[1] == '\\') 00315 server += 2; 00316 00317 if (creds && creds != Py_None && !PyDict_Check(creds)) { 00318 PyErr_SetString(PyExc_TypeError, 00319 "credentials must be dictionary or None"); 00320 return NULL; 00321 } 00322 00323 if (!(mem_ctx = talloc_init("spoolss_addprinterdriver"))) { 00324 PyErr_SetString( 00325 spoolss_error, "unable to init talloc context\n"); 00326 return NULL; 00327 } 00328 00329 if (!(cli = open_pipe_creds(server, creds, PI_SPOOLSS, &errstr))) { 00330 PyErr_SetString(spoolss_error, errstr); 00331 free(errstr); 00332 goto done; 00333 } 00334 00335 if (!get_level_value(info, &level)) { 00336 PyErr_SetString(spoolss_error, "invalid info level"); 00337 goto done; 00338 } 00339 00340 if (level != 3) { 00341 PyErr_SetString(spoolss_error, "unsupported info level"); 00342 goto done; 00343 } 00344 00345 ZERO_STRUCT(ctr); 00346 ZERO_STRUCT(dinfo); 00347 00348 switch(level) { 00349 case 3: 00350 ctr.info3 = &dinfo.driver_3; 00351 00352 if (!py_to_DRIVER_INFO_3(&dinfo.driver_3, info, mem_ctx)) { 00353 PyErr_SetString(spoolss_error, 00354 "error converting to driver info 3"); 00355 goto done; 00356 } 00357 00358 break; 00359 default: 00360 PyErr_SetString(spoolss_error, "unsupported info level"); 00361 goto done; 00362 } 00363 00364 werror = rpccli_spoolss_addprinterdriver(cli->pipe_list, mem_ctx, level, &ctr); 00365 00366 if (!W_ERROR_IS_OK(werror)) { 00367 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00368 goto done; 00369 } 00370 00371 Py_INCREF(Py_None); 00372 result = Py_None; 00373 00374 done: 00375 if (cli) 00376 cli_shutdown(cli); 00377 00378 if (mem_ctx) 00379 talloc_destroy(mem_ctx); 00380 00381 return result; 00382 00383 }
PyObject* spoolss_addprinterdriverex | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_drivers.c の 385 行で定義されています。
参照先 spoolss_error.
00387 { 00388 /* Not supported by Samba server */ 00389 00390 PyErr_SetString(spoolss_error, "Not implemented"); 00391 return NULL; 00392 }
PyObject* spoolss_deleteprinterdriver | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_drivers.c の 394 行で定義されています。
参照先 spoolss_error.
00396 { 00397 PyErr_SetString(spoolss_error, "Not implemented"); 00398 return NULL; 00399 }
PyObject* spoolss_deleteprinterdriverex | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_drivers.c の 401 行で定義されています。
参照先 spoolss_error.
00403 { 00404 PyErr_SetString(spoolss_error, "Not implemented"); 00405 return NULL; 00406 }
BOOL py_from_DRIVER_INFO_1 | ( | PyObject ** | dict, | |
DRIVER_INFO_1 * | info | |||
) |
py_spoolss_drivers_conv.c の 126 行で定義されています。
参照先 from_struct()・py_DRIVER_INFO_1.
参照元 spoolss_enumprinterdrivers()・spoolss_hnd_getprinterdriver().
00127 { 00128 *dict = from_struct(info, py_DRIVER_INFO_1); 00129 PyDict_SetItemString(*dict, "level", PyInt_FromLong(1)); 00130 00131 return True; 00132 }
BOOL py_to_DRIVER_INFO_1 | ( | DRIVER_INFO_1 * | info, | |
PyObject * | dict | |||
) |
BOOL py_from_DRIVER_INFO_2 | ( | PyObject ** | dict, | |
DRIVER_INFO_2 * | info | |||
) |
py_spoolss_drivers_conv.c の 139 行で定義されています。
参照先 from_struct()・py_DRIVER_INFO_2.
参照元 spoolss_enumprinterdrivers()・spoolss_hnd_getprinterdriver().
00140 { 00141 *dict = from_struct(info, py_DRIVER_INFO_2); 00142 PyDict_SetItemString(*dict, "level", PyInt_FromLong(2)); 00143 00144 return True; 00145 }
BOOL py_to_DRIVER_INFO_2 | ( | DRIVER_INFO_2 * | info, | |
PyObject * | dict | |||
) |
BOOL py_from_DRIVER_INFO_3 | ( | PyObject ** | dict, | |
DRIVER_INFO_3 * | info | |||
) |
py_spoolss_drivers_conv.c の 152 行で定義されています。
参照先 driver_info_3::dependentfiles・from_struct()・from_unistr_list()・py_DRIVER_INFO_3.
参照元 spoolss_enumprinterdrivers()・spoolss_hnd_getprinterdriver().
00153 { 00154 *dict = from_struct(info, py_DRIVER_INFO_3); 00155 00156 PyDict_SetItemString(*dict, "level", PyInt_FromLong(3)); 00157 00158 PyDict_SetItemString( 00159 *dict, "dependent_files", 00160 from_unistr_list(info->dependentfiles)); 00161 00162 return True; 00163 }
BOOL py_to_DRIVER_INFO_3 | ( | DRIVER_INFO_3 * | info, | |
PyObject * | dict, | |||
TALLOC_CTX * | mem_ctx | |||
) |
py_spoolss_drivers_conv.c の 165 行で定義されています。
参照先 driver_info_3::dependentfiles・py_DRIVER_INFO_3・result・to_dependentfiles()・to_struct().
参照元 spoolss_addprinterdriver().
00167 { 00168 PyObject *obj, *dict_copy = PyDict_Copy(dict); 00169 BOOL result = False; 00170 00171 if (!(obj = PyDict_GetItemString(dict_copy, "dependent_files"))) 00172 goto done; 00173 00174 if (!(info->dependentfiles = to_dependentfiles(obj, mem_ctx))) 00175 goto done; 00176 00177 PyDict_DelItemString(dict_copy, "dependent_files"); 00178 00179 if (!(obj = PyDict_GetItemString(dict_copy, "level")) || 00180 !PyInt_Check(obj)) 00181 goto done; 00182 00183 PyDict_DelItemString(dict_copy, "level"); 00184 00185 if (!to_struct(info, dict_copy, py_DRIVER_INFO_3)) 00186 goto done; 00187 00188 result = True; 00189 00190 done: 00191 Py_DECREF(dict_copy); 00192 return result; 00193 }
BOOL py_from_DRIVER_INFO_6 | ( | PyObject ** | dict, | |
DRIVER_INFO_6 * | info | |||
) |
py_spoolss_drivers_conv.c の 195 行で定義されています。
参照先 driver_info_6::dependentfiles・from_struct()・from_unistr_list()・py_DRIVER_INFO_6.
参照元 spoolss_enumprinterdrivers()・spoolss_hnd_getprinterdriver().
00196 { 00197 *dict = from_struct(info, py_DRIVER_INFO_6); 00198 PyDict_SetItemString(*dict, "level", PyInt_FromLong(6)); 00199 PyDict_SetItemString( 00200 *dict, "dependent_files", 00201 from_unistr_list(info->dependentfiles)); 00202 return True; 00203 }
BOOL py_to_DRIVER_INFO_6 | ( | DRIVER_INFO_6 * | info, | |
PyObject * | dict | |||
) |
BOOL py_from_DRIVER_DIRECTORY_1 | ( | PyObject ** | dict, | |
DRIVER_DIRECTORY_1 * | info | |||
) |
py_spoolss_drivers_conv.c の 210 行で定義されています。
参照先 from_struct()・py_DRIVER_DIRECTORY_1.
参照元 spoolss_getprinterdriverdir().
00211 { 00212 *dict = from_struct(info, py_DRIVER_DIRECTORY_1); 00213 PyDict_SetItemString(*dict, "level", PyInt_FromLong(1)); 00214 return True; 00215 }
BOOL py_to_DRIVER_DIRECTORY_1 | ( | DRIVER_DIRECTORY_1 * | info, | |
PyObject * | dict | |||
) |
PyObject* spoolss_hnd_addform | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_forms.c の 25 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・form_name()・get_level_value()・init_unistr2()・level・spoolss_policy_hnd_object::mem_ctx・_form::name・spoolss_policy_hnd_object::pol・py_to_FORM()・py_werror_tuple()・rpccli_spoolss_addform()・spoolss_error・spoolss_werror・UNI_STR_TERMINATE・werror.
00026 { 00027 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00028 WERROR werror; 00029 PyObject *info; 00030 FORM form; 00031 int level; 00032 static char *kwlist[] = {"form", NULL}; 00033 00034 /* Parse parameters */ 00035 00036 if (!PyArg_ParseTupleAndKeywords( 00037 args, kw, "O!", kwlist, &PyDict_Type, &info)) 00038 return NULL; 00039 00040 /* Call rpc function */ 00041 00042 if (!py_to_FORM(&form, info)) { 00043 PyErr_SetString(spoolss_error, "invalid form"); 00044 return NULL; 00045 } 00046 00047 if (!get_level_value(info, &level)) { 00048 PyErr_SetString(spoolss_error, "invalid info level"); 00049 return NULL; 00050 } 00051 00052 if (level != 1) { 00053 PyErr_SetString(spoolss_error, "unsupported info level"); 00054 return NULL; 00055 } 00056 00057 switch (level) { 00058 case 1: { 00059 PyObject *obj = PyDict_GetItemString(info, "name"); 00060 char *form_name = PyString_AsString(obj); 00061 00062 init_unistr2(&form.name, form_name, UNI_STR_TERMINATE); 00063 break; 00064 } 00065 default: 00066 PyErr_SetString(spoolss_error, "unsupported info level"); 00067 return NULL; 00068 } 00069 00070 werror = rpccli_spoolss_addform(hnd->cli, hnd->mem_ctx, &hnd->pol, 00071 level, &form); 00072 00073 00074 if (!W_ERROR_IS_OK(werror)) { 00075 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00076 return NULL; 00077 } 00078 00079 Py_INCREF(Py_None); 00080 return Py_None; 00081 }
PyObject* spoolss_hnd_getform | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_forms.c の 85 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・form_name()・level・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_from_FORM_1()・py_werror_tuple()・result・rpccli_spoolss_getform()・spoolss_werror・werror.
00086 { 00087 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00088 WERROR werror; 00089 PyObject *result; 00090 char *form_name; 00091 int level = 1; 00092 static char *kwlist[] = {"form_name", "level", NULL}; 00093 FORM_1 form; 00094 00095 /* Parse parameters */ 00096 00097 if (!PyArg_ParseTupleAndKeywords( 00098 args, kw, "s|i", kwlist, &form_name, &level)) 00099 return NULL; 00100 00101 /* Call rpc function */ 00102 00103 werror = rpccli_spoolss_getform( 00104 hnd->cli, hnd->mem_ctx, &hnd->pol, form_name, level, &form); 00105 00106 if (!W_ERROR_IS_OK(werror)) { 00107 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00108 return NULL; 00109 } 00110 00111 result = Py_None; 00112 00113 switch(level) { 00114 case 1: 00115 py_from_FORM_1(&result, &form); 00116 break; 00117 } 00118 00119 Py_INCREF(result); 00120 return result; 00121 }
PyObject* spoolss_hnd_setform | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_forms.c の 125 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・form_name()・get_level_value()・level・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_to_FORM()・py_werror_tuple()・rpccli_spoolss_setform()・spoolss_error・spoolss_werror・werror.
00126 { 00127 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00128 WERROR werror; 00129 PyObject *info, *form_name; 00130 int level; 00131 static char *kwlist[] = { "form", NULL}; 00132 FORM form; 00133 00134 /* Parse parameters */ 00135 00136 if (!PyArg_ParseTupleAndKeywords( 00137 args, kw, "O!", kwlist, &PyDict_Type, &info)) 00138 return NULL; 00139 00140 if (!get_level_value(info, &level)) { 00141 PyErr_SetString(spoolss_error, "invalid info level"); 00142 return NULL; 00143 } 00144 00145 if (level != 1) { 00146 PyErr_SetString(spoolss_error, "unsupported info level"); 00147 return NULL; 00148 } 00149 00150 /* Call rpc function */ 00151 00152 if (!py_to_FORM(&form, info)) { 00153 PyErr_SetString(spoolss_error, "invalid form"); 00154 return NULL; 00155 } 00156 00157 form_name = PyDict_GetItemString(info, "name"); 00158 00159 werror = rpccli_spoolss_setform( 00160 hnd->cli, hnd->mem_ctx, &hnd->pol, level, 00161 PyString_AsString(form_name), &form); 00162 00163 if (!W_ERROR_IS_OK(werror)) { 00164 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00165 return NULL; 00166 } 00167 00168 Py_INCREF(Py_None); 00169 return Py_None; 00170 }
PyObject* spoolss_hnd_deleteform | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_forms.c の 174 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・form_name()・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_werror_tuple()・rpccli_spoolss_deleteform()・spoolss_werror・werror.
00175 { 00176 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00177 WERROR werror; 00178 static char *kwlist[] = {"form_name", NULL}; 00179 char *form_name; 00180 00181 /* Parse parameters */ 00182 00183 if (!PyArg_ParseTupleAndKeywords( 00184 args, kw, "s", kwlist, &form_name)) 00185 return NULL; 00186 00187 /* Call rpc function */ 00188 00189 werror = rpccli_spoolss_deleteform( 00190 hnd->cli, hnd->mem_ctx, &hnd->pol, form_name); 00191 00192 if (!W_ERROR_IS_OK(werror)) { 00193 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00194 return NULL; 00195 } 00196 00197 Py_INCREF(Py_None); 00198 return Py_None; 00199 }
PyObject* spoolss_hnd_enumforms | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_forms.c の 203 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・level・spoolss_policy_hnd_object::mem_ctx・name・spoolss_policy_hnd_object::pol・py_from_FORM_1()・py_werror_tuple()・result・rpccli_spoolss_enumforms()・rpcstr_pull()・spoolss_error・spoolss_werror・werror.
00204 { 00205 PyObject *result; 00206 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00207 WERROR werror; 00208 uint32 level = 1, num_forms, i; 00209 static char *kwlist[] = {"level", NULL}; 00210 FORM_1 *forms; 00211 00212 /* Parse parameters */ 00213 00214 if (!PyArg_ParseTupleAndKeywords( 00215 args, kw, "|i", kwlist, &level)) 00216 return NULL; 00217 00218 /* Call rpc function */ 00219 00220 werror = rpccli_spoolss_enumforms( 00221 hnd->cli, hnd->mem_ctx, &hnd->pol, level, &num_forms, &forms); 00222 00223 if (!W_ERROR_IS_OK(werror)) { 00224 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00225 return NULL; 00226 } 00227 00228 switch(level) { 00229 case 1: 00230 result = PyDict_New(); 00231 00232 for (i = 0; i < num_forms; i++) { 00233 PyObject *value; 00234 fstring name; 00235 00236 rpcstr_pull(name, forms[i].name.buffer, 00237 sizeof(fstring), -1, STR_TERMINATE); 00238 00239 py_from_FORM_1(&value, &forms[i]); 00240 00241 PyDict_SetItemString( 00242 value, "level", PyInt_FromLong(1)); 00243 00244 PyDict_SetItemString(result, name, value); 00245 } 00246 00247 break; 00248 default: 00249 PyErr_SetString(spoolss_error, "unknown info level"); 00250 return NULL; 00251 } 00252 00253 return result; 00254 }
py_spoolss_forms_conv.c の 47 行で定義されています。
参照先 from_struct()・py_FORM_1.
参照元 spoolss_hnd_enumforms()・spoolss_hnd_getform().
00048 { 00049 *dict = from_struct(form, py_FORM_1); 00050 00051 PyDict_SetItemString(*dict, "level", PyInt_FromLong(1)); 00052 00053 return True; 00054 }
py_spoolss_forms_conv.c の 56 行で定義されています。
参照先 init_unistr2()・name・_form::name・py_FORM・result・to_struct()・UNI_STR_TERMINATE.
参照元 spoolss_hnd_addform()・spoolss_hnd_setform().
00057 { 00058 PyObject *obj, *dict_copy = PyDict_Copy(dict); 00059 char *name; 00060 BOOL result = False; 00061 00062 if (!(obj = PyDict_GetItemString(dict_copy, "name")) || 00063 !PyString_Check(obj)) 00064 goto done; 00065 00066 PyDict_DelItemString(dict_copy, "name"); 00067 00068 if (!(obj = PyDict_GetItemString(dict_copy, "level")) || 00069 !PyInt_Check(obj)) 00070 goto done; 00071 00072 PyDict_DelItemString(dict_copy, "level"); 00073 00074 if (!to_struct(form, dict_copy, py_FORM)) 00075 goto done; 00076 00077 /* Careful! We can't call PyString_AsString(obj) then delete 00078 obj and still expect to have our pointer pointing somewhere 00079 useful. */ 00080 00081 obj = PyDict_GetItemString(dict, "name"); 00082 name = PyString_AsString(obj); 00083 00084 init_unistr2(&form->name, name, UNI_STR_TERMINATE); 00085 00086 result = True; 00087 00088 done: 00089 Py_DECREF(dict_copy); 00090 return result; 00091 }
PyObject* spoolss_hnd_enumjobs | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_jobs.c の 25 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・job_info_ctr_info::job・job_info_ctr_info::job_info_1・job_info_ctr_info::job_info_2・level・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_from_JOB_INFO_1()・py_from_JOB_INFO_2()・py_werror_tuple()・result・rpccli_spoolss_enumjobs()・spoolss_werror・werror.
00026 { 00027 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00028 WERROR werror; 00029 PyObject *result; 00030 int level = 1; 00031 uint32 i, num_jobs; 00032 static char *kwlist[] = {"level", NULL}; 00033 JOB_INFO_CTR ctr; 00034 00035 /* Parse parameters */ 00036 00037 if (!PyArg_ParseTupleAndKeywords(args, kw, "|i", kwlist, &level)) 00038 return NULL; 00039 00040 /* Call rpc function */ 00041 00042 werror = rpccli_spoolss_enumjobs( 00043 hnd->cli, hnd->mem_ctx, &hnd->pol, level, 0, 1000, 00044 &num_jobs, &ctr); 00045 00046 /* Return value */ 00047 00048 result = Py_None; 00049 00050 if (!W_ERROR_IS_OK(werror)) { 00051 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00052 goto done; 00053 } 00054 00055 result = PyList_New(num_jobs); 00056 00057 switch (level) { 00058 case 1: 00059 for (i = 0; i < num_jobs; i++) { 00060 PyObject *value; 00061 00062 py_from_JOB_INFO_1(&value, &ctr.job.job_info_1[i]); 00063 00064 PyList_SetItem(result, i, value); 00065 } 00066 00067 break; 00068 case 2: 00069 for(i = 0; i < num_jobs; i++) { 00070 PyObject *value; 00071 00072 py_from_JOB_INFO_2(&value, &ctr.job.job_info_2[i]); 00073 00074 PyList_SetItem(result, i, value); 00075 } 00076 00077 break; 00078 } 00079 00080 done: 00081 Py_INCREF(result); 00082 return result; 00083 }
PyObject* spoolss_hnd_setjob | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_jobs.c の 87 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・level・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_werror_tuple()・rpccli_spoolss_setjob()・spoolss_werror・werror.
00088 { 00089 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00090 WERROR werror; 00091 uint32 level = 0, command, jobid; 00092 static char *kwlist[] = {"jobid", "command", "level", NULL}; 00093 00094 /* Parse parameters */ 00095 00096 if (!PyArg_ParseTupleAndKeywords( 00097 args, kw, "ii|i", kwlist, &jobid, &command, &level)) 00098 return NULL; 00099 00100 /* Call rpc function */ 00101 00102 werror = rpccli_spoolss_setjob( 00103 hnd->cli, hnd->mem_ctx, &hnd->pol, jobid, level, command); 00104 00105 if (!W_ERROR_IS_OK(werror)) { 00106 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00107 return NULL; 00108 } 00109 00110 Py_INCREF(Py_None); 00111 return Py_None; 00112 }
PyObject* spoolss_hnd_getjob | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_jobs.c の 116 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・job_info_ctr_info::job・job_info_ctr_info::job_info_1・job_info_ctr_info::job_info_2・level・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_from_JOB_INFO_1()・py_from_JOB_INFO_2()・py_werror_tuple()・result・rpccli_spoolss_getjob()・spoolss_werror・werror.
00117 { 00118 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00119 WERROR werror; 00120 PyObject *result; 00121 uint32 level = 1, jobid; 00122 static char *kwlist[] = {"jobid", "level", NULL}; 00123 JOB_INFO_CTR ctr; 00124 00125 /* Parse parameters */ 00126 00127 if (!PyArg_ParseTupleAndKeywords( 00128 args, kw, "i|i", kwlist, &jobid, &level)) 00129 return NULL; 00130 00131 /* Call rpc function */ 00132 00133 werror = rpccli_spoolss_getjob( 00134 hnd->cli, hnd->mem_ctx, &hnd->pol, jobid, level, &ctr); 00135 00136 if (!W_ERROR_IS_OK(werror)) { 00137 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00138 return NULL; 00139 } 00140 00141 switch(level) { 00142 case 1: 00143 py_from_JOB_INFO_1(&result, &ctr.job.job_info_1[0]); 00144 break; 00145 case 2: 00146 py_from_JOB_INFO_2(&result, &ctr.job.job_info_2[0]); 00147 break; 00148 } 00149 00150 return result; 00151 }
PyObject* spoolss_hnd_startpageprinter | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_jobs.c の 156 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_werror_tuple()・rpccli_spoolss_startpageprinter()・spoolss_werror・werror.
00157 { 00158 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00159 WERROR werror; 00160 static char *kwlist[] = { NULL }; 00161 00162 /* Parse parameters */ 00163 00164 if (!PyArg_ParseTupleAndKeywords(args, kw, "", kwlist)) 00165 return NULL; 00166 00167 /* Call rpc function */ 00168 00169 werror = rpccli_spoolss_startpageprinter( 00170 hnd->cli, hnd->mem_ctx, &hnd->pol); 00171 00172 if (!W_ERROR_IS_OK(werror)) { 00173 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00174 return NULL; 00175 } 00176 00177 Py_INCREF(Py_None); 00178 return Py_None; 00179 }
PyObject* spoolss_hnd_endpageprinter | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_jobs.c の 184 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_werror_tuple()・rpccli_spoolss_endpageprinter()・spoolss_werror・werror.
00185 { 00186 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00187 WERROR werror; 00188 static char *kwlist[] = { NULL }; 00189 00190 /* Parse parameters */ 00191 00192 if (!PyArg_ParseTupleAndKeywords(args, kw, "", kwlist)) 00193 return NULL; 00194 00195 /* Call rpc function */ 00196 00197 werror = rpccli_spoolss_endpageprinter( 00198 hnd->cli, hnd->mem_ctx, &hnd->pol); 00199 00200 if (!W_ERROR_IS_OK(werror)) { 00201 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00202 return NULL; 00203 } 00204 00205 Py_INCREF(Py_None); 00206 return Py_None; 00207 }
PyObject* spoolss_hnd_startdocprinter | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_jobs.c の 212 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・get_level_value()・level・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_werror_tuple()・rpccli_spoolss_startdocprinter()・spoolss_error・spoolss_werror・werror.
00213 { 00214 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00215 WERROR werror; 00216 static char *kwlist[] = { "document_info", NULL }; 00217 PyObject *info, *obj; 00218 uint32 level, jobid; 00219 char *document_name = NULL, *output_file = NULL, *data_type = NULL; 00220 00221 /* Parse parameters */ 00222 00223 if (!PyArg_ParseTupleAndKeywords( 00224 args, kw, "O!", kwlist, &PyDict_Type, &info)) 00225 return NULL; 00226 00227 /* Check document_info parameter */ 00228 00229 if (!get_level_value(info, &level)) { 00230 PyErr_SetString(spoolss_error, "invalid info level"); 00231 return NULL; 00232 } 00233 00234 if (level != 1) { 00235 PyErr_SetString(spoolss_error, "unsupported info level"); 00236 return NULL; 00237 } 00238 00239 if ((obj = PyDict_GetItemString(info, "document_name"))) { 00240 00241 if (!PyString_Check(obj) && obj != Py_None) { 00242 PyErr_SetString(spoolss_error, 00243 "document_name not a string"); 00244 return NULL; 00245 } 00246 00247 if (PyString_Check(obj)) 00248 document_name = PyString_AsString(obj); 00249 00250 } else { 00251 PyErr_SetString(spoolss_error, "no document_name present"); 00252 return NULL; 00253 } 00254 00255 if ((obj = PyDict_GetItemString(info, "output_file"))) { 00256 00257 if (!PyString_Check(obj) && obj != Py_None) { 00258 PyErr_SetString(spoolss_error, 00259 "output_file not a string"); 00260 return NULL; 00261 } 00262 00263 if (PyString_Check(obj)) 00264 output_file = PyString_AsString(obj); 00265 00266 } else { 00267 PyErr_SetString(spoolss_error, "no output_file present"); 00268 return NULL; 00269 } 00270 00271 if ((obj = PyDict_GetItemString(info, "data_type"))) { 00272 00273 if (!PyString_Check(obj) && obj != Py_None) { 00274 PyErr_SetString(spoolss_error, 00275 "data_type not a string"); 00276 return NULL; 00277 } 00278 00279 if (PyString_Check(obj)) 00280 data_type = PyString_AsString(obj); 00281 00282 } else { 00283 PyErr_SetString(spoolss_error, "no data_type present"); 00284 return NULL; 00285 } 00286 00287 /* Call rpc function */ 00288 00289 werror = rpccli_spoolss_startdocprinter( 00290 hnd->cli, hnd->mem_ctx, &hnd->pol, document_name, 00291 output_file, data_type, &jobid); 00292 00293 if (!W_ERROR_IS_OK(werror)) { 00294 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00295 return NULL; 00296 } 00297 00298 /* The return value is zero for an error (where does the status 00299 code come from now??) and the return value is the jobid 00300 allocated for the new job. */ 00301 00302 return Py_BuildValue("i", jobid); 00303 }
PyObject* spoolss_hnd_enddocprinter | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_jobs.c の 308 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_werror_tuple()・rpccli_spoolss_enddocprinter()・spoolss_werror・werror.
00309 { 00310 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00311 WERROR werror; 00312 static char *kwlist[] = { NULL }; 00313 00314 /* Parse parameters */ 00315 00316 if (!PyArg_ParseTupleAndKeywords(args, kw, "", kwlist)) 00317 return NULL; 00318 00319 /* Call rpc function */ 00320 00321 werror = rpccli_spoolss_enddocprinter( 00322 hnd->cli, hnd->mem_ctx, &hnd->pol); 00323 00324 if (!W_ERROR_IS_OK(werror)) { 00325 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00326 return NULL; 00327 } 00328 00329 Py_INCREF(Py_None); 00330 return Py_None; 00331 }
PyObject* spoolss_hnd_writeprinter | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_jobs.c の 335 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_werror_tuple()・rpccli_spoolss_writeprinter()・spoolss_werror・werror.
00336 { 00337 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00338 WERROR werror; 00339 static char *kwlist[] = { "data", NULL }; 00340 PyObject *data; 00341 uint32 num_written; 00342 00343 /* Parse parameters */ 00344 00345 if (!PyArg_ParseTupleAndKeywords( 00346 args, kw, "O!", kwlist, &PyString_Type, &data)) 00347 return NULL; 00348 00349 /* Call rpc function */ 00350 00351 werror = rpccli_spoolss_writeprinter( 00352 hnd->cli, hnd->mem_ctx, &hnd->pol, PyString_Size(data), 00353 PyString_AsString(data), &num_written); 00354 00355 if (!W_ERROR_IS_OK(werror)) { 00356 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00357 return NULL; 00358 } 00359 00360 Py_INCREF(Py_None); 00361 return Py_None; 00362 }
PyObject* spoolss_hnd_addjob | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_jobs.c の 364 行で定義されています。
参照先 spoolss_error.
00365 { 00366 PyErr_SetString(spoolss_error, "Not implemented"); 00367 return NULL; 00368 }
BOOL py_from_JOB_INFO_1 | ( | PyObject ** | dict, | |
JOB_INFO_1 * | info | |||
) |
py_spoolss_jobs_conv.c の 71 行で定義されています。
参照先 from_struct()・py_JOB_INFO_1.
参照元 spoolss_hnd_enumjobs()・spoolss_hnd_getjob().
00072 { 00073 *dict = from_struct(info, py_JOB_INFO_1); 00074 return True; 00075 }
BOOL py_to_JOB_INFO_1 | ( | JOB_INFO_1 * | info, | |
PyObject * | dict | |||
) |
BOOL py_from_JOB_INFO_2 | ( | PyObject ** | dict, | |
JOB_INFO_2 * | info | |||
) |
py_spoolss_jobs_conv.c の 82 行で定義されています。
参照先 from_struct()・py_JOB_INFO_2.
参照元 spoolss_hnd_enumjobs()・spoolss_hnd_getjob().
00083 { 00084 *dict = from_struct(info, py_JOB_INFO_2); 00085 return True; 00086 }
BOOL py_to_JOB_INFO_2 | ( | JOB_INFO_2 * | info, | |
PyObject * | dict | |||
) |
BOOL py_from_DOC_INFO_1 | ( | PyObject ** | dict, | |
DOC_INFO_1 * | info | |||
) |
py_spoolss_jobs_conv.c の 93 行で定義されています。
参照先 from_struct()・py_DOC_INFO_1.
00094 { 00095 *dict = from_struct(info, py_DOC_INFO_1); 00096 return True; 00097 }
BOOL py_to_DOC_INFO_1 | ( | DOC_INFO_1 * | info, | |
PyObject * | dict | |||
) |
py_spoolss_jobs_conv.c の 99 行で定義されています。
参照先 py_DOC_INFO_1・to_struct().
00100 { 00101 return to_struct(info, dict, py_DOC_INFO_1); 00102 }
PyObject* spoolss_enumports | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_ports.c の 25 行で定義されています。
参照先 UNISTR::buffer・cli・cli_shutdown()・port_info_ctr_info::info_1・port_info_ctr_info::info_2・level・name・open_pipe_creds()・cli_state::pipe_list・port_info_ctr_info::port・s_port_info_1::port_name・s_port_info_2::port_name・py_from_PORT_INFO_1()・py_from_PORT_INFO_2()・py_werror_tuple()・result・rpccli_spoolss_enum_ports()・rpcstr_pull()・server・spoolss_error・spoolss_werror・talloc_init()・werror.
00026 { 00027 WERROR werror; 00028 PyObject *result = NULL, *creds = NULL; 00029 uint32 level = 1; 00030 uint32 i, needed, num_ports; 00031 static char *kwlist[] = {"server", "level", "creds", NULL}; 00032 TALLOC_CTX *mem_ctx = NULL; 00033 struct cli_state *cli = NULL; 00034 char *server, *errstr; 00035 PORT_INFO_CTR ctr; 00036 00037 /* Parse parameters */ 00038 00039 if (!PyArg_ParseTupleAndKeywords( 00040 args, kw, "s|iO", kwlist, &server, &level, &creds)) 00041 return NULL; 00042 00043 if (server[0] != '\\' || server[1] != '\\') { 00044 PyErr_SetString(PyExc_ValueError, "UNC name required"); 00045 return NULL; 00046 } 00047 00048 server += 2; 00049 00050 if (creds && creds != Py_None && !PyDict_Check(creds)) { 00051 PyErr_SetString(PyExc_TypeError, 00052 "credentials must be dictionary or None"); 00053 return NULL; 00054 } 00055 00056 if (!(cli = open_pipe_creds(server, creds, PI_SPOOLSS, &errstr))) { 00057 PyErr_SetString(spoolss_error, errstr); 00058 free(errstr); 00059 goto done; 00060 } 00061 00062 if (!(mem_ctx = talloc_init("spoolss_enumports"))) { 00063 PyErr_SetString( 00064 spoolss_error, "unable to init talloc context\n"); 00065 goto done; 00066 } 00067 00068 /* Call rpc function */ 00069 00070 werror = rpccli_spoolss_enum_ports( 00071 cli->pipe_list, mem_ctx, level, &num_ports, &ctr); 00072 00073 if (!W_ERROR_IS_OK(werror)) { 00074 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00075 goto done; 00076 } 00077 00078 /* Return value */ 00079 00080 switch (level) { 00081 case 1: 00082 result = PyDict_New(); 00083 00084 for (i = 0; i < num_ports; i++) { 00085 PyObject *value; 00086 fstring name; 00087 00088 rpcstr_pull(name, ctr.port.info_1[i].port_name.buffer, 00089 sizeof(fstring), -1, STR_TERMINATE); 00090 00091 py_from_PORT_INFO_1(&value, &ctr.port.info_1[i]); 00092 00093 PyDict_SetItemString( 00094 value, "level", PyInt_FromLong(1)); 00095 00096 PyDict_SetItemString(result, name, value); 00097 } 00098 00099 break; 00100 case 2: 00101 result = PyDict_New(); 00102 00103 for(i = 0; i < num_ports; i++) { 00104 PyObject *value; 00105 fstring name; 00106 00107 rpcstr_pull(name, ctr.port.info_2[i].port_name.buffer, 00108 sizeof(fstring), -1, STR_TERMINATE); 00109 00110 py_from_PORT_INFO_2(&value, &ctr.port.info_2[i]); 00111 00112 PyDict_SetItemString( 00113 value, "level", PyInt_FromLong(2)); 00114 00115 PyDict_SetItemString(result, name, value); 00116 } 00117 00118 break; 00119 default: 00120 PyErr_SetString(spoolss_error, "unknown info level"); 00121 goto done; 00122 } 00123 00124 done: 00125 if (cli) 00126 cli_shutdown(cli); 00127 00128 if (mem_ctx) 00129 talloc_destroy(mem_ctx); 00130 00131 return result; 00132 }
BOOL py_from_PORT_INFO_1 | ( | PyObject ** | dict, | |
PORT_INFO_1 * | info | |||
) |
py_spoolss_ports_conv.c の 38 行で定義されています。
参照先 from_struct()・py_PORT_INFO_1.
参照元 spoolss_enumports().
00039 { 00040 *dict = from_struct(info, py_PORT_INFO_1); 00041 return True; 00042 }
BOOL py_to_PORT_INFO_1 | ( | PORT_INFO_1 * | info, | |
PyObject * | dict | |||
) |
BOOL py_from_PORT_INFO_2 | ( | PyObject ** | dict, | |
PORT_INFO_2 * | info | |||
) |
py_spoolss_ports_conv.c の 49 行で定義されています。
参照先 from_struct()・py_PORT_INFO_2.
参照元 spoolss_enumports().
00050 { 00051 *dict = from_struct(info, py_PORT_INFO_2); 00052 return True; 00053 }
BOOL py_to_PORT_INFO_2 | ( | PORT_INFO_2 * | info, | |
PyObject * | dict | |||
) |
PyObject* spoolss_hnd_getprinterdata | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_printerdata.c の 109 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・REGISTRY_VALUE::data_p・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_from_printerdata()・py_werror_tuple()・result・rpccli_spoolss_getprinterdata()・REGISTRY_VALUE::size・spoolss_werror・REGISTRY_VALUE::type・werror.
00110 { 00111 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00112 static char *kwlist[] = { "value", NULL }; 00113 char *valuename; 00114 WERROR werror; 00115 PyObject *result; 00116 REGISTRY_VALUE value; 00117 00118 /* Parse parameters */ 00119 00120 if (!PyArg_ParseTupleAndKeywords(args, kw, "s", kwlist, &valuename)) 00121 return NULL; 00122 00123 /* Call rpc function */ 00124 00125 werror = rpccli_spoolss_getprinterdata( 00126 hnd->cli, hnd->mem_ctx, &hnd->pol, valuename, 00127 &value); 00128 00129 if (!W_ERROR_IS_OK(werror)) { 00130 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00131 return NULL; 00132 } 00133 00134 py_from_printerdata( 00135 &result, NULL, valuename, value.type, value.data_p, 00136 value.size); 00137 00138 return result; 00139 }
PyObject* spoolss_hnd_setprinterdata | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_printerdata.c の 141 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・REGISTRY_VALUE::data_p・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_to_printerdata()・py_werror_tuple()・rpccli_spoolss_setprinterdata()・REGISTRY_VALUE::size・spoolss_werror・REGISTRY_VALUE::type・REGISTRY_VALUE::valuename・werror.
00142 { 00143 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00144 static char *kwlist[] = { "data", NULL }; 00145 PyObject *py_data; 00146 char *valuename; 00147 WERROR werror; 00148 REGISTRY_VALUE value; 00149 00150 if (!PyArg_ParseTupleAndKeywords( 00151 args, kw, "O!", kwlist, &PyDict_Type, &py_data)) 00152 return NULL; 00153 00154 if (!py_to_printerdata( 00155 NULL, &valuename, &value.type, &value.data_p, 00156 &value.size, py_data)) 00157 return NULL; 00158 00159 fstrcpy(value.valuename, valuename); 00160 00161 /* Call rpc function */ 00162 00163 werror = rpccli_spoolss_setprinterdata( 00164 hnd->cli, hnd->mem_ctx, &hnd->pol, &value); 00165 00166 if (!W_ERROR_IS_OK(werror)) { 00167 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00168 return NULL; 00169 } 00170 00171 Py_INCREF(Py_None); 00172 return Py_None; 00173 }
PyObject* spoolss_hnd_enumprinterdata | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_printerdata.c の 175 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・REGISTRY_VALUE::data_p・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_from_printerdata()・py_werror_tuple()・result・rpccli_spoolss_enumprinterdata()・REGISTRY_VALUE::size・spoolss_werror・REGISTRY_VALUE::type・REGISTRY_VALUE::valuename・werror.
00176 { 00177 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00178 static char *kwlist[] = { NULL }; 00179 uint32 data_needed, value_needed, ndx = 0; 00180 WERROR werror; 00181 PyObject *result; 00182 REGISTRY_VALUE value; 00183 00184 if (!PyArg_ParseTupleAndKeywords(args, kw, "", kwlist)) 00185 return NULL; 00186 00187 /* Get max buffer sizes for value and data */ 00188 00189 werror = rpccli_spoolss_enumprinterdata( 00190 hnd->cli, hnd->mem_ctx, &hnd->pol, ndx, 0, 0, 00191 &value_needed, &data_needed, NULL); 00192 00193 if (!W_ERROR_IS_OK(werror)) { 00194 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00195 return NULL; 00196 } 00197 00198 /* Iterate over all printerdata */ 00199 00200 result = PyDict_New(); 00201 00202 while (W_ERROR_IS_OK(werror)) { 00203 PyObject *obj; 00204 00205 werror = rpccli_spoolss_enumprinterdata( 00206 hnd->cli, hnd->mem_ctx, &hnd->pol, ndx, 00207 value_needed, data_needed, NULL, NULL, &value); 00208 00209 if (py_from_printerdata( 00210 &obj, NULL, value.valuename, value.type, 00211 value.data_p, value.size)) 00212 PyDict_SetItemString(result, value.valuename, obj); 00213 00214 ndx++; 00215 } 00216 00217 return result; 00218 }
PyObject* spoolss_hnd_deleteprinterdata | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_printerdata.c の 220 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_werror_tuple()・rpccli_spoolss_deleteprinterdata()・spoolss_werror・werror.
00221 { 00222 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00223 static char *kwlist[] = { "value", NULL }; 00224 char *value; 00225 WERROR werror; 00226 00227 /* Parse parameters */ 00228 00229 if (!PyArg_ParseTupleAndKeywords(args, kw, "s", kwlist, &value)) 00230 return NULL; 00231 00232 /* Call rpc function */ 00233 00234 werror = rpccli_spoolss_deleteprinterdata( 00235 hnd->cli, hnd->mem_ctx, &hnd->pol, value); 00236 00237 if (!W_ERROR_IS_OK(werror)) { 00238 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00239 return NULL; 00240 } 00241 00242 Py_INCREF(Py_None); 00243 return Py_None; 00244 }
PyObject* spoolss_hnd_getprinterdataex | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_printerdata.c の 246 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・REGISTRY_VALUE::data_p・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_from_printerdata()・py_werror_tuple()・result・rpccli_spoolss_getprinterdataex()・REGISTRY_VALUE::size・spoolss_werror・REGISTRY_VALUE::type・werror.
00247 { 00248 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00249 static char *kwlist[] = { "key", "value", NULL }; 00250 char *key, *valuename; 00251 WERROR werror; 00252 PyObject *result; 00253 REGISTRY_VALUE value; 00254 00255 /* Parse parameters */ 00256 00257 if (!PyArg_ParseTupleAndKeywords(args, kw, "ss", kwlist, &key, &valuename)) 00258 return NULL; 00259 00260 /* Call rpc function */ 00261 00262 werror = rpccli_spoolss_getprinterdataex( 00263 hnd->cli, hnd->mem_ctx, &hnd->pol, key, 00264 valuename, &value); 00265 00266 if (!W_ERROR_IS_OK(werror)) { 00267 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00268 return NULL; 00269 } 00270 00271 py_from_printerdata( 00272 &result, key, valuename, value.type, value.data_p, value.size); 00273 00274 return result; 00275 }
PyObject* spoolss_hnd_setprinterdataex | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_printerdata.c の 277 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・REGISTRY_VALUE::data_p・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_to_printerdata()・py_werror_tuple()・rpccli_spoolss_setprinterdataex()・REGISTRY_VALUE::size・spoolss_werror・REGISTRY_VALUE::type・REGISTRY_VALUE::valuename・werror.
00278 { 00279 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00280 static char *kwlist[] = { "data", NULL }; 00281 PyObject *py_data; 00282 char *keyname, *valuename; 00283 WERROR werror; 00284 REGISTRY_VALUE value; 00285 00286 if (!PyArg_ParseTupleAndKeywords( 00287 args, kw, "O!", kwlist, &PyDict_Type, &py_data)) 00288 return NULL; 00289 00290 if (!py_to_printerdata( 00291 &keyname, &valuename, &value.type, &value.data_p, &value.size, py_data)) 00292 return NULL; 00293 00294 fstrcpy(value.valuename, valuename); 00295 00296 /* Call rpc function */ 00297 00298 werror = rpccli_spoolss_setprinterdataex( 00299 hnd->cli, hnd->mem_ctx, &hnd->pol, keyname, &value); 00300 00301 if (!W_ERROR_IS_OK(werror)) { 00302 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00303 return NULL; 00304 } 00305 00306 Py_INCREF(Py_None); 00307 return Py_None; 00308 }
PyObject* spoolss_hnd_enumprinterdataex | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_printerdata.c の 310 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_from_printerdata()・py_werror_tuple()・regval_ctr_numvals()・regval_ctr_specific_value()・result・rpccli_spoolss_enumprinterdataex()・spoolss_error・spoolss_werror・werror.
00311 { 00312 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00313 static char *kwlist[] = { "key", NULL }; 00314 uint32 i; 00315 char *key; 00316 WERROR werror; 00317 PyObject *result; 00318 REGVAL_CTR *ctr; 00319 00320 if (!PyArg_ParseTupleAndKeywords(args, kw, "s", kwlist, &key)) 00321 return NULL; 00322 00323 if (!(ctr = TALLOC_ZERO_P(hnd->mem_ctx, REGVAL_CTR))) { 00324 PyErr_SetString(spoolss_error, "talloc failed"); 00325 return NULL; 00326 } 00327 00328 /* Get max buffer sizes for value and data */ 00329 00330 werror = rpccli_spoolss_enumprinterdataex( 00331 hnd->cli, hnd->mem_ctx, &hnd->pol, key, &ctr); 00332 00333 if (!W_ERROR_IS_OK(werror)) { 00334 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00335 return NULL; 00336 } 00337 00338 /* Iterate over all printerdata */ 00339 00340 result = PyDict_New(); 00341 00342 for (i = 0; i < regval_ctr_numvals(&ctr); i++) { 00343 REGISTRY_VALUE *value; 00344 PyObject *item; 00345 00346 item = PyDict_New(); 00347 value = regval_ctr_specific_value(&ctr, i); 00348 00349 if (py_from_printerdata( 00350 &item, key, value->valuename, value->type, 00351 value->data_p, value->size)) 00352 PyDict_SetItemString(result, value->valuename, item); 00353 } 00354 00355 return result; 00356 }
PyObject* spoolss_hnd_deleteprinterdataex | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_printerdata.c の 358 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_werror_tuple()・rpccli_spoolss_deleteprinterdataex()・spoolss_werror・werror.
00359 { 00360 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00361 static char *kwlist[] = { "key", "value", NULL }; 00362 char *key, *value; 00363 WERROR werror; 00364 00365 /* Parse parameters */ 00366 00367 if (!PyArg_ParseTupleAndKeywords(args, kw, "ss", kwlist, &key, &value)) 00368 return NULL; 00369 00370 /* Call rpc function */ 00371 00372 werror = rpccli_spoolss_deleteprinterdataex( 00373 hnd->cli, hnd->mem_ctx, &hnd->pol, key, value); 00374 00375 if (!W_ERROR_IS_OK(werror)) { 00376 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00377 return NULL; 00378 } 00379 00380 Py_INCREF(Py_None); 00381 return Py_None; 00382 }
PyObject* spoolss_hnd_enumprinterkey | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_printerdata.c の 384 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・from_unistr_list()・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・py_werror_tuple()・result・rpccli_spoolss_enumprinterkey()・spoolss_werror・werror.
00386 { 00387 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00388 static char *kwlist[] = { "key", NULL }; 00389 char *keyname; 00390 WERROR werror; 00391 uint32 keylist_len; 00392 uint16 *keylist; 00393 PyObject *result; 00394 00395 /* Parse parameters */ 00396 00397 if (!PyArg_ParseTupleAndKeywords(args, kw, "s", kwlist, &keyname)) 00398 return NULL; 00399 00400 /* Call rpc function */ 00401 00402 werror = rpccli_spoolss_enumprinterkey( 00403 hnd->cli, hnd->mem_ctx, &hnd->pol, keyname, &keylist, 00404 &keylist_len); 00405 00406 if (!W_ERROR_IS_OK(werror)) { 00407 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00408 return NULL; 00409 } 00410 00411 result = from_unistr_list(keylist); 00412 00413 return result; 00414 }
PyObject* spoolss_hnd_deleteprinterkey | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_printerdata.c の 418 行で定義されています。
参照先 werror.
00420 { 00421 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00422 static char *kwlist[] = { "key", NULL }; 00423 char *keyname; 00424 WERROR werror; 00425 00426 if (!PyArg_ParseTupleAndKeywords(args, kw, "s", kwlist, &keyname)) 00427 return NULL; 00428 00429 Py_INCREF(Py_None); 00430 return Py_None; 00431 }
PyObject* spoolss_openprinter | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_printers.c の 25 行で定義されています。
参照先 c・cli・cli_shutdown()・new_spoolss_policy_hnd_object()・open_pipe_creds()・cli_state::pipe_list・py_werror_tuple()・result・rpccli_spoolss_open_printer_ex()・server・spoolss_error・spoolss_werror・talloc_init()・werror.
00026 { 00027 char *unc_name, *server, *errstr; 00028 TALLOC_CTX *mem_ctx = NULL; 00029 POLICY_HND hnd; 00030 WERROR werror; 00031 PyObject *result = NULL, *creds = NULL; 00032 static char *kwlist[] = { "printername", "creds", "access", NULL }; 00033 uint32 desired_access = MAXIMUM_ALLOWED_ACCESS; 00034 struct cli_state *cli; 00035 00036 if (!PyArg_ParseTupleAndKeywords( 00037 args, kw, "s|Oi", kwlist, &unc_name, &creds, 00038 &desired_access)) 00039 return NULL; 00040 00041 if (unc_name[0] != '\\' || unc_name[1] != '\\') { 00042 PyErr_SetString(PyExc_ValueError, "UNC name required"); 00043 return NULL; 00044 } 00045 00046 server = SMB_STRDUP(unc_name + 2); 00047 00048 if (strchr(server, '\\')) { 00049 char *c = strchr(server, '\\'); 00050 *c = 0; 00051 } 00052 00053 if (creds && creds != Py_None && !PyDict_Check(creds)) { 00054 PyErr_SetString(PyExc_TypeError, 00055 "credentials must be dictionary or None"); 00056 return NULL; 00057 } 00058 00059 if (!(cli = open_pipe_creds(server, creds, PI_SPOOLSS, &errstr))) { 00060 PyErr_SetString(spoolss_error, errstr); 00061 free(errstr); 00062 goto done; 00063 } 00064 00065 if (!(mem_ctx = talloc_init("spoolss_openprinter"))) { 00066 PyErr_SetString(spoolss_error, 00067 "unable to init talloc context\n"); 00068 goto done; 00069 } 00070 00071 werror = rpccli_spoolss_open_printer_ex( 00072 cli->pipe_list, mem_ctx, unc_name, "", desired_access, server, 00073 "", &hnd); 00074 00075 if (!W_ERROR_IS_OK(werror)) { 00076 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00077 goto done; 00078 } 00079 00080 result = new_spoolss_policy_hnd_object(cli, mem_ctx, &hnd); 00081 00082 done: 00083 if (!result) { 00084 if (cli) 00085 cli_shutdown(cli); 00086 00087 if (mem_ctx) 00088 talloc_destroy(mem_ctx); 00089 } 00090 00091 SAFE_FREE(server); 00092 00093 return result; 00094 }
PyObject* spoolss_closeprinter | ( | PyObject * | self, | |
PyObject * | args | |||
) |
py_spoolss_printers.c の 98 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・result・rpccli_spoolss_close_printer()・spoolss_policy_hnd_type.
00099 { 00100 PyObject *po; 00101 spoolss_policy_hnd_object *hnd; 00102 WERROR result; 00103 00104 /* Parse parameters */ 00105 00106 if (!PyArg_ParseTuple(args, "O!", &spoolss_policy_hnd_type, &po)) 00107 return NULL; 00108 00109 hnd = (spoolss_policy_hnd_object *)po; 00110 00111 /* Call rpc function */ 00112 00113 result = rpccli_spoolss_close_printer( 00114 hnd->cli, hnd->mem_ctx, &hnd->pol); 00115 00116 /* Return value */ 00117 00118 Py_INCREF(Py_None); 00119 return Py_None; 00120 }
PyObject* spoolss_hnd_getprinter | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_printers.c の 124 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・level・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・printer_info_ctr_info::printers_0・printer_info_ctr_info::printers_1・printer_info_ctr_info::printers_2・printer_info_ctr_info::printers_3・py_from_PRINTER_INFO_0()・py_from_PRINTER_INFO_1()・py_from_PRINTER_INFO_2()・py_from_PRINTER_INFO_3()・py_werror_tuple()・result・rpccli_spoolss_getprinter()・spoolss_werror・werror.
00125 { 00126 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00127 WERROR werror; 00128 PyObject *result = NULL; 00129 PRINTER_INFO_CTR ctr; 00130 int level = 1; 00131 static char *kwlist[] = {"level", NULL}; 00132 00133 /* Parse parameters */ 00134 00135 if (!PyArg_ParseTupleAndKeywords(args, kw, "|i", kwlist, &level)) 00136 return NULL; 00137 00138 ZERO_STRUCT(ctr); 00139 00140 /* Call rpc function */ 00141 00142 werror = rpccli_spoolss_getprinter( 00143 hnd->cli, hnd->mem_ctx, &hnd->pol, level, &ctr); 00144 00145 /* Return value */ 00146 00147 if (!W_ERROR_IS_OK(werror)) { 00148 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00149 return NULL; 00150 } 00151 00152 result = Py_None; 00153 00154 switch (level) { 00155 00156 case 0: 00157 py_from_PRINTER_INFO_0(&result, ctr.printers_0); 00158 break; 00159 00160 case 1: 00161 py_from_PRINTER_INFO_1(&result, ctr.printers_1); 00162 break; 00163 00164 case 2: 00165 py_from_PRINTER_INFO_2(&result, ctr.printers_2); 00166 break; 00167 00168 case 3: 00169 py_from_PRINTER_INFO_3(&result, ctr.printers_3); 00170 break; 00171 } 00172 00173 Py_INCREF(result); 00174 return result; 00175 }
PyObject* spoolss_hnd_setprinter | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_printers.c の 179 行で定義されています。
参照先 spoolss_policy_hnd_object::cli・get_level_value()・level・spoolss_policy_hnd_object::mem_ctx・spoolss_policy_hnd_object::pol・printer_info_ctr_info::printers_1・printer_info_ctr_info::printers_2・printer_info_ctr_info::printers_3・py_to_PRINTER_INFO_1()・py_to_PRINTER_INFO_2()・py_to_PRINTER_INFO_3()・py_werror_tuple()・rpccli_spoolss_setprinter()・spoolss_error・spoolss_werror・werror.
00180 { 00181 spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self; 00182 WERROR werror; 00183 PyObject *info; 00184 PRINTER_INFO_CTR ctr; 00185 uint32 level; 00186 static char *kwlist[] = {"dict", NULL}; 00187 union { 00188 PRINTER_INFO_1 printers_1; 00189 PRINTER_INFO_2 printers_2; 00190 PRINTER_INFO_3 printers_3; 00191 } pinfo; 00192 00193 /* Parse parameters */ 00194 00195 if (!PyArg_ParseTupleAndKeywords( 00196 args, kw, "O!", kwlist, &PyDict_Type, &info)) 00197 return NULL; 00198 00199 if (!get_level_value(info, &level)) { 00200 PyErr_SetString(spoolss_error, "invalid info level"); 00201 return NULL; 00202 } 00203 00204 if (level < 1 && level > 3) { 00205 PyErr_SetString(spoolss_error, "unsupported info level"); 00206 return NULL; 00207 } 00208 00209 /* Fill in printer info */ 00210 00211 ZERO_STRUCT(ctr); 00212 00213 switch (level) { 00214 case 1: 00215 ctr.printers_1 = &pinfo.printers_1; 00216 00217 if (!py_to_PRINTER_INFO_1(ctr.printers_1, info)){ 00218 PyErr_SetString(spoolss_error, 00219 "error converting printer to info 1"); 00220 return NULL; 00221 } 00222 00223 break; 00224 case 2: 00225 ctr.printers_2 = &pinfo.printers_2; 00226 00227 if (!py_to_PRINTER_INFO_2(ctr.printers_2, info, 00228 hnd->mem_ctx)){ 00229 PyErr_SetString(spoolss_error, 00230 "error converting printer to info 2"); 00231 return NULL; 00232 } 00233 00234 break; 00235 case 3: 00236 ctr.printers_3 = &pinfo.printers_3; 00237 00238 if (!py_to_PRINTER_INFO_3(ctr.printers_3, info, 00239 hnd->mem_ctx)) { 00240 PyErr_SetString(spoolss_error, 00241 "error converting to printer info 3"); 00242 return NULL; 00243 } 00244 00245 break; 00246 default: 00247 PyErr_SetString(spoolss_error, "unsupported info level"); 00248 return NULL; 00249 } 00250 00251 /* Call rpc function */ 00252 00253 werror = rpccli_spoolss_setprinter( 00254 hnd->cli, hnd->mem_ctx, &hnd->pol, level, &ctr, 0); 00255 00256 /* Return value */ 00257 00258 if (!W_ERROR_IS_OK(werror)) { 00259 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00260 return NULL; 00261 } 00262 00263 Py_INCREF(Py_None); 00264 return Py_None; 00265 }
PyObject* spoolss_enumprinters | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_printers.c の 269 行で定義されています。
参照先 UNISTR::buffer・cli・cli_shutdown()・flags・level・name・printer_info_1::name・open_pipe_creds()・cli_state::pipe_list・printer_info_0::printername・printer_info_2::printername・printer_info_ctr_info::printers_0・printer_info_ctr_info::printers_1・printer_info_ctr_info::printers_2・py_from_PRINTER_INFO_0()・py_from_PRINTER_INFO_1()・py_from_PRINTER_INFO_2()・py_werror_tuple()・result・rpccli_spoolss_enum_printers()・rpcstr_pull()・server・spoolss_error・spoolss_werror・talloc_init()・werror.
00270 { 00271 WERROR werror; 00272 PyObject *result = NULL, *creds = NULL; 00273 PRINTER_INFO_CTR ctr; 00274 int level = 1, flags = PRINTER_ENUM_LOCAL, i; 00275 uint32 num_printers; 00276 static char *kwlist[] = {"server", "name", "level", "flags", 00277 "creds", NULL}; 00278 TALLOC_CTX *mem_ctx = NULL; 00279 struct cli_state *cli = NULL; 00280 char *server, *errstr, *name = NULL; 00281 00282 /* Parse parameters */ 00283 00284 if (!PyArg_ParseTupleAndKeywords( 00285 args, kw, "s|siiO", kwlist, &server, &name, &level, 00286 &flags, &creds)) 00287 return NULL; 00288 00289 if (server[0] != '\\' || server[1] != '\\') { 00290 PyErr_SetString(PyExc_ValueError, "UNC name required"); 00291 return NULL; 00292 } 00293 00294 server += 2; 00295 00296 if (creds && creds != Py_None && !PyDict_Check(creds)) { 00297 PyErr_SetString(PyExc_TypeError, 00298 "credentials must be dictionary or None"); 00299 return NULL; 00300 } 00301 00302 if (!(cli = open_pipe_creds(server, creds, PI_SPOOLSS, &errstr))) { 00303 PyErr_SetString(spoolss_error, errstr); 00304 free(errstr); 00305 goto done; 00306 } 00307 00308 if (!(mem_ctx = talloc_init("spoolss_enumprinters"))) { 00309 PyErr_SetString( 00310 spoolss_error, "unable to init talloc context\n"); 00311 goto done; 00312 } 00313 00314 /* This RPC is weird. By setting the server name to different 00315 values we can get different behaviour. If however the server 00316 name is not specified, we default it to being the full server 00317 name as this is probably what the caller intended. To pass a 00318 NULL name, pass a value of "" */ 00319 00320 if (!name) 00321 name = server; 00322 else { 00323 if (!name[0]) 00324 name = NULL; 00325 } 00326 00327 /* Call rpc function */ 00328 00329 werror = rpccli_spoolss_enum_printers( 00330 cli->pipe_list, mem_ctx, name, flags, level, &num_printers, &ctr); 00331 00332 if (!W_ERROR_IS_OK(werror)) { 00333 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror)); 00334 goto done; 00335 } 00336 00337 /* Return value */ 00338 00339 switch (level) { 00340 case 0: 00341 result = PyDict_New(); 00342 00343 for (i = 0; i < num_printers; i++) { 00344 PyObject *value; 00345 fstring s; 00346 00347 rpcstr_pull(s, ctr.printers_0[i].printername.buffer, 00348 sizeof(fstring), -1, STR_TERMINATE); 00349 00350 py_from_PRINTER_INFO_0(&value, &ctr.printers_0[i]); 00351 00352 PyDict_SetItemString( 00353 value, "level", PyInt_FromLong(0)); 00354 00355 PyDict_SetItemString(result, s, value); 00356 } 00357 00358 break; 00359 case 1: 00360 result = PyDict_New(); 00361 00362 for(i = 0; i < num_printers; i++) { 00363 PyObject *value; 00364 fstring s; 00365 00366 rpcstr_pull(s, ctr.printers_1[i].name.buffer, 00367 sizeof(fstring), -1, STR_TERMINATE); 00368 00369 py_from_PRINTER_INFO_1(&value, &ctr.printers_1[i]); 00370 00371 PyDict_SetItemString( 00372 value, "level", PyInt_FromLong(1)); 00373 00374 PyDict_SetItemString(result, s, value); 00375 } 00376 00377 break; 00378 case 2: 00379 result = PyDict_New(); 00380 00381 for(i = 0; i < num_printers; i++) { 00382 PyObject *value; 00383 fstring s; 00384 00385 rpcstr_pull(s, ctr.printers_2[i].printername.buffer, 00386 sizeof(fstring), -1, STR_TERMINATE); 00387 00388 py_from_PRINTER_INFO_2(&value, &ctr.printers_2[i]); 00389 00390 PyDict_SetItemString( 00391 value, "level", PyInt_FromLong(2)); 00392 00393 PyDict_SetItemString(result, s, value); 00394 } 00395 00396 break; 00397 default: 00398 PyErr_SetString(spoolss_error, "unknown info level"); 00399 goto done; 00400 } 00401 00402 done: 00403 if (cli) 00404 cli_shutdown(cli); 00405 00406 if (mem_ctx) 00407 talloc_destroy(mem_ctx); 00408 00409 return result; 00410 }
PyObject* spoolss_addprinterex | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_spoolss_printers.c の 414 行で定義されています。
参照先 cli・cli_shutdown()・cli_state::mem_ctx・open_pipe_creds()・cli_state::pipe_list・printer_info_ctr_info::printers_2・py_to_PRINTER_INFO_2()・result・rpccli_spoolss_addprinterex()・server・spoolss_error・talloc_init()・werror.
00415 { 00416 static char *kwlist[] = { "server", "printername", "info", "creds", 00417 NULL}; 00418 char *printername, *server, *errstr; 00419 PyObject *info, *result = NULL, *creds = NULL; 00420 struct cli_state *cli = NULL; 00421 TALLOC_CTX *mem_ctx = NULL; 00422 PRINTER_INFO_CTR ctr; 00423 PRINTER_INFO_2 info2; 00424 WERROR werror; 00425 00426 if (!PyArg_ParseTupleAndKeywords( 00427 args, kw, "ssO!|O!", kwlist, &server, &printername, 00428 &PyDict_Type, &info, &PyDict_Type, &creds)) 00429 return NULL; 00430 00431 if (!(cli = open_pipe_creds(server, creds, PI_SPOOLSS, &errstr))) { 00432 PyErr_SetString(spoolss_error, errstr); 00433 free(errstr); 00434 goto done; 00435 } 00436 00437 if (!(mem_ctx = talloc_init("spoolss_addprinterex"))) { 00438 PyErr_SetString( 00439 spoolss_error, "unable to init talloc context\n"); 00440 goto done; 00441 } 00442 00443 if (!py_to_PRINTER_INFO_2(&info2, info, mem_ctx)) { 00444 PyErr_SetString(spoolss_error, 00445 "error converting to printer info 2"); 00446 goto done; 00447 } 00448 00449 ctr.printers_2 = &info2; 00450 00451 werror = rpccli_spoolss_addprinterex(cli->pipe_list, mem_ctx, 2, &ctr); 00452 00453 Py_INCREF(Py_None); 00454 result = Py_None; 00455 00456 done: 00457 if (cli) 00458 cli_shutdown(cli); 00459 00460 if (mem_ctx) 00461 talloc_destroy(mem_ctx); 00462 00463 return result; 00464 }
BOOL py_from_DEVICEMODE | ( | PyObject ** | dict, | |
DEVICEMODE * | devmode | |||
) |
py_spoolss_printers_conv.c の 150 行で定義されています。
参照先 devicemode::dev_private・devicemode::driverextra・from_struct()・py_DEVICEMODE.
00151 { 00152 *dict = from_struct(devmode, py_DEVICEMODE); 00153 00154 PyDict_SetItemString(*dict, "private", 00155 PyString_FromStringAndSize( 00156 devmode->dev_private, devmode->driverextra)); 00157 00158 return True; 00159 }
BOOL py_to_DEVICEMODE | ( | DEVICEMODE * | devmode, | |
PyObject * | dict | |||
) |
py_spoolss_printers_conv.c の 161 行で定義されています。
参照先 devicemode::dev_private・devicemode::driverextra・py_DEVICEMODE・result・to_struct().
00162 { 00163 PyObject *obj, *dict_copy = PyDict_Copy(dict); 00164 BOOL result = False; 00165 00166 if (!(obj = PyDict_GetItemString(dict_copy, "private"))) 00167 goto done; 00168 00169 if (!PyString_Check(obj)) 00170 goto done; 00171 00172 devmode->dev_private = PyString_AsString(obj); 00173 devmode->driverextra = PyString_Size(obj); 00174 00175 PyDict_DelItemString(dict_copy, "private"); 00176 00177 if (!to_struct(devmode, dict_copy, py_DEVICEMODE)) 00178 goto done; 00179 00180 result = True; 00181 00182 done: 00183 Py_DECREF(dict_copy); 00184 return result; 00185 }
BOOL py_from_PRINTER_INFO_0 | ( | PyObject ** | dict, | |
PRINTER_INFO_0 * | info | |||
) |
py_spoolss_printers_conv.c の 191 行で定義されています。
参照先 from_struct()・py_PRINTER_INFO_0.
参照元 spoolss_enumprinters()・spoolss_hnd_getprinter().
00192 { 00193 *dict = from_struct(info, py_PRINTER_INFO_0); 00194 PyDict_SetItemString(*dict, "level", PyInt_FromLong(0)); 00195 return True; 00196 }
BOOL py_to_PRINTER_INFO_0 | ( | PRINTER_INFO_0 * | info, | |
PyObject * | dict | |||
) |
BOOL py_from_PRINTER_INFO_1 | ( | PyObject ** | dict, | |
PRINTER_INFO_1 * | info | |||
) |
py_spoolss_printers_conv.c の 207 行で定義されています。
参照先 from_struct()・py_PRINTER_INFO_1.
参照元 spoolss_enumprinters()・spoolss_hnd_getprinter().
00208 { 00209 *dict = from_struct(info, py_PRINTER_INFO_1); 00210 PyDict_SetItemString(*dict, "level", PyInt_FromLong(1)); 00211 return True; 00212 }
BOOL py_to_PRINTER_INFO_1 | ( | PRINTER_INFO_1 * | info, | |
PyObject * | dict | |||
) |
py_spoolss_printers_conv.c の 214 行で定義されています。
参照先 py_PRINTER_INFO_1・result・to_struct().
00215 { 00216 PyObject *obj, *dict_copy = PyDict_Copy(dict); 00217 BOOL result = False; 00218 00219 if (!(obj = PyDict_GetItemString(dict_copy, "level")) || 00220 !PyInt_Check(obj)) 00221 goto done; 00222 00223 PyDict_DelItemString(dict_copy, "level"); 00224 00225 if (!to_struct(info, dict_copy, py_PRINTER_INFO_1)) 00226 goto done; 00227 00228 result = True; 00229 00230 done: 00231 Py_DECREF(dict_copy); 00232 return result; 00233 }
BOOL py_from_PRINTER_INFO_2 | ( | PyObject ** | dict, | |
PRINTER_INFO_2 * | info | |||
) |
py_spoolss_printers_conv.c の 239 行で定義されています。
参照先 printer_info_2::devmode・from_struct()・py_from_DEVICEMODE()・py_from_SECDESC()・py_PRINTER_INFO_2・printer_info_2::secdesc.
参照元 spoolss_enumprinters()・spoolss_hnd_getprinter().
00240 { 00241 PyObject *obj; 00242 00243 *dict = from_struct(info, py_PRINTER_INFO_2); 00244 00245 /* The security descriptor could be NULL */ 00246 00247 if (info->secdesc) { 00248 if (py_from_SECDESC(&obj, info->secdesc)) 00249 PyDict_SetItemString(*dict, "security_descriptor", obj); 00250 } 00251 00252 /* Bong! The devmode could be NULL */ 00253 00254 if (info->devmode) 00255 py_from_DEVICEMODE(&obj, info->devmode); 00256 else 00257 obj = PyDict_New(); 00258 00259 PyDict_SetItemString(*dict, "device_mode", obj); 00260 00261 PyDict_SetItemString(*dict, "level", PyInt_FromLong(2)); 00262 00263 return True; 00264 }
BOOL py_to_PRINTER_INFO_2 | ( | PRINTER_INFO_2 * | info, | |
PyObject * | dict, | |||
TALLOC_CTX * | mem_ctx | |||
) |
py_spoolss_printers_conv.c の 266 行で定義されています。
参照先 _talloc()・printer_info_2::devmode・py_PRINTER_INFO_2・py_to_DEVICEMODE()・py_to_SECDESC()・result・printer_info_2::secdesc・to_struct().
参照元 spoolss_addprinterex()・spoolss_hnd_setprinter().
00268 { 00269 PyObject *obj, *dict_copy = PyDict_Copy(dict); 00270 BOOL result = False; 00271 00272 /* Convert security descriptor - may be NULL */ 00273 00274 info->secdesc = NULL; 00275 00276 if ((obj = PyDict_GetItemString(dict_copy, "security_descriptor"))) { 00277 00278 if (!PyDict_Check(obj)) 00279 goto done; 00280 00281 if (!py_to_SECDESC(&info->secdesc, obj, mem_ctx)) 00282 goto done; 00283 00284 PyDict_DelItemString(dict_copy, "security_descriptor"); 00285 } 00286 00287 /* Convert device mode */ 00288 00289 if (!(obj = PyDict_GetItemString(dict_copy, "device_mode")) 00290 || !PyDict_Check(obj)) 00291 goto done; 00292 00293 info->devmode = _talloc(mem_ctx, sizeof(DEVICEMODE)); 00294 00295 if (!py_to_DEVICEMODE(info->devmode, obj)) 00296 goto done; 00297 00298 PyDict_DelItemString(dict_copy, "device_mode"); 00299 00300 /* Check info level */ 00301 00302 if (!(obj = PyDict_GetItemString(dict_copy, "level")) || 00303 !PyInt_Check(obj)) 00304 goto done; 00305 00306 PyDict_DelItemString(dict_copy, "level"); 00307 00308 /* Convert remaining elements of dictionary */ 00309 00310 if (!to_struct(info, dict_copy, py_PRINTER_INFO_2)) 00311 goto done; 00312 00313 result = True; 00314 00315 done: 00316 Py_DECREF(dict_copy); 00317 return result; 00318 }
BOOL py_from_PRINTER_INFO_3 | ( | PyObject ** | dict, | |
PRINTER_INFO_3 * | info | |||
) |
py_spoolss_printers_conv.c の 324 行で定義されています。
参照先 from_struct()・py_from_SECDESC()・py_PRINTER_INFO_3・printer_info_3::secdesc.
00325 { 00326 PyObject *obj; 00327 00328 *dict = from_struct(info, py_PRINTER_INFO_3); 00329 00330 if (py_from_SECDESC(&obj, info->secdesc)) 00331 PyDict_SetItemString(*dict, "security_descriptor", obj); 00332 00333 PyDict_SetItemString(*dict, "level", PyInt_FromLong(3)); 00334 00335 return True; 00336 }
BOOL py_to_PRINTER_INFO_3 | ( | PRINTER_INFO_3 * | info, | |
PyObject * | dict, | |||
TALLOC_CTX * | mem_ctx | |||
) |
py_spoolss_printers_conv.c の 338 行で定義されています。
参照先 py_PRINTER_INFO_3・py_to_SECDESC()・printer_info_3::secdesc・to_struct().
00340 { 00341 PyObject *obj; 00342 00343 if (!to_struct(info, dict, py_PRINTER_INFO_3)) 00344 return False; 00345 00346 if (!(obj = PyDict_GetItemString(dict, "security_descriptor"))) 00347 return False; 00348 00349 if (!py_to_SECDESC(&info->secdesc, obj, mem_ctx)) 00350 return False; 00351 00352 return True; 00353 }
PyTypeObject spoolss_policy_hnd_type |
PyObject* spoolss_error |
py_spoolss.c の 25 行で定義されています。
参照元 initspoolss()・py_to_printerdata()・spoolss_addprinterdriver()・spoolss_addprinterdriverex()・spoolss_addprinterex()・spoolss_deleteprinterdriver()・spoolss_deleteprinterdriverex()・spoolss_enumports()・spoolss_enumprinterdrivers()・spoolss_enumprinters()・spoolss_getprinterdriverdir()・spoolss_hnd_addform()・spoolss_hnd_addjob()・spoolss_hnd_enumforms()・spoolss_hnd_enumprinterdataex()・spoolss_hnd_getprinterdriver()・spoolss_hnd_setform()・spoolss_hnd_setprinter()・spoolss_hnd_startdocprinter()・spoolss_openprinter().
PyObject * spoolss_werror |
py_spoolss.c の 25 行で定義されています。
参照元 initspoolss()・spoolss_addprinterdriver()・spoolss_enumports()・spoolss_enumprinterdrivers()・spoolss_enumprinters()・spoolss_getprinterdriverdir()・spoolss_hnd_addform()・spoolss_hnd_deleteform()・spoolss_hnd_deleteprinterdata()・spoolss_hnd_deleteprinterdataex()・spoolss_hnd_enddocprinter()・spoolss_hnd_endpageprinter()・spoolss_hnd_enumforms()・spoolss_hnd_enumjobs()・spoolss_hnd_enumprinterdata()・spoolss_hnd_enumprinterdataex()・spoolss_hnd_enumprinterkey()・spoolss_hnd_getform()・spoolss_hnd_getjob()・spoolss_hnd_getprinter()・spoolss_hnd_getprinterdata()・spoolss_hnd_getprinterdataex()・spoolss_hnd_getprinterdriver()・spoolss_hnd_setform()・spoolss_hnd_setjob()・spoolss_hnd_setprinter()・spoolss_hnd_setprinterdata()・spoolss_hnd_setprinterdataex()・spoolss_hnd_startdocprinter()・spoolss_hnd_startpageprinter()・spoolss_hnd_writeprinter()・spoolss_openprinter().