static bool test_JobEnum(struct torture_context *tctx, struct dcerpc_pipe *p) { NTSTATUS status; struct atsvc_JobEnum r; struct atsvc_enum_ctr ctr; uint32_t resume_handle = 0, i, total_entries = 0; bool ret = true; r.in.servername = dcerpc_server_name(p); ctr.entries_read = 0; ctr.first_entry = NULL; r.in.ctr = r.out.ctr = &ctr; r.in.preferred_max_len = 0xffffffff; r.in.resume_handle = r.out.resume_handle = &resume_handle; r.out.total_entries = &total_entries; status = dcerpc_atsvc_JobEnum(p, tctx, &r); torture_assert_ntstatus_ok(tctx, status, "JobEnum failed"); for (i = 0; i < r.out.ctr->entries_read; i++) { if (!test_JobGetInfo(p, tctx, r.out.ctr->first_entry[i].job_id)) { ret = false; } } return ret; }
static void update_joblist(void) { TALLOC_CTX *mem_ctx = talloc_init("update_joblist"); NTSTATUS status; struct atsvc_JobEnum r; struct atsvc_enum_ctr ctr; int i; uint32_t resume_handle = 0; gtk_list_store_clear(store_jobs); ctr.entries_read = 0; ctr.first_entry = NULL; r.in.servername = dcerpc_server_name(at_pipe); r.in.ctr = r.out.ctr = &ctr; r.in.preferred_max_len = 0xffffffff; r.in.resume_handle = r.out.resume_handle = &resume_handle; status = dcerpc_atsvc_JobEnum(at_pipe, mem_ctx, &r); if(!NT_STATUS_IS_OK(status)) { gtk_show_ntstatus(mainwin, "Error while enumerating first job", status); return; } for (i = 0; i < r.out.ctr->entries_read; i++) { GtkTreeIter iter; gtk_list_store_append(store_jobs, &iter); gtk_list_store_set (store_jobs, &iter, 0, r.out.ctr->first_entry[i].flags, 1, r.out.ctr->first_entry[i].job_id, 2, r.out.ctr->first_entry[i].days_of_week, /*FIXME: Nicer format */ 3, r.out.ctr->first_entry[i].job_time, /* FIXME: Nicer format */ 4, r.out.ctr->first_entry[i].command, -1); } talloc_free(mem_ctx); }