2001-11-21 02:08:57 +00:00
|
|
|
/* packet-dcerpc-spoolss.c
|
2002-01-03 20:42:41 +00:00
|
|
|
* Routines for SMB \PIPE\spoolss packet disassembly
|
2003-01-16 22:44:05 +00:00
|
|
|
* Copyright 2001-2003, Tim Potter <tpot@samba.org>
|
2001-11-12 08:58:45 +00:00
|
|
|
*
|
2004-07-18 00:24:25 +00:00
|
|
|
* $Id$
|
2001-11-12 08:58:45 +00:00
|
|
|
*
|
2006-05-21 04:49:01 +00:00
|
|
|
* Wireshark - Network traffic analyzer
|
|
|
|
* By Gerald Combs <gerald@wireshark.org>
|
2001-11-12 08:58:45 +00:00
|
|
|
* Copyright 1998 Gerald Combs
|
2002-08-28 21:04:11 +00:00
|
|
|
*
|
2001-11-12 08:58:45 +00:00
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* as published by the Free Software Foundation; either version 2
|
|
|
|
* of the License, or (at your option) any later version.
|
2002-08-28 21:04:11 +00:00
|
|
|
*
|
2001-11-12 08:58:45 +00:00
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
2002-08-28 21:04:11 +00:00
|
|
|
*
|
2001-11-12 08:58:45 +00:00
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
*/
|
|
|
|
|
2003-02-05 06:55:56 +00:00
|
|
|
/* TODO list:
|
|
|
|
|
|
|
|
- audit of item lengths
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
2001-11-12 08:58:45 +00:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include "config.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <glib.h>
|
2002-01-03 20:42:41 +00:00
|
|
|
#include <string.h>
|
|
|
|
|
2002-01-21 07:37:49 +00:00
|
|
|
#include <epan/packet.h>
|
2006-09-16 08:51:03 +00:00
|
|
|
#include <epan/emem.h>
|
2001-11-12 08:58:45 +00:00
|
|
|
#include "packet-dcerpc.h"
|
2002-01-03 20:42:41 +00:00
|
|
|
#include "packet-dcerpc-nt.h"
|
2001-11-21 02:08:57 +00:00
|
|
|
#include "packet-dcerpc-spoolss.h"
|
2004-08-03 02:28:49 +00:00
|
|
|
#include "packet-windows-common.h"
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-05-20 06:53:31 +00:00
|
|
|
/* GetPrinterDriver2 */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
static int hf_clientmajorversion = -1;
|
|
|
|
static int hf_clientminorversion = -1;
|
|
|
|
static int hf_servermajorversion = -1;
|
|
|
|
static int hf_serverminorversion = -1;
|
|
|
|
static int hf_driverpath = -1;
|
|
|
|
static int hf_datafile = -1;
|
|
|
|
static int hf_configfile = -1;
|
|
|
|
static int hf_helpfile = -1;
|
|
|
|
static int hf_monitorname = -1;
|
|
|
|
static int hf_defaultdatatype = -1;
|
|
|
|
static int hf_driverinfo_cversion = -1;
|
|
|
|
static int hf_dependentfiles = -1;
|
2007-04-26 06:00:48 +00:00
|
|
|
static int hf_previousdrivernames = -1;
|
|
|
|
static int hf_driverdate = -1;
|
|
|
|
static int hf_padding = -1;
|
|
|
|
static int hf_driver_version_low = -1;
|
|
|
|
static int hf_driver_version_high = -1;
|
|
|
|
static int hf_mfgname = -1;
|
|
|
|
static int hf_oemurl = -1;
|
|
|
|
static int hf_hardwareid= -1;
|
|
|
|
static int hf_provider = -1;
|
2002-11-07 17:45:30 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
/* GetPrinter */
|
|
|
|
|
2003-02-05 06:55:56 +00:00
|
|
|
/* Times */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
static int hf_start_time = -1;
|
|
|
|
static int hf_end_time = -1;
|
|
|
|
static int hf_elapsed_time = -1;
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
/****************************************************************************/
|
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
/*
|
2003-02-05 06:55:56 +00:00
|
|
|
* New hf index values - I'm in the process of doing a bit of a cleanup -tpot
|
2003-01-28 22:51:54 +00:00
|
|
|
*/
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
static int hf_opnum = -1;
|
|
|
|
static int hf_hnd = -1;
|
|
|
|
static int hf_rc = -1;
|
|
|
|
static int hf_offered = -1;
|
|
|
|
static int hf_needed = -1;
|
|
|
|
static int hf_returned = -1;
|
|
|
|
static int hf_buffer_size = -1;
|
|
|
|
static int hf_buffer_data = -1;
|
|
|
|
static int hf_offset = -1;
|
|
|
|
static int hf_level = -1;
|
|
|
|
static int hf_access_required = -1;
|
|
|
|
|
|
|
|
static int hf_printername = -1;
|
|
|
|
static int hf_machinename = -1;
|
|
|
|
static int hf_notifyname = -1;
|
|
|
|
static int hf_printerdesc = -1;
|
|
|
|
static int hf_printercomment = -1;
|
|
|
|
static int hf_servername = -1;
|
|
|
|
static int hf_sharename = -1;
|
|
|
|
static int hf_portname = -1;
|
|
|
|
static int hf_printerlocation = -1;
|
|
|
|
static int hf_drivername = -1;
|
|
|
|
static int hf_architecture = -1;
|
|
|
|
static int hf_username = -1;
|
|
|
|
static int hf_documentname = -1;
|
|
|
|
static int hf_outputfile = -1;
|
|
|
|
static int hf_datatype = -1;
|
|
|
|
static int hf_textstatus = -1;
|
|
|
|
static int hf_sepfile = -1;
|
|
|
|
static int hf_printprocessor = -1;
|
|
|
|
static int hf_parameters = -1;
|
|
|
|
|
|
|
|
/* Printer information */
|
|
|
|
|
|
|
|
static int hf_printer_cjobs = -1;
|
|
|
|
static int hf_printer_total_jobs = -1;
|
|
|
|
static int hf_printer_total_bytes = -1;
|
|
|
|
static int hf_printer_global_counter = -1;
|
|
|
|
static int hf_printer_total_pages = -1;
|
|
|
|
static int hf_printer_major_version = -1;
|
|
|
|
static int hf_printer_build_version = -1;
|
|
|
|
static int hf_printer_unk7 = -1;
|
|
|
|
static int hf_printer_unk8 = -1;
|
|
|
|
static int hf_printer_unk9 = -1;
|
|
|
|
static int hf_printer_session_ctr = -1;
|
|
|
|
static int hf_printer_unk11 = -1;
|
|
|
|
static int hf_printer_printer_errors = -1;
|
|
|
|
static int hf_printer_unk13 = -1;
|
|
|
|
static int hf_printer_unk14 = -1;
|
|
|
|
static int hf_printer_unk15 = -1;
|
|
|
|
static int hf_printer_unk16 = -1;
|
|
|
|
static int hf_printer_changeid = -1;
|
|
|
|
static int hf_printer_unk18 = -1;
|
|
|
|
static int hf_printer_unk20 = -1;
|
|
|
|
static int hf_printer_c_setprinter = -1;
|
|
|
|
static int hf_printer_unk22 = -1;
|
|
|
|
static int hf_printer_unk23 = -1;
|
|
|
|
static int hf_printer_unk24 = -1;
|
|
|
|
static int hf_printer_unk25 = -1;
|
|
|
|
static int hf_printer_unk26 = -1;
|
|
|
|
static int hf_printer_unk27 = -1;
|
|
|
|
static int hf_printer_unk28 = -1;
|
|
|
|
static int hf_printer_unk29 = -1;
|
|
|
|
static int hf_printer_flags = -1;
|
|
|
|
static int hf_printer_priority = -1;
|
|
|
|
static int hf_printer_default_priority = -1;
|
|
|
|
static int hf_printer_jobs = -1;
|
|
|
|
static int hf_printer_averageppm = -1;
|
|
|
|
static int hf_printer_guid = -1;
|
|
|
|
static int hf_printer_action = -1;
|
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
/* Printer data */
|
|
|
|
|
|
|
|
static int hf_printerdata = -1;
|
|
|
|
static int hf_printerdata_key = -1;
|
|
|
|
static int hf_printerdata_value = -1;
|
|
|
|
static int hf_printerdata_type = -1;
|
|
|
|
static int hf_printerdata_size = -1; /* Length of printer data */
|
|
|
|
static int hf_printerdata_data = -1;
|
|
|
|
static int hf_printerdata_data_sz = -1;
|
|
|
|
static int hf_printerdata_data_dword = -1;
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
/* Devicemode */
|
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
static int hf_devmodectr_size = -1;
|
|
|
|
|
|
|
|
static int hf_devmode = -1;
|
|
|
|
static int hf_devmode_size = -1;
|
|
|
|
static int hf_devmode_spec_version = -1;
|
|
|
|
static int hf_devmode_driver_version = -1;
|
|
|
|
static int hf_devmode_size2 = -1;
|
|
|
|
static int hf_devmode_driver_extra_len = -1;
|
|
|
|
static int hf_devmode_fields = -1;
|
|
|
|
static int hf_devmode_orientation = -1;
|
|
|
|
static int hf_devmode_paper_size = -1;
|
|
|
|
static int hf_devmode_paper_width = -1;
|
|
|
|
static int hf_devmode_paper_length = -1;
|
|
|
|
static int hf_devmode_scale = -1;
|
|
|
|
static int hf_devmode_copies = -1;
|
|
|
|
static int hf_devmode_default_source = -1;
|
|
|
|
static int hf_devmode_print_quality = -1;
|
|
|
|
static int hf_devmode_color = -1;
|
|
|
|
static int hf_devmode_duplex = -1;
|
|
|
|
static int hf_devmode_y_resolution = -1;
|
|
|
|
static int hf_devmode_tt_option = -1;
|
|
|
|
static int hf_devmode_collate = -1;
|
|
|
|
static int hf_devmode_log_pixels = -1;
|
|
|
|
static int hf_devmode_bits_per_pel = -1;
|
|
|
|
static int hf_devmode_pels_width = -1;
|
|
|
|
static int hf_devmode_pels_height = -1;
|
|
|
|
static int hf_devmode_display_flags = -1;
|
|
|
|
static int hf_devmode_display_freq = -1;
|
|
|
|
static int hf_devmode_icm_method = -1;
|
|
|
|
static int hf_devmode_icm_intent = -1;
|
|
|
|
static int hf_devmode_media_type = -1;
|
|
|
|
static int hf_devmode_dither_type = -1;
|
|
|
|
static int hf_devmode_reserved1 = -1;
|
|
|
|
static int hf_devmode_reserved2 = -1;
|
|
|
|
static int hf_devmode_panning_width = -1;
|
|
|
|
static int hf_devmode_panning_height = -1;
|
|
|
|
static int hf_devmode_driver_extra = -1;
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2002-11-19 03:01:18 +00:00
|
|
|
static int hf_devmode_fields_orientation = -1;
|
|
|
|
static int hf_devmode_fields_papersize = -1;
|
|
|
|
static int hf_devmode_fields_paperlength = -1;
|
|
|
|
static int hf_devmode_fields_paperwidth = -1;
|
|
|
|
static int hf_devmode_fields_scale = -1;
|
|
|
|
static int hf_devmode_fields_position = -1;
|
|
|
|
static int hf_devmode_fields_nup = -1;
|
|
|
|
static int hf_devmode_fields_copies = -1;
|
|
|
|
static int hf_devmode_fields_defaultsource = -1;
|
|
|
|
static int hf_devmode_fields_printquality = -1;
|
|
|
|
static int hf_devmode_fields_color = -1;
|
|
|
|
static int hf_devmode_fields_duplex = -1;
|
|
|
|
static int hf_devmode_fields_yresolution = -1;
|
|
|
|
static int hf_devmode_fields_ttoption = -1;
|
|
|
|
static int hf_devmode_fields_collate = -1;
|
|
|
|
static int hf_devmode_fields_formname = -1;
|
|
|
|
static int hf_devmode_fields_logpixels = -1;
|
|
|
|
static int hf_devmode_fields_bitsperpel = -1;
|
|
|
|
static int hf_devmode_fields_pelswidth = -1;
|
|
|
|
static int hf_devmode_fields_pelsheight = -1;
|
|
|
|
static int hf_devmode_fields_displayflags = -1;
|
|
|
|
static int hf_devmode_fields_displayfrequency = -1;
|
|
|
|
static int hf_devmode_fields_icmmethod = -1;
|
|
|
|
static int hf_devmode_fields_icmintent = -1;
|
|
|
|
static int hf_devmode_fields_mediatype = -1;
|
|
|
|
static int hf_devmode_fields_dithertype = -1;
|
|
|
|
static int hf_devmode_fields_panningwidth = -1;
|
|
|
|
static int hf_devmode_fields_panningheight = -1;
|
|
|
|
|
2003-02-05 06:55:56 +00:00
|
|
|
/* Print job */
|
|
|
|
|
|
|
|
static int hf_job_id = -1;
|
|
|
|
static int hf_job_priority = -1;
|
|
|
|
static int hf_job_position = -1;
|
|
|
|
static int hf_job_totalpages = -1;
|
2003-02-10 06:21:57 +00:00
|
|
|
static int hf_job_totalbytes = -1;
|
2003-02-05 06:55:56 +00:00
|
|
|
static int hf_job_pagesprinted = -1;
|
2003-02-10 06:21:57 +00:00
|
|
|
static int hf_job_bytesprinted = -1;
|
2003-02-05 06:55:56 +00:00
|
|
|
static int hf_job_size = -1;
|
|
|
|
|
|
|
|
static int hf_job_status = -1;
|
|
|
|
static int hf_job_status_paused = -1;
|
|
|
|
static int hf_job_status_error = -1;
|
|
|
|
static int hf_job_status_deleting = -1;
|
|
|
|
static int hf_job_status_spooling = -1;
|
|
|
|
static int hf_job_status_printing = -1;
|
|
|
|
static int hf_job_status_offline = -1;
|
|
|
|
static int hf_job_status_paperout = -1;
|
|
|
|
static int hf_job_status_printed = -1;
|
|
|
|
static int hf_job_status_deleted = -1;
|
|
|
|
static int hf_job_status_blocked = -1;
|
|
|
|
static int hf_job_status_user_intervention = -1;
|
|
|
|
|
2003-02-10 02:11:36 +00:00
|
|
|
/* Forms */
|
|
|
|
|
|
|
|
static int hf_form = -1;
|
|
|
|
static int hf_form_level = -1;
|
|
|
|
static int hf_form_name = -1;
|
|
|
|
static int hf_form_flags = -1;
|
|
|
|
static int hf_form_unknown = -1;
|
|
|
|
static int hf_form_width = -1;
|
|
|
|
static int hf_form_height = -1;
|
|
|
|
static int hf_form_left_margin = -1;
|
|
|
|
static int hf_form_top_margin = -1;
|
|
|
|
static int hf_form_horiz_len = -1;
|
|
|
|
static int hf_form_vert_len = -1;
|
|
|
|
|
|
|
|
static int hf_enumforms_num = -1;
|
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
/* Print notify */
|
|
|
|
|
|
|
|
static int hf_notify_options_version = -1;
|
|
|
|
static int hf_notify_options_flags = -1;
|
|
|
|
static int hf_notify_options_flags_refresh = -1;
|
|
|
|
static int hf_notify_options_count = -1;
|
|
|
|
static int hf_notify_option_type = -1;
|
|
|
|
static int hf_notify_option_reserved1 = -1;
|
|
|
|
static int hf_notify_option_reserved2 = -1;
|
|
|
|
static int hf_notify_option_reserved3 = -1;
|
|
|
|
static int hf_notify_option_count = -1;
|
|
|
|
static int hf_notify_option_data_count = -1;
|
|
|
|
static int hf_notify_info_count = -1;
|
|
|
|
static int hf_notify_info_version = -1;
|
|
|
|
static int hf_notify_info_flags = -1;
|
|
|
|
static int hf_notify_info_data_type = -1;
|
|
|
|
static int hf_notify_info_data_count = -1;
|
|
|
|
static int hf_notify_info_data_id = -1;
|
|
|
|
static int hf_notify_info_data_value1 = -1;
|
|
|
|
static int hf_notify_info_data_value2 = -1;
|
|
|
|
static int hf_notify_info_data_bufsize = -1;
|
|
|
|
static int hf_notify_info_data_buffer = -1;
|
|
|
|
static int hf_notify_info_data_buffer_len = -1;
|
|
|
|
static int hf_notify_info_data_buffer_data = -1;
|
|
|
|
|
|
|
|
static int hf_notify_field = -1;
|
|
|
|
|
|
|
|
static int hf_printerlocal = -1;
|
|
|
|
|
|
|
|
static int hf_rrpcn_changelow = -1;
|
|
|
|
static int hf_rrpcn_changehigh = -1;
|
|
|
|
static int hf_rrpcn_unk0 = -1;
|
|
|
|
static int hf_rrpcn_unk1 = -1;
|
|
|
|
|
|
|
|
static int hf_replyopenprinter_unk0 = -1;
|
|
|
|
static int hf_replyopenprinter_unk1 = -1;
|
|
|
|
|
2005-09-15 07:34:52 +00:00
|
|
|
/* Registry data types */
|
|
|
|
|
|
|
|
#define DCERPC_REG_NONE 0
|
|
|
|
#define DCERPC_REG_SZ 1
|
|
|
|
#define DCERPC_REG_EXPAND_SZ 2
|
|
|
|
#define DCERPC_REG_BINARY 3
|
|
|
|
#define DCERPC_REG_DWORD 4
|
|
|
|
#define DCERPC_REG_DWORD_LE 4 /* DWORD, little endian
|
|
|
|
*/
|
|
|
|
#define DCERPC_REG_DWORD_BE 5 /* DWORD, big endian */
|
|
|
|
#define DCERPC_REG_LINK 6
|
|
|
|
#define DCERPC_REG_MULTI_SZ 7
|
|
|
|
#define DCERPC_REG_RESOURCE_LIST 8
|
|
|
|
#define DCERPC_REG_FULL_RESOURCE_DESCRIPTOR 9
|
|
|
|
#define DCERPC_REG_RESOURCE_REQUIREMENTS_LIST 10
|
|
|
|
|
|
|
|
const value_string reg_datatypes[] = {
|
|
|
|
{ DCERPC_REG_NONE, "REG_NONE" },
|
|
|
|
{ DCERPC_REG_SZ, "REG_SZ" },
|
|
|
|
{ DCERPC_REG_EXPAND_SZ, "REG_EXPAND_SZ" },
|
|
|
|
{ DCERPC_REG_BINARY, "REG_BINARY" },
|
|
|
|
{ DCERPC_REG_DWORD, "REG_DWORD" },
|
|
|
|
{ DCERPC_REG_DWORD_LE, "REG_DWORD_LE" },
|
|
|
|
{ DCERPC_REG_DWORD_BE, "REG_DWORD_BE" },
|
|
|
|
{ DCERPC_REG_LINK, "REG_LINK" },
|
|
|
|
{ DCERPC_REG_MULTI_SZ, "REG_MULTI_SZ" },
|
|
|
|
{ DCERPC_REG_RESOURCE_LIST, "REG_RESOURCE_LIST" },
|
|
|
|
{ DCERPC_REG_FULL_RESOURCE_DESCRIPTOR, "REG_FULL_RESOURCE_DESCRIPTOR" }, { DCERPC_REG_RESOURCE_REQUIREMENTS_LIST, "REG_RESOURCE_REQUIREMENTS_LIST" },
|
|
|
|
{0, NULL }
|
|
|
|
};
|
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
/****************************************************************************/
|
2003-01-11 04:40:21 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
/*
|
|
|
|
* Dissect SPOOLSS specific access rights
|
|
|
|
*/
|
|
|
|
|
|
|
|
static int hf_server_access_admin = -1;
|
|
|
|
static int hf_server_access_enum = -1;
|
|
|
|
static int hf_printer_access_admin = -1;
|
|
|
|
static int hf_printer_access_use = -1;
|
|
|
|
static int hf_job_access_admin = -1;
|
|
|
|
|
2002-08-22 07:05:31 +00:00
|
|
|
static void
|
2003-05-15 02:15:13 +00:00
|
|
|
spoolss_printer_specific_rights(tvbuff_t *tvb, gint offset, proto_tree *tree,
|
|
|
|
guint32 access)
|
2002-08-21 21:31:15 +00:00
|
|
|
{
|
|
|
|
proto_tree_add_boolean(
|
2003-02-14 06:23:45 +00:00
|
|
|
tree, hf_printer_access_use, tvb, offset, 4, access);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-08-21 21:31:15 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-14 06:23:45 +00:00
|
|
|
tree, hf_printer_access_admin, tvb, offset, 4, access);
|
2003-05-15 02:15:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
struct access_mask_info spoolss_printer_access_mask_info = {
|
|
|
|
"SPOOLSS printer",
|
|
|
|
spoolss_printer_specific_rights,
|
|
|
|
NULL, /* Generic mapping table */
|
|
|
|
NULL /* Standard mapping table */
|
|
|
|
};
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2003-05-15 02:15:13 +00:00
|
|
|
static void
|
|
|
|
spoolss_printserver_specific_rights(tvbuff_t *tvb, gint offset,
|
|
|
|
proto_tree *tree, guint32 access)
|
|
|
|
{
|
2002-08-21 21:31:15 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-14 06:23:45 +00:00
|
|
|
tree, hf_server_access_enum, tvb, offset, 4, access);
|
2002-08-21 21:31:15 +00:00
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-14 06:23:45 +00:00
|
|
|
tree, hf_server_access_admin, tvb, offset, 4, access);
|
2002-08-21 21:31:15 +00:00
|
|
|
}
|
|
|
|
|
2003-05-15 02:15:13 +00:00
|
|
|
struct access_mask_info spoolss_printserver_access_mask_info = {
|
|
|
|
"SPOOLSS print server",
|
|
|
|
spoolss_printserver_specific_rights,
|
|
|
|
NULL, /* Generic mapping table */
|
|
|
|
NULL /* Standard mapping table */
|
|
|
|
};
|
|
|
|
|
|
|
|
static void
|
|
|
|
spoolss_job_specific_rights(tvbuff_t *tvb, gint offset,
|
|
|
|
proto_tree *tree, guint32 access)
|
|
|
|
{
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
tree, hf_job_access_admin, tvb, offset, 4, access);
|
|
|
|
}
|
|
|
|
|
|
|
|
struct access_mask_info spoolss_job_access_mask_info = {
|
|
|
|
"SPOOLSS job",
|
|
|
|
spoolss_job_specific_rights,
|
|
|
|
NULL, /* Generic mapping table */
|
|
|
|
NULL /* Standard mapping table */
|
2003-04-28 04:44:54 +00:00
|
|
|
};
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
/*
|
|
|
|
* Routines to dissect a spoolss BUFFER
|
2002-05-10 02:41:48 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
typedef struct {
|
2002-11-19 03:01:18 +00:00
|
|
|
tvbuff_t *tvb;
|
2002-05-10 02:41:48 +00:00
|
|
|
proto_item *tree; /* Proto tree buffer located in */
|
2002-11-19 03:01:18 +00:00
|
|
|
proto_item *item;
|
2002-05-10 02:41:48 +00:00
|
|
|
} BUFFER;
|
|
|
|
|
2002-11-19 03:01:18 +00:00
|
|
|
static gint ett_BUFFER = -1;
|
|
|
|
|
2002-05-10 02:41:48 +00:00
|
|
|
static int
|
|
|
|
dissect_spoolss_buffer_data(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-05-10 02:41:48 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = pinfo->private_data;
|
|
|
|
BUFFER *b = (BUFFER *)di->private_data;
|
2002-11-19 03:01:18 +00:00
|
|
|
proto_item *item;
|
2002-05-10 02:41:48 +00:00
|
|
|
guint32 size;
|
2002-11-28 04:56:43 +00:00
|
|
|
const guint8 *data;
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
if (di->conformant_run)
|
|
|
|
return offset;
|
|
|
|
|
2002-05-10 02:41:48 +00:00
|
|
|
/* Dissect size and data */
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_buffer_size, &size);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2002-11-19 03:01:18 +00:00
|
|
|
offset = dissect_ndr_uint8s(tvb, offset, pinfo, NULL, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_buffer_data, size, &data);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2002-11-19 03:01:18 +00:00
|
|
|
item = proto_tree_add_item(
|
2003-02-14 06:23:45 +00:00
|
|
|
tree, hf_buffer_data, tvb, offset - size,
|
2002-11-19 03:01:18 +00:00
|
|
|
size, drep[0] & 0x10);
|
|
|
|
|
2002-05-10 02:41:48 +00:00
|
|
|
/* Return buffer info */
|
|
|
|
|
|
|
|
if (b) {
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
/* I'm not sure about this. Putting the buffer into
|
|
|
|
it's own tvb makes sense and the dissection code is
|
|
|
|
much clearer, but the data is a proper subset of
|
|
|
|
the actual tvb. Not adding the new data source
|
|
|
|
makes the hex display confusing as it switches
|
|
|
|
between the 'DCERPC over SMB' tvb and the buffer
|
|
|
|
tvb with no visual cues as to what is going on. */
|
|
|
|
|
2009-05-13 19:46:11 +00:00
|
|
|
b->tvb = tvb_new_child_real_data(tvb, data, size, size);
|
2002-11-19 03:01:18 +00:00
|
|
|
add_new_data_source(pinfo, b->tvb, "SPOOLSS buffer");
|
|
|
|
|
|
|
|
b->item = item;
|
|
|
|
b->tree = proto_item_add_subtree(item, ett_BUFFER);
|
2002-05-10 02:41:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-05-20 06:53:31 +00:00
|
|
|
/* Dissect a spoolss buffer and return buffer data */
|
|
|
|
|
2002-05-10 02:41:48 +00:00
|
|
|
static int
|
|
|
|
dissect_spoolss_buffer(tvbuff_t *tvb, gint offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep, BUFFER *b)
|
2002-05-10 02:41:48 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = pinfo->private_data;
|
|
|
|
|
|
|
|
if (b)
|
|
|
|
memset(b, 0, sizeof(BUFFER));
|
|
|
|
|
|
|
|
di->private_data = b;
|
|
|
|
|
2002-11-19 03:01:18 +00:00
|
|
|
offset = dissect_ndr_pointer(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
|
|
|
dissect_spoolss_buffer_data, NDR_POINTER_UNIQUE,
|
2003-01-28 06:42:20 +00:00
|
|
|
"Buffer", -1);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
/*
|
|
|
|
* SYSTEM_TIME
|
|
|
|
*/
|
|
|
|
|
2009-08-04 18:48:45 +00:00
|
|
|
static gint ett_SYSTEM_TIME = -1;
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-11 03:22:59 +00:00
|
|
|
static int hf_time_year = -1;
|
|
|
|
static int hf_time_month = -1;
|
|
|
|
static int hf_time_dow = -1;
|
|
|
|
static int hf_time_day = -1;
|
|
|
|
static int hf_time_hour = -1;
|
|
|
|
static int hf_time_minute = -1;
|
|
|
|
static int hf_time_second = -1;
|
|
|
|
static int hf_time_msec = -1;
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
static int
|
|
|
|
dissect_SYSTEM_TIME(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2005-07-26 08:01:16 +00:00
|
|
|
proto_tree *tree, guint8 *drep, const char *name,
|
2003-02-11 03:22:59 +00:00
|
|
|
gboolean add_subtree, char **data)
|
2002-11-11 05:39:51 +00:00
|
|
|
{
|
2003-02-11 03:22:59 +00:00
|
|
|
proto_item *item = NULL;
|
|
|
|
proto_tree *subtree = tree;
|
2003-04-15 08:11:33 +00:00
|
|
|
guint16 year, month, day, hour, minute, second, millisecond;
|
2003-02-11 03:22:59 +00:00
|
|
|
char *str;
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-11 03:22:59 +00:00
|
|
|
if (add_subtree) {
|
2008-10-31 14:07:23 +00:00
|
|
|
item = proto_tree_add_text(tree, tvb, offset, 16, "%s", name);
|
2003-02-11 03:22:59 +00:00
|
|
|
subtree = proto_item_add_subtree(item, ett_SYSTEM_TIME);
|
|
|
|
}
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_time_year, &year);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_time_month, &month);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_time_dow, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_time_day, &day);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_time_hour, &hour);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_time_minute, &minute);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_time_second, &second);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint16(
|
2003-04-15 08:11:33 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_time_msec, &millisecond);
|
2003-02-11 03:22:59 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
str = ep_strdup_printf("%d/%02d/%02d %02d:%02d:%02d.%03d",
|
2003-04-15 08:11:33 +00:00
|
|
|
year, month, day, hour, minute, second,
|
|
|
|
millisecond);
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
if (add_subtree)
|
|
|
|
proto_item_append_text(item, ": %s", str);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-11 03:22:59 +00:00
|
|
|
if (data)
|
|
|
|
*data = str;
|
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
dissect_SYSTEM_TIME_ptr(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2003-02-11 03:22:59 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
|
|
|
char *str;
|
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
|
2003-02-11 03:22:59 +00:00
|
|
|
offset = dissect_SYSTEM_TIME(
|
|
|
|
tvb, offset, pinfo, tree, drep, NULL, FALSE, &str);
|
|
|
|
dcv->private_data = str;
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/*
|
|
|
|
* SpoolssClosePrinter
|
|
|
|
*/
|
|
|
|
|
|
|
|
static int SpoolssClosePrinter_q(tvbuff_t *tvb, int offset,
|
2002-08-28 21:04:11 +00:00
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2002-05-10 02:41:48 +00:00
|
|
|
e_ctx_hnd policy_hnd;
|
2002-05-01 05:28:56 +00:00
|
|
|
char *pol_name;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, NULL,
|
2003-02-14 06:23:45 +00:00
|
|
|
FALSE, TRUE);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2007-08-28 11:45:08 +00:00
|
|
|
dcerpc_fetch_polhnd_data(&policy_hnd, &pol_name, NULL, NULL, NULL,
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
pinfo->fd->num);
|
2002-05-01 05:28:56 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO) && pol_name)
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
|
|
|
|
pol_name);
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssClosePrinter_r(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
|
|
|
FALSE, FALSE);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-05-20 00:36:04 +00:00
|
|
|
/* Dissect some printer data. The get/set/enum printerdata routines all
|
|
|
|
store value/data in a uint8 array. We could use the ndr routines for
|
|
|
|
this but that would result in one item for each byte in the printer
|
|
|
|
data. */
|
|
|
|
|
|
|
|
static gint ett_printerdata_data = -1;
|
|
|
|
static gint ett_printerdata_value = -1;
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int dissect_printerdata_data(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_, guint32 type)
|
2002-05-20 00:36:04 +00:00
|
|
|
{
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *item, *hidden_item;
|
2002-05-20 00:36:04 +00:00
|
|
|
proto_tree *subtree;
|
|
|
|
guint32 size;
|
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
item = proto_tree_add_text(tree, tvb, offset, 0, "Data");
|
|
|
|
|
2002-05-20 00:36:04 +00:00
|
|
|
subtree = proto_item_add_subtree(item, ett_printerdata_data);
|
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_printerdata_size, &size);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
|
|
|
if (size) {
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint8s(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
|
|
|
hf_printerdata_data, size, NULL);
|
|
|
|
|
|
|
|
switch(type) {
|
|
|
|
case DCERPC_REG_SZ: {
|
2003-02-24 01:22:30 +00:00
|
|
|
char *data = tvb_fake_unicode(tvb, offset - size, size/2, TRUE);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
|
|
|
proto_item_append_text(item, ": %s", data);
|
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(
|
|
|
|
pinfo->cinfo, COL_INFO, " = %s", data);
|
2002-07-09 14:24:39 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_string(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata_data_sz, tvb,
|
|
|
|
offset - size, size, data);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
|
|
|
g_free(data);
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case DCERPC_REG_DWORD: {
|
|
|
|
guint32 data = tvb_get_letohl(tvb, offset - size);
|
|
|
|
|
|
|
|
proto_item_append_text(item, ": 0x%08x", data);
|
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(
|
|
|
|
pinfo->cinfo, COL_INFO, " = 0x%08x",
|
|
|
|
data);
|
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata_data_dword, tvb,
|
|
|
|
offset - size, 4, data);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
2003-02-05 00:36:35 +00:00
|
|
|
case DCERPC_REG_BINARY:
|
2009-09-24 20:21:23 +00:00
|
|
|
col_append_str(
|
2003-02-05 00:36:35 +00:00
|
|
|
pinfo->cinfo, COL_INFO,
|
|
|
|
" = <binary data>");
|
|
|
|
break;
|
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2002-05-20 00:36:04 +00:00
|
|
|
proto_item_set_len(item, size + 4);
|
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/*
|
|
|
|
* SpoolssGetPrinterData
|
|
|
|
*/
|
|
|
|
|
|
|
|
static int SpoolssGetPrinterData_q(tvbuff_t *tvb, int offset,
|
2002-08-28 21:04:11 +00:00
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
2002-03-26 05:20:51 +00:00
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2003-01-30 23:41:28 +00:00
|
|
|
char *value_name;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2002-05-10 02:41:48 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-05-11 22:29:43 +00:00
|
|
|
FALSE, FALSE);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-30 23:41:28 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
value_name=NULL;
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_cvstring(
|
|
|
|
tvb, offset, pinfo, tree, drep, sizeof(guint16),
|
|
|
|
hf_printerdata_value, TRUE, value_name ? NULL : &value_name);
|
2006-09-16 08:51:03 +00:00
|
|
|
/* GetPrinterData() stores the printerdata in se_data */
|
|
|
|
if(!pinfo->fd->flags.visited){
|
|
|
|
if(!dcv->se_data){
|
|
|
|
if(value_name){
|
|
|
|
dcv->se_data = se_strdup(value_name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", value_name);
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_offered, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int SpoolssGetPrinterData_r(tvbuff_t *tvb, int offset,
|
2002-08-28 21:04:11 +00:00
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
2002-03-26 05:20:51 +00:00
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2003-01-28 22:51:54 +00:00
|
|
|
guint32 type;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2002-05-20 00:36:04 +00:00
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_printerdata_type, &type);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO)) {
|
2006-09-16 08:51:03 +00:00
|
|
|
const char *data = dcv->se_data ? dcv->se_data : "????";
|
2003-01-28 22:51:54 +00:00
|
|
|
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", data);
|
|
|
|
}
|
|
|
|
|
|
|
|
offset = dissect_printerdata_data(
|
|
|
|
tvb, offset, pinfo, tree, drep, type);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_needed, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* SpoolssGetPrinterDataEx
|
|
|
|
*/
|
|
|
|
|
|
|
|
static int SpoolssGetPrinterDataEx_q(tvbuff_t *tvb, int offset,
|
2002-08-28 21:04:11 +00:00
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
2002-03-26 05:20:51 +00:00
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2002-01-03 20:42:41 +00:00
|
|
|
char *key_name, *value_name;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2002-06-28 01:23:26 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-06-28 01:23:26 +00:00
|
|
|
FALSE, FALSE);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
key_name=NULL;
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_cvstring(
|
|
|
|
tvb, offset, pinfo, tree, drep, sizeof(guint16),
|
|
|
|
hf_printerdata_key, TRUE, &key_name);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
value_name=NULL;
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_cvstring(
|
|
|
|
tvb, offset, pinfo, tree, drep, sizeof(guint16),
|
|
|
|
hf_printerdata_value, TRUE, &value_name);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
/* GetPrinterDataEx() stores the key/value in se_data */
|
|
|
|
if(!pinfo->fd->flags.visited){
|
|
|
|
if(!dcv->se_data){
|
|
|
|
dcv->se_data = se_strdup_printf("%s==%s",
|
|
|
|
key_name?key_name:"",
|
|
|
|
value_name?value_name:"");
|
|
|
|
}
|
|
|
|
}
|
2002-03-22 10:03:36 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO) && dcv->se_data)
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
|
|
|
|
(char *)dcv->se_data);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_needed, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int SpoolssGetPrinterDataEx_r(tvbuff_t *tvb, int offset,
|
2002-08-28 21:04:11 +00:00
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
2002-03-26 05:20:51 +00:00
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2003-01-28 22:51:54 +00:00
|
|
|
guint32 size, type;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_printerdata_type, &type);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_returned, &size);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO) && dcv->se_data) {
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", (char *)dcv->se_data);
|
2003-01-28 22:51:54 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (size)
|
|
|
|
dissect_printerdata_data(tvb, offset, pinfo, tree, drep, type);
|
|
|
|
|
|
|
|
offset += size;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_needed, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* SpoolssSetPrinterData
|
|
|
|
*/
|
|
|
|
|
|
|
|
static int SpoolssSetPrinterData_q(tvbuff_t *tvb, int offset,
|
2002-08-28 21:04:11 +00:00
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2006-09-16 08:51:03 +00:00
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
|
|
|
char *value_name;
|
2003-01-28 22:51:54 +00:00
|
|
|
guint32 type;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2002-06-28 01:23:26 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-06-28 01:23:26 +00:00
|
|
|
FALSE, FALSE);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
value_name=NULL;
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_cvstring(
|
|
|
|
tvb, offset, pinfo, tree, drep, sizeof(guint16),
|
|
|
|
hf_printerdata_value, TRUE, &value_name);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
/* GetPrinterDataEx() stores the key/value in se_data */
|
|
|
|
if(!pinfo->fd->flags.visited){
|
|
|
|
if(!dcv->se_data){
|
|
|
|
dcv->se_data = se_strdup_printf("%s",
|
|
|
|
value_name?value_name:"");
|
|
|
|
}
|
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO) && dcv->se_data){
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", (char *)dcv->se_data);
|
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-05-20 00:36:04 +00:00
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_printerdata_type, &type);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
offset = dissect_printerdata_data(
|
|
|
|
tvb, offset, pinfo, tree, drep, type);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_offered, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int SpoolssSetPrinterData_r(tvbuff_t *tvb, int offset,
|
2002-08-28 21:04:11 +00:00
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
|
|
|
|
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* SpoolssSetPrinterDataEx
|
|
|
|
*/
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
static int hf_setprinterdataex_max_len = -1;
|
|
|
|
static int hf_setprinterdataex_real_len = -1;
|
|
|
|
static int hf_setprinterdataex_data = -1;
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
static int SpoolssSetPrinterDataEx_q(tvbuff_t *tvb, int offset,
|
2002-08-28 21:04:11 +00:00
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
char *key_name, *value_name;
|
2002-05-20 00:36:04 +00:00
|
|
|
guint32 max_len;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2002-06-28 01:23:26 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-06-28 01:23:26 +00:00
|
|
|
FALSE, FALSE);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_cvstring(
|
|
|
|
tvb, offset, pinfo, tree, drep, sizeof(guint16),
|
|
|
|
hf_printerdata_key, TRUE, &key_name);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-12-13 06:07:04 +00:00
|
|
|
CLEANUP_PUSH(g_free, key_name);
|
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_cvstring(
|
|
|
|
tvb, offset, pinfo, tree, drep, sizeof(guint16),
|
|
|
|
hf_printerdata_value, TRUE, &value_name);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s/%s",
|
|
|
|
key_name, value_name);
|
|
|
|
|
2002-12-13 06:07:04 +00:00
|
|
|
CLEANUP_CALL_AND_POP;
|
There is no guarantee that a buffer obtained using "tvb_get_ptr()" is
neatly aligned on a 2-byte or a 4-byte boundary, and there is no
guarantee that a misaligned pointer can be dereferenced without getting
a fault.
Furthermore, there is no guarantee that, even if you *can* dereference a
pointer to a 2-byte or 4-byte quantity in a packet, the resulting number
you get back is in the right byte order; the data in the packet might
have a different byte order from the machine on which you're running.
Therefore, we change "prs_uint8s()", "prs_uint16s()", and
"prs_uint32s()" to return the starting offset, in the tvbuff, of the
collection of 8-bit, 16-bit, or 32-bit integral values, rather than a
pointer to the raw packet data, and change their callers to fetch the
data using "tvb_get_guint8()", "tvb_get_letohs()", and
"tvb_get_letohl()" (the stuff in all the NT protocols is presumed to be
little-endian here). We also change "fake_unicode()" to take a tvbuff
and an offset, rather than a data pointer, as arguments, and to use
"tvb_get_letohs()" to fetch the Unicode characters (again, we assume
little-endian Unicode).
This requires "fake_unicode()" to establish a cleanup handler, so we
don't leak memory if it throws an exception.
We also make "fake_unicode()" use "g_malloc()" to allocate its buffer
(we weren't checking for allocation failures in any case; with
"g_malloc()", we'll abort on an allocation failure - if we can come up
with a cleverer way of handling them, fine), and the matching frees to
use "g_free()". (We also insert some missing frees....)
Fix some formats to print unsigned quantities with "%u", not "%d".
Don't append text to items in the tree for non-string values in
"dissect_ndr_nt_STRING_string()".
svn path=/trunk/; revision=4986
2002-03-19 22:09:23 +00:00
|
|
|
g_free(value_name);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-05-20 00:36:04 +00:00
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_printerdata_type, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_setprinterdataex_max_len, &max_len);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
offset = dissect_ndr_uint8s(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_setprinterdataex_data, max_len, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_setprinterdataex_real_len, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int SpoolssSetPrinterDataEx_r(tvbuff_t *tvb, int offset,
|
2002-08-28 21:04:11 +00:00
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
|
|
|
|
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-05-10 02:41:48 +00:00
|
|
|
/* Yet another way to represent a unicode string - sheesh. This function
|
|
|
|
dissects a NULL terminate unicode string at the current offset and
|
|
|
|
returns the (char *) equivalent. This really should return UTF8 or
|
2003-02-24 01:22:30 +00:00
|
|
|
something but we use tvb_fake_unicode() instead. */
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2002-11-23 08:57:15 +00:00
|
|
|
/* XXX - "name" should be an hf_ value for an FT_STRING. */
|
2002-05-10 02:41:48 +00:00
|
|
|
static int
|
|
|
|
dissect_spoolss_uint16uni(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_, char **data,
|
2005-07-26 08:01:16 +00:00
|
|
|
const char *name)
|
2002-05-10 02:41:48 +00:00
|
|
|
{
|
|
|
|
gint len, remaining;
|
|
|
|
char *text;
|
|
|
|
|
|
|
|
if (offset % 2)
|
|
|
|
offset += 2 - (offset % 2);
|
|
|
|
|
|
|
|
/* Get remaining data in buffer as a string */
|
|
|
|
|
|
|
|
remaining = tvb_length_remaining(tvb, offset) / 2;
|
2003-02-24 01:22:30 +00:00
|
|
|
text = tvb_fake_unicode(tvb, offset, remaining, TRUE);
|
2009-03-29 21:20:15 +00:00
|
|
|
len = (int)strlen(text);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
proto_tree_add_text(tree, tvb, offset, len * 2, "%s: %s",
|
2003-01-16 22:44:05 +00:00
|
|
|
name ? name : "String", text);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
if (data)
|
|
|
|
*data = text;
|
|
|
|
else
|
|
|
|
g_free(text);
|
|
|
|
|
|
|
|
return offset + (len + 1) * 2;
|
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* DEVMODE
|
|
|
|
*/
|
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
/* Devicemode orientation values */
|
|
|
|
|
|
|
|
static const value_string devmode_orientation_vals[] =
|
|
|
|
{
|
|
|
|
{ DEVMODE_ORIENTATION_PORTRAIT, "Portrait" },
|
|
|
|
{ DEVMODE_ORIENTATION_LANDSCAPE, "Landscape" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Paper size values. International paper sizes is a fascinating
|
|
|
|
topic. No seriously! (-: */
|
|
|
|
|
|
|
|
static const value_string devmode_papersize_vals[] =
|
|
|
|
{
|
|
|
|
{ DEVMODE_PAPERSIZE_LETTER, "Letter" },
|
|
|
|
{ DEVMODE_PAPERSIZE_LETTERSMALL, "Letter (small)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_TABLOID, "Tabloid" },
|
|
|
|
{ DEVMODE_PAPERSIZE_LEDGER, "Ledger" },
|
|
|
|
{ DEVMODE_PAPERSIZE_LEGAL, "Legal" },
|
|
|
|
{ DEVMODE_PAPERSIZE_STATEMENT, "Statement" },
|
|
|
|
{ DEVMODE_PAPERSIZE_EXECUTIVE, "Executive" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A3, "A3" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A4, "A4" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A4SMALL, "A4 (small)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A5, "A5" },
|
|
|
|
{ DEVMODE_PAPERSIZE_B4, "B4" },
|
|
|
|
{ DEVMODE_PAPERSIZE_B5, "B5" },
|
|
|
|
{ DEVMODE_PAPERSIZE_FOLIO, "Folio" },
|
|
|
|
{ DEVMODE_PAPERSIZE_QUARTO, "Quarto" },
|
|
|
|
{ DEVMODE_PAPERSIZE_10X14, "10x14" },
|
|
|
|
{ DEVMODE_PAPERSIZE_11X17, "11x17" },
|
|
|
|
{ DEVMODE_PAPERSIZE_NOTE, "Note" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENV9, "Envelope #9" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENV10, "Envelope #10" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENV11, "Envelope #11" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENV12, "Envelope #12" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENV14, "Envelope #14" },
|
|
|
|
{ DEVMODE_PAPERSIZE_CSHEET, "C sheet" },
|
|
|
|
{ DEVMODE_PAPERSIZE_DSHEET, "D sheet" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ESHEET, "E sheet" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENVDL, "Envelope DL" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENVC5, "Envelope C5" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENVC3, "Envelope C3" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENVC4, "Envelope C4" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENVC6, "Envelope C6" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENVC65, "Envelope C65" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENVB4, "Envelope B4" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENVB5, "Envelope B5" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENVB6, "Envelope B6" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENVITALY, "Envelope (Italy)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENVMONARCH, "Envelope (Monarch)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENVPERSONAL, "Envelope (Personal)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_FANFOLDUS, "Fanfold (US)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_FANFOLDSTDGERMAN, "Fanfold (Std German)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_FANFOLDLGLGERMAN, "Fanfold (Legal German)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ISOB4, "B4 (ISO)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_JAPANESEPOSTCARD, "Japanese postcard" },
|
|
|
|
{ DEVMODE_PAPERSIZE_9X11, "9x11" },
|
|
|
|
{ DEVMODE_PAPERSIZE_10X11, "10x11" },
|
|
|
|
{ DEVMODE_PAPERSIZE_15X11, "15x11" },
|
|
|
|
{ DEVMODE_PAPERSIZE_ENVINVITE, "Envelope (Invite)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_RESERVED48, "Reserved (48)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_RESERVED49, "Reserved (49)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_LETTEREXTRA, "Letter (Extra)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_LEGALEXTRA, "Legal (Extra)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_TABLOIDEXTRA, "Tabloid (Extra)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A4EXTRA, "A4 (Extra)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_LETTERTRANS, "Letter (Transverse)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A4TRANS, "A4 (Transverse)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_LETTEREXTRATRANS, "Letter (Extra, Transverse)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_APLUS, "A+" },
|
|
|
|
{ DEVMODE_PAPERSIZE_BPLUS, "B+" },
|
|
|
|
{ DEVMODE_PAPERSIZE_LETTERPLUS, "Letter+" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A4PLUS, "A4+" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A5TRANS, "A5 (Transverse)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_B5TRANS, "B5 (Transverse)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A3EXTRA, "A3 (Extra)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A5EXTRA, "A5 (Extra)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_B5EXTRA, "B5 (Extra)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A2, "A2" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A3TRANS, "A3 (Transverse)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A3EXTRATRANS, "A3 (Extra, Transverse" },
|
|
|
|
{ DEVMODE_PAPERSIZE_DBLJAPANESEPOSTCARD, "Double Japanese Postcard" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A6, "A6" },
|
|
|
|
{ DEVMODE_PAPERSIZE_JENVKAKU2, "Japanese Envelope (Kaku #2)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_JENVKAKU3, "Japanese Envelope (Kaku #3)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_JENVCHOU3, "Japanese Envelope (Chou #3)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_JENVCHOU4, "Japaneve Envelope (Chou #4)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_LETTERROT, "Letter (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A3ROT, "A3 (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A4ROT, "A4 (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A5ROT, "A5 (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_B4JISROT, "B4 (JIS, Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_B5JISROT, "B5 (JIS, Rotated)"},
|
|
|
|
{ DEVMODE_PAPERSIZE_JAPANESEPOSTCARDROT,
|
|
|
|
"Japanese Postcard (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_DBLJAPANESEPOSTCARDROT82,
|
|
|
|
"Double Japanese Postcard (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_A6ROT, "A6 (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_JENVKAKU2ROT,
|
|
|
|
"Japanese Envelope (Kaku #2, Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_JENVKAKU3ROT,
|
|
|
|
"Japanese Envelope (Kaku #3, Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_JENVCHOU3ROT,
|
|
|
|
"Japanese Envelope (Chou #3, Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_JENVCHOU4ROT,
|
|
|
|
"Japanese Envelope (Chou #4, Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_B6JIS, "B6 (JIS)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_B6JISROT, "B6 (JIS, Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_12X11, "12x11" },
|
|
|
|
{ DEVMODE_PAPERSIZE_JENVYOU4, "Japanese Envelope (You #4)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_JENVYOU4ROT,
|
|
|
|
"Japanese Envelope (You #4, Rotated" },
|
|
|
|
{ DEVMODE_PAPERSIZE_P16K, "PRC 16K" },
|
|
|
|
{ DEVMODE_PAPERSIZE_P32K, "PRC 32K" },
|
|
|
|
{ DEVMODE_PAPERSIZE_P32KBIG, "P32K (Big)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV1, "PRC Envelope #1" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV2, "PRC Envelope #2" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV3, "PRC Envelope #3" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV4, "PRC Envelope #4" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV5, "PRC Envelope #5" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV6, "PRC Envelope #6" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV7, "PRC Envelope #7" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV8, "PRC Envelope #8" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV9, "PRC Envelope #9" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV10, "PRC Envelope #10" },
|
|
|
|
{ DEVMODE_PAPERSIZE_P16KROT, "PRC 16K (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_P32KROT, "PRC 32K (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_P32KBIGROT, "PRC 32K (Big, Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV1ROT, "PRC Envelope #1 (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV2ROT, "PRC Envelope #2 (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV3ROT, "PRC Envelope #3 (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV4ROT, "PRC Envelope #4 (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV5ROT, "PRC Envelope #5 (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV6ROT, "PRC Envelope #6 (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV7ROT, "PRC Envelope #7 (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV8ROT, "PRC Envelope #8 (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV9ROT, "PRC Envelope #9 (Rotated)" },
|
|
|
|
{ DEVMODE_PAPERSIZE_PENV10ROT, "PRC Envelope #10 (Rotated)" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
/* List of observed specversions */
|
|
|
|
|
|
|
|
static const value_string devmode_specversion_vals[] =
|
|
|
|
{
|
|
|
|
{ 0x0320, "Observed" },
|
|
|
|
{ 0x0400, "Observed" },
|
|
|
|
{ 0x0401, "Observed" },
|
|
|
|
{ 0x040d, "Observed" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Paper sources */
|
|
|
|
|
|
|
|
static const value_string devmode_papersource_vals[] =
|
|
|
|
{
|
|
|
|
{ DEVMODE_PAPERSOURCE_UPPER, "Upper" },
|
|
|
|
{ DEVMODE_PAPERSOURCE_LOWER, "Lower" },
|
|
|
|
{ DEVMODE_PAPERSOURCE_MIDDLE, "Middle" },
|
|
|
|
{ DEVMODE_PAPERSOURCE_MANUAL, "Manual" },
|
|
|
|
{ DEVMODE_PAPERSOURCE_ENV, "Envelope" },
|
|
|
|
{ DEVMODE_PAPERSOURCE_ENVMANUAL, "Envelope Manual" },
|
|
|
|
{ DEVMODE_PAPERSOURCE_AUTO, "Auto" },
|
|
|
|
{ DEVMODE_PAPERSOURCE_TRACTOR, "Tractor" },
|
|
|
|
{ DEVMODE_PAPERSOURCE_SMALLFMT, "Small Format" },
|
|
|
|
{ DEVMODE_PAPERSOURCE_LARGEFMAT, "Large Format" },
|
|
|
|
{ DEVMODE_PAPERSOURCE_LARGECAP, "Large Capacity" },
|
|
|
|
{ DEVMODE_PAPERSOURCE_CASSETTE, "Cassette" },
|
|
|
|
{ DEVMODE_PAPERSOURCE_FORMSRC, "Form Source" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Print quality */
|
|
|
|
|
|
|
|
static const value_string devmode_printquality_vals[] =
|
|
|
|
{
|
|
|
|
{ DEVMODE_PRINTQUALITY_HIGH, "High" },
|
|
|
|
{ DEVMODE_PRINTQUALITY_MEDIUM, "Medium" },
|
|
|
|
{ DEVMODE_PRINTQUALITY_LOW, "Low" },
|
|
|
|
{ DEVMODE_PRINTQUALITY_DRAFT, "Draft" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Color */
|
|
|
|
|
|
|
|
static const value_string devmode_colour_vals[] =
|
|
|
|
{
|
|
|
|
{ DEVMODE_COLOUR_COLOUR, "Colour" },
|
|
|
|
{ DEVMODE_COLOUR_MONO, "Monochrome" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
/* TrueType options */
|
|
|
|
|
|
|
|
static const value_string devmode_ttoption_vals[] =
|
|
|
|
{
|
|
|
|
{ 0, "Not set" },
|
|
|
|
{ DEVMODE_TTOPTION_BITMAP, "Bitmap" },
|
|
|
|
{ DEVMODE_TTOPTION_DOWNLOAD, "Download" },
|
|
|
|
{ DEVMODE_TTOPTION_DOWNLOAD_OUTLINE, "Download outline" },
|
|
|
|
{ DEVMODE_TTOPTION_SUBDEV, "Substitute device fonts" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Collate info */
|
|
|
|
|
|
|
|
static const value_string devmode_collate_vals[] =
|
|
|
|
{
|
|
|
|
{ DEVMODE_COLLATE_FALSE, "False" },
|
|
|
|
{ DEVMODE_COLLATE_TRUE, "True" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Duplex info */
|
|
|
|
|
|
|
|
static const value_string devmode_duplex_vals[] =
|
|
|
|
{
|
|
|
|
{ DEVMODE_DUPLEX_SIMPLEX, "Simplex" },
|
|
|
|
{ DEVMODE_DUPLEX_VERT, "Vertical" },
|
|
|
|
{ DEVMODE_DUPLEX_HORIZ, "Horizontal" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string devmode_displayflags_vals[] =
|
|
|
|
{
|
|
|
|
{ 0, "Colour" },
|
|
|
|
{ DEVMODE_DISPLAYFLAGS_GRAYSCALE, "Grayscale" },
|
|
|
|
{ DEVMODE_DISPLAYFLAGS_INTERLACED, "Interlaced" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string devmode_icmmethod_vals[] =
|
|
|
|
{
|
|
|
|
{ DEVMODE_ICMMETHOD_NONE, "None" },
|
|
|
|
{ DEVMODE_ICMMETHOD_SYSTEM, "System" },
|
|
|
|
{ DEVMODE_ICMMETHOD_DRIVER, "Driver" },
|
|
|
|
{ DEVMODE_ICMMETHOD_DEVICE, "Device" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string devmode_icmintent_vals[] =
|
|
|
|
{
|
|
|
|
{ 0, "Not set" },
|
|
|
|
{ DEVMODE_ICMINTENT_SATURATE, "Saturate" },
|
|
|
|
{ DEVMODE_ICMINTENT_CONTRAST, "Contrast" },
|
|
|
|
{ DEVMODE_ICMINTENT_COLORIMETRIC, "Colorimetric" },
|
|
|
|
{ DEVMODE_ICMINTENT_ABS_COLORIMETRIC, "Absolute colorimetric" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string devmode_mediatype_vals[] =
|
|
|
|
{
|
|
|
|
{ 0, "Not set" },
|
|
|
|
{ DEVMODE_MEDIATYPE_STANDARD, "Standard" },
|
|
|
|
{ DEVMODE_MEDIATYPE_TRANSPARENCY, "Transparency" },
|
|
|
|
{ DEVMODE_MEDIATYPE_GLOSSY, "Glossy" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string devmode_dithertype_vals[] =
|
|
|
|
{
|
|
|
|
{ 0, "Not set" },
|
|
|
|
{ DEVMODE_DITHERTYPE_NONE, "None" },
|
|
|
|
{ DEVMODE_DITHERTYPE_COARSE, "Coarse" },
|
|
|
|
{ DEVMODE_DITHERTYPE_LINE, "Line" },
|
|
|
|
{ DEVMODE_DITHERTYPE_LINEART, "Line art" },
|
|
|
|
{ DEVMODE_DITHERTYPE_ERRORDIFFUSION, "Error diffusion" },
|
|
|
|
{ DEVMODE_DITHERTYPE_RESERVED6, "Reserved 6" },
|
|
|
|
{ DEVMODE_DITHERTYPE_RESERVED7, "Reserved 7" },
|
|
|
|
{ DEVMODE_DITHERTYPE_GRAYSCALE, "Grayscale" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
2009-08-04 18:48:45 +00:00
|
|
|
static gint ett_DEVMODE_fields = -1;
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
static int
|
|
|
|
dissect_DEVMODE_fields(tvbuff_t *tvb, gint offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_, guint32 *pdata)
|
2002-11-19 03:01:18 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
guint32 fields;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-11-19 03:01:18 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_devmode, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2002-11-19 03:01:18 +00:00
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_fields, &fields);
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
item = proto_tree_add_text(tree, tvb, offset - 4, 4,
|
|
|
|
"Fields: 0x%08x", fields);
|
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_DEVMODE_fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_orientation,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_papersize,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_paperlength,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_paperwidth,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_scale,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_position,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_nup,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_copies,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_defaultsource,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_printquality,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_color,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_duplex,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_yresolution,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_ttoption,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_collate,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_formname,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_logpixels,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_bitsperpel,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_pelswidth,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_pelsheight,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_displayflags,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_displayfrequency,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_icmmethod,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_icmintent,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_mediatype,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_dithertype,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_panningwidth,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
subtree, hf_devmode_fields_panningheight,
|
|
|
|
tvb, offset - 4, 4, fields);
|
|
|
|
|
|
|
|
if (pdata)
|
|
|
|
*pdata = fields;
|
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
static gint ett_DEVMODE = -1;
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
static int dissect_DEVMODE(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-11-11 05:39:51 +00:00
|
|
|
{
|
2002-11-19 05:25:04 +00:00
|
|
|
dcerpc_info *di = pinfo->private_data;
|
2002-11-11 05:39:51 +00:00
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
guint16 driver_extra;
|
2003-01-28 22:51:54 +00:00
|
|
|
gint16 print_quality;
|
2002-11-19 03:01:18 +00:00
|
|
|
guint32 fields;
|
2003-02-05 06:55:56 +00:00
|
|
|
int struct_start = offset;
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
if (di->conformant_run)
|
|
|
|
return offset;
|
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
item = proto_tree_add_text(tree, tvb, offset, 0, "Devicemode");
|
2002-11-11 05:39:51 +00:00
|
|
|
subtree = proto_item_add_subtree(item, ett_DEVMODE);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
2003-01-28 22:51:54 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_devmode_size,
|
2002-11-11 05:39:51 +00:00
|
|
|
NULL);
|
|
|
|
|
|
|
|
/* The device name is stored in a 32-wchar buffer */
|
|
|
|
|
2002-11-23 08:57:15 +00:00
|
|
|
dissect_spoolss_uint16uni(tvb, offset, pinfo, subtree, drep, NULL,
|
|
|
|
"Devicename");
|
2002-11-11 05:39:51 +00:00
|
|
|
offset += 64;
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_spec_version, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_driver_version, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_size2, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_driver_extra_len, &driver_extra);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2002-11-19 03:01:18 +00:00
|
|
|
offset = dissect_DEVMODE_fields(
|
|
|
|
tvb, offset, pinfo, subtree, drep, &fields);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_orientation, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_paper_size, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_paper_length, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_paper_width, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_scale, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_copies, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_default_source, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
2003-01-28 22:51:54 +00:00
|
|
|
tvb, offset, pinfo, NULL, drep,
|
|
|
|
hf_devmode_print_quality, &print_quality);
|
|
|
|
|
|
|
|
if (print_quality < 0)
|
|
|
|
proto_tree_add_item(
|
|
|
|
subtree, hf_devmode_print_quality, tvb,
|
|
|
|
offset - 2, 2, drep[0] & 0x10);
|
|
|
|
else
|
|
|
|
proto_tree_add_text(
|
|
|
|
subtree, tvb, offset - 4, 4,
|
|
|
|
"Print Quality: %d dpi", print_quality);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_color, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_duplex, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_y_resolution, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_tt_option, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_collate, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2002-11-23 08:57:15 +00:00
|
|
|
dissect_spoolss_uint16uni(tvb, offset, pinfo, subtree, drep, NULL,
|
|
|
|
"Form name");
|
2002-11-11 05:39:51 +00:00
|
|
|
offset += 64;
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_log_pixels, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_bits_per_pel, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_pels_width, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_pels_height, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_display_flags, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_display_freq, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2002-11-19 03:01:18 +00:00
|
|
|
/* TODO: Some of the remaining fields are optional. See
|
|
|
|
rpc_parse/parse_spoolss.c in the Samba source for details. */
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_icm_method, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_icm_intent, NULL);
|
2002-11-19 03:01:18 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_media_type, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_dither_type, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_reserved1, NULL);
|
2002-11-19 03:01:18 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_reserved2, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_panning_width, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_panning_height, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
if (driver_extra)
|
|
|
|
offset = dissect_ndr_uint8s(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmode_driver_extra, driver_extra, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-05 06:55:56 +00:00
|
|
|
proto_item_set_len(item, offset - struct_start);
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
/*
|
|
|
|
* DEVMODE_CTR
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_DEVMODE_CTR = -1;
|
|
|
|
|
|
|
|
static int dissect_DEVMODE_CTR(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-11-19 05:25:04 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
guint32 size;
|
|
|
|
|
2003-02-25 02:08:05 +00:00
|
|
|
item = proto_tree_add_text(
|
|
|
|
tree, tvb, offset, 0, "Devicemode container");
|
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
subtree = proto_item_add_subtree(item, ett_DEVMODE_CTR);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_devmodectr_size, &size);
|
2002-11-19 05:25:04 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_pointer(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-25 02:08:05 +00:00
|
|
|
dissect_DEVMODE, NDR_POINTER_UNIQUE, "Devicemode", -1);
|
2002-11-19 05:25:04 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/*
|
|
|
|
* Relative string given by offset into the current buffer. Note that
|
|
|
|
* the offset for subsequent relstrs are against the structure start, not
|
|
|
|
* the point where the offset is parsed from.
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_RELSTR = -1;
|
|
|
|
|
2002-05-10 02:41:48 +00:00
|
|
|
static int
|
|
|
|
dissect_spoolss_relstr(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep, int hf_index,
|
2002-05-10 02:41:48 +00:00
|
|
|
int struct_start, char **data)
|
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
2003-02-05 06:55:56 +00:00
|
|
|
guint32 relstr_offset, relstr_start, relstr_end;
|
2002-05-10 02:41:48 +00:00
|
|
|
char *text;
|
|
|
|
|
2003-02-05 06:55:56 +00:00
|
|
|
/* Peek ahead to read the string. We need this for the
|
|
|
|
proto_tree_add_string() call so filtering will work. */
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, NULL, drep, hf_offset, &relstr_offset);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-05-10 02:41:48 +00:00
|
|
|
relstr_start = relstr_offset + struct_start;
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2007-11-26 18:51:24 +00:00
|
|
|
if (relstr_offset) {
|
2002-05-10 02:41:48 +00:00
|
|
|
relstr_end = dissect_spoolss_uint16uni(
|
2003-02-05 06:55:56 +00:00
|
|
|
tvb, relstr_start, pinfo, NULL, drep, &text, NULL);
|
2007-11-26 18:51:24 +00:00
|
|
|
} else { /* relstr_offset == 0 is a NULL string */
|
2003-02-05 06:55:56 +00:00
|
|
|
text = g_strdup("");
|
2007-11-26 18:51:24 +00:00
|
|
|
relstr_end = relstr_start;
|
|
|
|
}
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
/* OK now add the proto item with the string value */
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2007-11-26 18:51:24 +00:00
|
|
|
item = proto_tree_add_string(tree, hf_index, tvb, relstr_start, relstr_end - relstr_start, text);
|
2003-02-05 06:55:56 +00:00
|
|
|
subtree = proto_item_add_subtree(item, ett_RELSTR);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
dissect_ndr_uint32(
|
|
|
|
tvb, offset - 4, pinfo, subtree, drep, hf_offset, NULL);
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
if (relstr_offset)
|
|
|
|
dissect_spoolss_uint16uni(
|
|
|
|
tvb, relstr_start, pinfo, subtree, drep, NULL, NULL);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
if (data)
|
|
|
|
*data = text;
|
|
|
|
else
|
|
|
|
g_free(text);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-05-10 02:41:48 +00:00
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-05-20 06:53:31 +00:00
|
|
|
/* An array of relative strings. This is currently just a copy of the
|
|
|
|
dissect_spoolss_relstr() function as I can't find an example driver that
|
|
|
|
has more than one dependent file. */
|
|
|
|
|
|
|
|
static gint ett_RELSTR_ARRAY = -1;
|
|
|
|
|
|
|
|
static int
|
|
|
|
dissect_spoolss_relstrarray(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep, int hf_index,
|
2002-05-20 06:53:31 +00:00
|
|
|
int struct_start, char **data)
|
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
guint32 relstr_offset, relstr_start, relstr_end, relstr_len;
|
|
|
|
char *text;
|
|
|
|
|
|
|
|
item = proto_tree_add_string(tree, hf_index, tvb, offset, 4, "");
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
subtree = proto_item_add_subtree(item, ett_RELSTR_ARRAY);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_offset, &relstr_offset);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-05-20 06:53:31 +00:00
|
|
|
/* A relative offset of zero is a NULL string */
|
|
|
|
|
|
|
|
relstr_start = relstr_offset + struct_start;
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-05-20 06:53:31 +00:00
|
|
|
if (relstr_offset)
|
|
|
|
relstr_end = dissect_spoolss_uint16uni(
|
2002-11-23 08:57:15 +00:00
|
|
|
tvb, relstr_start, pinfo, subtree, drep, &text, NULL);
|
2002-05-20 06:53:31 +00:00
|
|
|
else {
|
|
|
|
text = g_strdup("NULL");
|
|
|
|
relstr_end = offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
relstr_len = relstr_end - relstr_start;
|
|
|
|
|
2005-06-20 19:35:58 +00:00
|
|
|
proto_item_append_text(item, "%s", text);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
if (data)
|
|
|
|
*data = text;
|
|
|
|
else
|
|
|
|
g_free(text);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-05-20 06:53:31 +00:00
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
/*
|
|
|
|
* PRINTER_INFO_0
|
|
|
|
*/
|
|
|
|
|
2003-02-11 03:22:59 +00:00
|
|
|
static int hf_printer_status = -1;
|
|
|
|
|
|
|
|
static const value_string printer_status_vals[] =
|
|
|
|
{
|
|
|
|
{ PRINTER_STATUS_OK, "OK" },
|
|
|
|
{ PRINTER_STATUS_PAUSED, "Paused" },
|
|
|
|
{ PRINTER_STATUS_ERROR, "Error" },
|
|
|
|
{ PRINTER_STATUS_PENDING_DELETION, "Pending deletion" },
|
|
|
|
{ PRINTER_STATUS_PAPER_JAM, "Paper jam" },
|
|
|
|
{ PRINTER_STATUS_PAPER_OUT, "Paper out" },
|
|
|
|
{ PRINTER_STATUS_MANUAL_FEED, "Manual feed" },
|
|
|
|
{ PRINTER_STATUS_PAPER_PROBLEM, "Paper problem" },
|
|
|
|
{ PRINTER_STATUS_OFFLINE, "Offline" },
|
|
|
|
{ PRINTER_STATUS_IO_ACTIVE, "IO active" },
|
|
|
|
{ PRINTER_STATUS_BUSY, "Busy" },
|
|
|
|
{ PRINTER_STATUS_PRINTING, "Printing" },
|
|
|
|
{ PRINTER_STATUS_OUTPUT_BIN_FULL, "Output bin full" },
|
|
|
|
{ PRINTER_STATUS_NOT_AVAILABLE, "Not available" },
|
|
|
|
{ PRINTER_STATUS_WAITING, "Waiting" },
|
|
|
|
{ PRINTER_STATUS_PROCESSING, "Processing" },
|
|
|
|
{ PRINTER_STATUS_INITIALIZING, "Initialising" },
|
|
|
|
{ PRINTER_STATUS_WARMING_UP, "Warming up" },
|
|
|
|
{ PRINTER_STATUS_TONER_LOW, "Toner low" },
|
|
|
|
{ PRINTER_STATUS_NO_TONER, "No toner" },
|
|
|
|
{ PRINTER_STATUS_PAGE_PUNT, "Page punt" },
|
|
|
|
{ PRINTER_STATUS_USER_INTERVENTION, "User intervention" },
|
|
|
|
{ PRINTER_STATUS_OUT_OF_MEMORY, "Out of memory" },
|
|
|
|
{ PRINTER_STATUS_DOOR_OPEN, "Door open" },
|
|
|
|
{ PRINTER_STATUS_SERVER_UNKNOWN, "Server unknown" },
|
|
|
|
{ PRINTER_STATUS_POWER_SAVE, "Power save" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
static gint ett_PRINTER_INFO_0 = -1;
|
|
|
|
|
|
|
|
static int dissect_PRINTER_INFO_0(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printername,
|
2002-11-19 03:01:18 +00:00
|
|
|
0, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_servername,
|
2002-11-19 03:01:18 +00:00
|
|
|
0, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_cjobs, NULL);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_total_jobs,
|
|
|
|
NULL);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_total_bytes,
|
|
|
|
NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-11 03:22:59 +00:00
|
|
|
offset = dissect_SYSTEM_TIME(
|
|
|
|
tvb, offset, pinfo, tree, drep, "Unknown time", TRUE, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_global_counter,
|
|
|
|
NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_total_pages,
|
|
|
|
NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint16(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_major_version,
|
|
|
|
NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint16(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_build_version,
|
|
|
|
NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk7, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk8, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk9, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_session_ctr,
|
|
|
|
NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32( tvb, offset, pinfo, tree, drep,
|
|
|
|
hf_printer_unk11, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32( tvb, offset, pinfo, tree, drep,
|
|
|
|
hf_printer_printer_errors, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk13, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk14, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk15, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk16, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_changeid, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk18, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_status, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk20, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_c_setprinter,
|
|
|
|
NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk22, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk23, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk24, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk25, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk26, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk27, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk28, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_unk29, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* PRINTER_INFO_1
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_PRINTER_INFO_1 = -1;
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
static int dissect_PRINTER_INFO_1(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_printer_flags, NULL);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printerdesc,
|
2002-11-19 03:01:18 +00:00
|
|
|
0, NULL);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printername,
|
2002-11-19 03:01:18 +00:00
|
|
|
0, NULL);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printercomment,
|
2002-11-19 03:01:18 +00:00
|
|
|
0, NULL);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-06-17 06:45:42 +00:00
|
|
|
/* Job status */
|
|
|
|
|
2003-02-05 06:55:56 +00:00
|
|
|
static const true_false_string tfs_job_status_paused = {
|
|
|
|
"Job is paused",
|
|
|
|
"Job is not paused"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_job_status_error = {
|
|
|
|
"Job has an error",
|
|
|
|
"Job is OK"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_job_status_deleting = {
|
|
|
|
"Job is being deleted",
|
|
|
|
"Job is not being deleted"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_job_status_spooling = {
|
|
|
|
"Job is being spooled",
|
|
|
|
"Job is not being spooled"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_job_status_printing = {
|
|
|
|
"Job is being printed",
|
|
|
|
"Job is not being printed"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_job_status_offline = {
|
|
|
|
"Job is offline",
|
|
|
|
"Job is not offline"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_job_status_paperout = {
|
|
|
|
"Job is out of paper",
|
|
|
|
"Job is not out of paper"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_job_status_printed = {
|
|
|
|
"Job has completed printing",
|
|
|
|
"Job has not completed printing"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_job_status_deleted = {
|
|
|
|
"Job has been deleted",
|
|
|
|
"Job has not been deleted"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_job_status_blocked = {
|
|
|
|
"Job has been blocked",
|
|
|
|
"Job has not been blocked"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_job_status_user_intervention = {
|
|
|
|
"User intervention required",
|
|
|
|
"User intervention not required"
|
|
|
|
};
|
|
|
|
|
2002-06-17 06:45:42 +00:00
|
|
|
static gint ett_job_status = -1;
|
|
|
|
|
|
|
|
static int
|
|
|
|
dissect_job_status(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-06-17 06:45:42 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
guint32 status;
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep,
|
2003-02-05 06:55:56 +00:00
|
|
|
hf_job_status, &status);
|
2002-06-17 06:45:42 +00:00
|
|
|
|
|
|
|
item = proto_tree_add_text(tree, tvb, offset - 4, 4,
|
|
|
|
"Status: 0x%08x", status);
|
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_job_status);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-05 06:55:56 +00:00
|
|
|
subtree, hf_job_status_user_intervention, tvb, offset - 4, 4,
|
|
|
|
status);
|
2002-06-17 06:45:42 +00:00
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-05 06:55:56 +00:00
|
|
|
subtree, hf_job_status_blocked, tvb, offset - 4, 4, status);
|
2002-06-17 06:45:42 +00:00
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-05 06:55:56 +00:00
|
|
|
subtree, hf_job_status_deleted, tvb, offset - 4, 4, status);
|
2002-06-17 06:45:42 +00:00
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-05 06:55:56 +00:00
|
|
|
subtree, hf_job_status_printed, tvb, offset - 4, 4, status);
|
2002-06-17 06:45:42 +00:00
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-05 06:55:56 +00:00
|
|
|
subtree, hf_job_status_paperout, tvb, offset - 4, 4, status);
|
2002-06-17 06:45:42 +00:00
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-05 06:55:56 +00:00
|
|
|
subtree, hf_job_status_offline, tvb, offset - 4, 4, status);
|
2002-06-17 06:45:42 +00:00
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-05 06:55:56 +00:00
|
|
|
subtree, hf_job_status_printing, tvb, offset - 4, 4, status);
|
2002-06-17 06:45:42 +00:00
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-05 06:55:56 +00:00
|
|
|
subtree, hf_job_status_spooling, tvb, offset - 4, 4, status);
|
2002-06-17 06:45:42 +00:00
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-05 06:55:56 +00:00
|
|
|
subtree, hf_job_status_deleting, tvb, offset - 4, 4, status);
|
2002-06-17 06:45:42 +00:00
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-05 06:55:56 +00:00
|
|
|
subtree, hf_job_status_error, tvb, offset - 4, 4, status);
|
2002-06-17 06:45:42 +00:00
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-05 06:55:56 +00:00
|
|
|
subtree, hf_job_status_paused, tvb, offset - 4, 4, status);
|
2002-06-17 06:45:42 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
/* Printer attributes */
|
|
|
|
|
|
|
|
static gint ett_printer_attributes = -1;
|
|
|
|
|
2003-02-11 03:22:59 +00:00
|
|
|
static int hf_printer_attributes = -1;
|
|
|
|
static int hf_printer_attributes_queued = -1;
|
|
|
|
static int hf_printer_attributes_direct = -1;
|
|
|
|
static int hf_printer_attributes_default = -1;
|
|
|
|
static int hf_printer_attributes_shared = -1;
|
|
|
|
static int hf_printer_attributes_network = -1;
|
|
|
|
static int hf_printer_attributes_hidden = -1;
|
|
|
|
static int hf_printer_attributes_local = -1;
|
|
|
|
static int hf_printer_attributes_enable_devq = -1;
|
|
|
|
static int hf_printer_attributes_keep_printed_jobs = -1;
|
|
|
|
static int hf_printer_attributes_do_complete_first = -1;
|
|
|
|
static int hf_printer_attributes_work_offline = -1;
|
|
|
|
static int hf_printer_attributes_enable_bidi = -1;
|
|
|
|
static int hf_printer_attributes_raw_only = -1;
|
|
|
|
static int hf_printer_attributes_published = -1;
|
|
|
|
|
|
|
|
static const true_false_string tfs_printer_attributes_queued = {
|
|
|
|
"Printer starts printing after last page spooled",
|
|
|
|
"Printer starts printing while spooling"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_printer_attributes_direct = {
|
|
|
|
"Jobs sent directly to printer",
|
|
|
|
"Jobs are spooled to printer before printing"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_printer_attributes_default = {
|
|
|
|
"Printer is the default printer",
|
|
|
|
"Printer is not the default printer"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_printer_attributes_shared = {
|
|
|
|
"Printer is shared",
|
|
|
|
"Printer is not shared"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_printer_attributes_network = {
|
|
|
|
"Printer is a network printer connection",
|
|
|
|
"Printer is not a network printer connection"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_printer_attributes_hidden = {
|
|
|
|
"Reserved",
|
|
|
|
"Reserved"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_printer_attributes_local = {
|
|
|
|
"Printer is a local printer",
|
|
|
|
"Printer is not a local printer"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_printer_attributes_enable_devq = {
|
|
|
|
"Call DevQueryPrint",
|
|
|
|
"Do not call DevQueryPrint"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_printer_attributes_keep_printed_jobs = {
|
|
|
|
"Jobs are kept after they are printed",
|
|
|
|
"Jobs are deleted after printing"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_printer_attributes_do_complete_first = {
|
|
|
|
"Jobs that have completed spooling are scheduled before still spooling jobs",
|
|
|
|
"Jobs are scheduled in the order they start spooling"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_printer_attributes_work_offline = {
|
|
|
|
"The printer is currently connected",
|
|
|
|
"The printer is currently not connected"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_printer_attributes_enable_bidi = {
|
|
|
|
"Bidirectional communications are supported",
|
|
|
|
"Bidirectional communications are not supported"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_printer_attributes_raw_only = {
|
|
|
|
"Only raw data type print jobs can be spooled",
|
|
|
|
"All data type print jobs can be spooled"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_printer_attributes_published = {
|
|
|
|
"Printer is published in the directory",
|
|
|
|
"Printer is not published in the directory"
|
|
|
|
};
|
|
|
|
|
|
|
|
static int
|
|
|
|
dissect_printer_attributes(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-06-17 03:21:15 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
guint32 attributes;
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep,
|
2003-02-11 03:22:59 +00:00
|
|
|
hf_printer_attributes, &attributes);
|
2002-06-17 03:21:15 +00:00
|
|
|
|
|
|
|
item = proto_tree_add_text(tree, tvb, offset - 4, 4,
|
|
|
|
"Attributes: 0x%08x", attributes);
|
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_printer_attributes);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-11 03:22:59 +00:00
|
|
|
subtree, hf_printer_attributes_published,
|
2002-06-17 03:21:15 +00:00
|
|
|
tvb, offset - 4, 4, attributes);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-11 03:22:59 +00:00
|
|
|
subtree, hf_printer_attributes_raw_only,
|
2002-06-17 03:21:15 +00:00
|
|
|
tvb, offset - 4, 4, attributes);
|
2002-07-10 02:59:38 +00:00
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-11 03:22:59 +00:00
|
|
|
subtree, hf_printer_attributes_enable_bidi,
|
2002-06-17 03:21:15 +00:00
|
|
|
tvb, offset - 4, 4, attributes);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-11 03:22:59 +00:00
|
|
|
subtree, hf_printer_attributes_work_offline,
|
2002-06-17 03:21:15 +00:00
|
|
|
tvb, offset - 4, 4, attributes);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-11 03:22:59 +00:00
|
|
|
subtree, hf_printer_attributes_do_complete_first,
|
2002-06-17 03:21:15 +00:00
|
|
|
tvb, offset - 4, 4, attributes);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-11 03:22:59 +00:00
|
|
|
subtree, hf_printer_attributes_keep_printed_jobs,
|
2002-06-17 03:21:15 +00:00
|
|
|
tvb, offset - 4, 4, attributes);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-11 03:22:59 +00:00
|
|
|
subtree, hf_printer_attributes_enable_devq,
|
2002-06-17 03:21:15 +00:00
|
|
|
tvb, offset - 4, 4, attributes);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-11 03:22:59 +00:00
|
|
|
subtree, hf_printer_attributes_local,
|
2002-06-17 03:21:15 +00:00
|
|
|
tvb, offset - 4, 4, attributes);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-11 03:22:59 +00:00
|
|
|
subtree, hf_printer_attributes_hidden,
|
2002-06-17 03:21:15 +00:00
|
|
|
tvb, offset - 4, 4, attributes);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-11 03:22:59 +00:00
|
|
|
subtree, hf_printer_attributes_network,
|
2002-06-17 03:21:15 +00:00
|
|
|
tvb, offset - 4, 4, attributes);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-11 03:22:59 +00:00
|
|
|
subtree, hf_printer_attributes_shared,
|
2002-06-17 03:21:15 +00:00
|
|
|
tvb, offset - 4, 4, attributes);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-11 03:22:59 +00:00
|
|
|
subtree, hf_printer_attributes_default,
|
2002-06-17 03:21:15 +00:00
|
|
|
tvb, offset - 4, 4, attributes);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-11 03:22:59 +00:00
|
|
|
subtree, hf_printer_attributes_direct,
|
2002-06-17 03:21:15 +00:00
|
|
|
tvb, offset - 4, 4, attributes);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-11 03:22:59 +00:00
|
|
|
subtree, hf_printer_attributes_queued,
|
2002-06-17 03:21:15 +00:00
|
|
|
tvb, offset - 4, 4, attributes);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/*
|
|
|
|
* PRINTER_INFO_2
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_PRINTER_INFO_2 = -1;
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
static int dissect_PRINTER_INFO_2(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2002-11-11 05:39:51 +00:00
|
|
|
guint32 devmode_offset, secdesc_offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_servername,
|
2002-11-19 03:01:18 +00:00
|
|
|
0, NULL);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printername,
|
2002-11-19 03:01:18 +00:00
|
|
|
0, NULL);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_sharename,
|
2002-11-19 03:01:18 +00:00
|
|
|
0, NULL);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_portname,
|
2002-11-19 03:01:18 +00:00
|
|
|
0, NULL);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_drivername,
|
2002-11-19 03:01:18 +00:00
|
|
|
0, NULL);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printercomment,
|
2002-11-19 03:01:18 +00:00
|
|
|
0, NULL);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printerlocation,
|
2002-11-19 03:01:18 +00:00
|
|
|
0, NULL);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, NULL, drep, hf_offset,
|
2002-11-11 05:39:51 +00:00
|
|
|
&devmode_offset);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2003-02-05 06:55:56 +00:00
|
|
|
dissect_DEVMODE(tvb, devmode_offset - 4, pinfo, tree, drep);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_sepfile,
|
2002-11-19 03:01:18 +00:00
|
|
|
0, NULL);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printprocessor,
|
2002-11-19 03:01:18 +00:00
|
|
|
0, NULL);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_datatype,
|
2002-11-19 03:01:18 +00:00
|
|
|
0, NULL);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_parameters,
|
2002-11-19 03:01:18 +00:00
|
|
|
0, NULL);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2002-05-01 21:22:06 +00:00
|
|
|
/*
|
|
|
|
* XXX - what *is* the length of this security descriptor?
|
|
|
|
* "prs_PRINTER_INFO_2()" is passed to "defer_ptr()", but
|
|
|
|
* "defer_ptr" takes, as an argument, a function with a
|
|
|
|
* different calling sequence from "prs_PRINTER_INFO_2()",
|
|
|
|
* lacking the "len" argument, so that won't work.
|
|
|
|
*/
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, NULL, drep, hf_offset,
|
2002-11-11 05:39:51 +00:00
|
|
|
&secdesc_offset);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
dissect_nt_sec_desc(
|
2003-02-07 06:04:28 +00:00
|
|
|
tvb, secdesc_offset, pinfo, tree, drep,
|
Don't ensure all the bytes of a security descriptor exist before calling
"dissect_nt_sec_desc()". Add a Boolean argument to
"dissect_nt_sec_desc()" to indicate whether a length was passed to it
(so we don't treat -1 as a special value; we want to stop treating -1 as
a special length value, and, in fact, want to stop treating *any*
negative length values specially, so that we don't have to worry about
passing arbitrary 32-bit values from packets as lengths), and have
"dissect_nt_sec_desc()" initially create the protocol tree item for the
security descriptor with a length of "go to the end of the tvbuff", and
set the length once we're done dissecting it - and, if the length was
specified, check at *that* point, *after* we've dissected the security
descriptor, whether we have the entire security descriptor in the
tvbuff.
That means that we don't have to worry about overflows after
"dissect_nt_sec_desc()" returns - if the length was so large that we
would have gotten an overflow, we'd have thrown an exception in the
"tvb_ensure_bytes_exist()" call at the end of "dissect_nt_sec_desc()".
Do sanity checks on offsets within the security descriptor, so we know
the item referred to by the offset is after the fixed-length portion of
the descriptor.
svn path=/trunk/; revision=16113
2005-10-04 10:23:40 +00:00
|
|
|
FALSE, -1,
|
2003-05-15 02:15:13 +00:00
|
|
|
&spoolss_printer_access_mask_info);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_printer_attributes(tvb, offset, pinfo, tree, drep);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, NULL, drep, hf_printer_priority,
|
2002-11-11 05:39:51 +00:00
|
|
|
NULL);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, NULL, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_printer_default_priority, NULL);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, NULL, drep, hf_start_time, NULL);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, NULL, drep, hf_end_time, NULL);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-11 03:22:59 +00:00
|
|
|
hf_printer_status, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, NULL, drep, hf_printer_jobs,
|
2002-11-11 05:39:51 +00:00
|
|
|
NULL);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, NULL, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_printer_averageppm, NULL);
|
2002-04-05 03:07:28 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
return offset;
|
|
|
|
}
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/*
|
|
|
|
* PRINTER_INFO_3
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_PRINTER_INFO_3 = -1;
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
static int dissect_PRINTER_INFO_3(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_printer_flags, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
offset = dissect_nt_sec_desc(
|
2003-02-07 06:04:28 +00:00
|
|
|
tvb, offset, pinfo, tree, drep,
|
Don't ensure all the bytes of a security descriptor exist before calling
"dissect_nt_sec_desc()". Add a Boolean argument to
"dissect_nt_sec_desc()" to indicate whether a length was passed to it
(so we don't treat -1 as a special value; we want to stop treating -1 as
a special length value, and, in fact, want to stop treating *any*
negative length values specially, so that we don't have to worry about
passing arbitrary 32-bit values from packets as lengths), and have
"dissect_nt_sec_desc()" initially create the protocol tree item for the
security descriptor with a length of "go to the end of the tvbuff", and
set the length once we're done dissecting it - and, if the length was
specified, check at *that* point, *after* we've dissected the security
descriptor, whether we have the entire security descriptor in the
tvbuff.
That means that we don't have to worry about overflows after
"dissect_nt_sec_desc()" returns - if the length was so large that we
would have gotten an overflow, we'd have thrown an exception in the
"tvb_ensure_bytes_exist()" call at the end of "dissect_nt_sec_desc()".
Do sanity checks on offsets within the security descriptor, so we know
the item referred to by the offset is after the fixed-length portion of
the descriptor.
svn path=/trunk/; revision=16113
2005-10-04 10:23:40 +00:00
|
|
|
FALSE, -1,
|
2003-05-15 02:15:13 +00:00
|
|
|
&spoolss_printer_access_mask_info);
|
2002-04-03 23:32:23 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-12-04 05:41:47 +00:00
|
|
|
/*
|
|
|
|
* PRINTER_INFO_7
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_PRINTER_INFO_7 = -1;
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
static const value_string getprinter_action_vals[] = {
|
|
|
|
{ DS_PUBLISH, "Publish" },
|
|
|
|
{ DS_UNPUBLISH, "Unpublish" },
|
|
|
|
{ DS_UPDATE, "Update" },
|
|
|
|
|
|
|
|
/* Not sure what the constant values are here */
|
|
|
|
|
|
|
|
/* { DS_PENDING, "Pending" }, */
|
|
|
|
/* { DS_REPUBLISH, "Republish" }, */
|
|
|
|
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
2002-12-04 05:41:47 +00:00
|
|
|
static int dissect_PRINTER_INFO_7(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-12-04 05:41:47 +00:00
|
|
|
{
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_printer_guid,
|
2002-12-04 05:41:47 +00:00
|
|
|
0, NULL);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_printer_action, NULL);
|
2002-12-04 05:41:47 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/*
|
2002-11-19 05:25:04 +00:00
|
|
|
* PRINTER_DATATYPE structure
|
2002-01-03 20:42:41 +00:00
|
|
|
*/
|
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
static gint ett_PRINTER_DATATYPE = -1;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
static int dissect_PRINTER_DATATYPE(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2002-11-19 05:25:04 +00:00
|
|
|
dcerpc_info *di = pinfo->private_data;
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
if (di->conformant_run)
|
|
|
|
return offset;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_cvstring(
|
|
|
|
tvb, offset, pinfo, tree, drep, sizeof(guint16),
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_datatype, TRUE, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* USER_LEVEL_1 structure
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_USER_LEVEL_1 = -1;
|
|
|
|
|
2003-02-11 03:22:59 +00:00
|
|
|
static int hf_userlevel_size = -1;
|
|
|
|
static int hf_userlevel_client = -1;
|
|
|
|
static int hf_userlevel_user = -1;
|
|
|
|
static int hf_userlevel_build = -1;
|
|
|
|
static int hf_userlevel_major = -1;
|
|
|
|
static int hf_userlevel_minor = -1;
|
|
|
|
static int hf_userlevel_processor = -1;
|
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
static int dissect_USER_LEVEL_1(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2002-11-19 05:25:04 +00:00
|
|
|
guint32 level;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-12-13 04:58:56 +00:00
|
|
|
/* Guy has pointed out that this dissection looks wrong. In
|
2006-05-21 04:49:01 +00:00
|
|
|
the wireshark output for a USER_LEVEL_1 it looks like the
|
2002-12-13 04:58:56 +00:00
|
|
|
info level and container pointer are transposed. I'm not
|
|
|
|
even sure this structure is a container. */
|
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_level, &level);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-11 03:22:59 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_userlevel_size, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-28 06:42:20 +00:00
|
|
|
offset = dissect_ndr_str_pointer_item(
|
|
|
|
tvb, offset, pinfo, tree, drep, NDR_POINTER_UNIQUE,
|
2003-02-11 03:22:59 +00:00
|
|
|
"Client", hf_userlevel_client, 0);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-28 06:42:20 +00:00
|
|
|
offset = dissect_ndr_str_pointer_item(
|
|
|
|
tvb, offset, pinfo, tree, drep, NDR_POINTER_UNIQUE,
|
2003-02-11 03:22:59 +00:00
|
|
|
"User", hf_userlevel_user, 0);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-11 03:22:59 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_userlevel_build, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-11 03:22:59 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_userlevel_major, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-11 03:22:59 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_userlevel_minor, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-11 03:22:59 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_userlevel_processor, NULL);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
return offset;
|
2002-01-03 20:42:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
2002-11-19 05:25:04 +00:00
|
|
|
* USER_LEVEL_CTR structure
|
2002-01-03 20:42:41 +00:00
|
|
|
*/
|
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
static gint ett_USER_LEVEL_CTR = -1;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
static int dissect_USER_LEVEL_CTR(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2002-11-19 05:25:04 +00:00
|
|
|
dcerpc_info *di = pinfo->private_data;
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
guint32 level;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
if (di->conformant_run)
|
|
|
|
return offset;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-25 02:08:05 +00:00
|
|
|
item = proto_tree_add_text(
|
|
|
|
tree, tvb, offset, 0, "User level container");
|
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
subtree = proto_item_add_subtree(item, ett_USER_LEVEL_CTR);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_level, &level);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
switch(level) {
|
|
|
|
case 1:
|
|
|
|
offset = dissect_ndr_pointer(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
|
|
|
dissect_USER_LEVEL_1, NDR_POINTER_UNIQUE,
|
2003-02-25 02:08:05 +00:00
|
|
|
"User level 1", -1);
|
2002-11-19 05:25:04 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
proto_tree_add_text(
|
|
|
|
tree, tvb, offset, 0,
|
|
|
|
"[Info level %d not decoded]", level);
|
|
|
|
break;
|
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
return offset;
|
2002-01-03 20:42:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* SpoolssOpenPrinterEx
|
|
|
|
*/
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssOpenPrinterEx_q(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2003-05-15 02:15:13 +00:00
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
|
|
|
char *name;
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
dcv->private_data=NULL;
|
2003-01-28 06:42:20 +00:00
|
|
|
offset = dissect_ndr_pointer_cb(
|
2002-11-19 05:25:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-07 22:44:54 +00:00
|
|
|
dissect_ndr_wchar_cvstring, NDR_POINTER_UNIQUE,
|
2003-04-27 00:49:14 +00:00
|
|
|
"Printer name", hf_printername, cb_wstr_postprocess,
|
2003-01-30 08:19:39 +00:00
|
|
|
GINT_TO_POINTER(CB_STR_COL_INFO | CB_STR_SAVE | 1));
|
2006-09-16 08:51:03 +00:00
|
|
|
name = dcv->private_data;
|
|
|
|
|
|
|
|
/* OpenPrinterEx() stores the key/value in se_data */
|
|
|
|
if(!pinfo->fd->flags.visited){
|
|
|
|
if(!dcv->se_data){
|
|
|
|
dcv->se_data = se_strdup_printf("%s",
|
|
|
|
name?name:"");
|
|
|
|
}
|
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
offset = dissect_ndr_pointer(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
|
|
|
dissect_PRINTER_DATATYPE, NDR_POINTER_UNIQUE,
|
2003-02-25 02:08:05 +00:00
|
|
|
"Printer datatype", -1);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
offset = dissect_DEVMODE_CTR(tvb, offset, pinfo, tree, drep);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
name=dcv->se_data;
|
2003-05-15 02:15:13 +00:00
|
|
|
if (name) {
|
|
|
|
if (name[0] == '\\' && name[1] == '\\')
|
|
|
|
name += 2;
|
|
|
|
|
|
|
|
/* Determine if we are opening a printer or a print server */
|
|
|
|
|
|
|
|
if (strchr(name, '\\'))
|
|
|
|
offset = dissect_nt_access_mask(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
|
|
|
hf_access_required,
|
2004-03-30 07:39:05 +00:00
|
|
|
&spoolss_printer_access_mask_info, NULL);
|
2003-05-15 02:15:13 +00:00
|
|
|
else
|
|
|
|
offset = dissect_nt_access_mask(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
|
|
|
hf_access_required,
|
2004-03-30 07:39:05 +00:00
|
|
|
&spoolss_printserver_access_mask_info, NULL);
|
2003-05-15 02:15:13 +00:00
|
|
|
} else {
|
|
|
|
|
|
|
|
/* We can't decide what type of object being opened */
|
|
|
|
|
|
|
|
offset = dissect_nt_access_mask(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_access_required,
|
2004-03-30 07:39:05 +00:00
|
|
|
NULL, NULL);
|
2003-05-15 02:15:13 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-19 05:25:04 +00:00
|
|
|
offset = dissect_USER_LEVEL_CTR(tvb, offset, pinfo, tree, drep);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int SpoolssOpenPrinterEx_r(tvbuff_t *tvb, int offset,
|
2002-08-28 21:04:11 +00:00
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
2002-03-26 05:20:51 +00:00
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2002-06-28 01:23:26 +00:00
|
|
|
e_ctx_hnd policy_hnd;
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
proto_item *hnd_item;
|
2002-01-03 20:42:41 +00:00
|
|
|
guint32 status;
|
|
|
|
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
/* Parse packet */
|
2002-03-25 05:42:02 +00:00
|
|
|
|
2002-06-28 01:23:26 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, &hnd_item,
|
2002-06-28 01:23:26 +00:00
|
|
|
TRUE, FALSE);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, &status);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
if( status == 0 ){
|
2007-04-23 10:59:26 +00:00
|
|
|
const char *pol_name;
|
2003-02-10 06:21:57 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
if (dcv->se_data){
|
|
|
|
pol_name = ep_strdup_printf(
|
|
|
|
"OpenPrinterEx(%s)", (char *)dcv->se_data);
|
|
|
|
} else {
|
|
|
|
pol_name = "Unknown OpenPrinterEx() handle";
|
|
|
|
}
|
|
|
|
if(!pinfo->fd->flags.visited){
|
2007-08-28 11:45:08 +00:00
|
|
|
dcerpc_store_polhnd_name(&policy_hnd, pinfo, pol_name);
|
2002-03-26 05:20:51 +00:00
|
|
|
}
|
2002-06-28 01:23:26 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
if(hnd_item)
|
|
|
|
proto_item_append_text(hnd_item, ": %s", pol_name);
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
}
|
2002-06-28 01:23:26 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
static const value_string printer_notify_option_data_vals[] = {
|
|
|
|
{ PRINTER_NOTIFY_SERVER_NAME, "Server name" },
|
|
|
|
{ PRINTER_NOTIFY_PRINTER_NAME, "Printer name" },
|
|
|
|
{ PRINTER_NOTIFY_SHARE_NAME, "Share name" },
|
|
|
|
{ PRINTER_NOTIFY_PORT_NAME, "Port name" },
|
|
|
|
{ PRINTER_NOTIFY_DRIVER_NAME, "Driver name" },
|
|
|
|
{ PRINTER_NOTIFY_COMMENT, "Comment" },
|
|
|
|
{ PRINTER_NOTIFY_LOCATION, "Location" },
|
|
|
|
{ PRINTER_NOTIFY_DEVMODE, "Devmode" },
|
|
|
|
{ PRINTER_NOTIFY_SEPFILE, "Sepfile" },
|
|
|
|
{ PRINTER_NOTIFY_PRINT_PROCESSOR, "Print processor" },
|
|
|
|
{ PRINTER_NOTIFY_PARAMETERS, "Parameters" },
|
|
|
|
{ PRINTER_NOTIFY_DATATYPE, "Datatype" },
|
|
|
|
{ PRINTER_NOTIFY_SECURITY_DESCRIPTOR, "Security descriptor" },
|
|
|
|
{ PRINTER_NOTIFY_ATTRIBUTES, "Attributes" },
|
|
|
|
{ PRINTER_NOTIFY_PRIORITY, "Priority" },
|
|
|
|
{ PRINTER_NOTIFY_DEFAULT_PRIORITY, "Default priority" },
|
|
|
|
{ PRINTER_NOTIFY_START_TIME, "Start time" },
|
|
|
|
{ PRINTER_NOTIFY_UNTIL_TIME, "Until time" },
|
|
|
|
{ PRINTER_NOTIFY_STATUS, "Status" },
|
|
|
|
{ PRINTER_NOTIFY_STATUS_STRING, "Status string" },
|
|
|
|
{ PRINTER_NOTIFY_CJOBS, "Cjobs" },
|
|
|
|
{ PRINTER_NOTIFY_AVERAGE_PPM, "Average PPM" },
|
|
|
|
{ PRINTER_NOTIFY_TOTAL_PAGES, "Total pages" },
|
|
|
|
{ PRINTER_NOTIFY_PAGES_PRINTED, "Pages printed" },
|
|
|
|
{ PRINTER_NOTIFY_TOTAL_BYTES, "Total bytes" },
|
|
|
|
{ PRINTER_NOTIFY_BYTES_PRINTED, "Bytes printed" },
|
|
|
|
{ 0, NULL}
|
|
|
|
};
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
static const value_string job_notify_option_data_vals[] = {
|
|
|
|
{ JOB_NOTIFY_PRINTER_NAME, "Printer name" },
|
|
|
|
{ JOB_NOTIFY_MACHINE_NAME, "Machine name" },
|
|
|
|
{ JOB_NOTIFY_PORT_NAME, "Port name" },
|
|
|
|
{ JOB_NOTIFY_USER_NAME, "User name" },
|
|
|
|
{ JOB_NOTIFY_NOTIFY_NAME, "Notify name" },
|
|
|
|
{ JOB_NOTIFY_DATATYPE, "Data type" },
|
|
|
|
{ JOB_NOTIFY_PRINT_PROCESSOR, "Print processor" },
|
|
|
|
{ JOB_NOTIFY_PARAMETERS, "Parameters" },
|
|
|
|
{ JOB_NOTIFY_DRIVER_NAME, "Driver name" },
|
|
|
|
{ JOB_NOTIFY_DEVMODE, "Devmode" },
|
|
|
|
{ JOB_NOTIFY_STATUS, "Status" },
|
|
|
|
{ JOB_NOTIFY_STATUS_STRING, "Status string" },
|
|
|
|
{ JOB_NOTIFY_SECURITY_DESCRIPTOR, "Security descriptor" },
|
|
|
|
{ JOB_NOTIFY_DOCUMENT, "Document" },
|
|
|
|
{ JOB_NOTIFY_PRIORITY, "Priority" },
|
|
|
|
{ JOB_NOTIFY_POSITION, "Position" },
|
|
|
|
{ JOB_NOTIFY_SUBMITTED, "Submitted" },
|
|
|
|
{ JOB_NOTIFY_START_TIME, "Start time" },
|
|
|
|
{ JOB_NOTIFY_UNTIL_TIME, "Until time" },
|
|
|
|
{ JOB_NOTIFY_TIME, "Time" },
|
|
|
|
{ JOB_NOTIFY_TOTAL_PAGES, "Total pages" },
|
|
|
|
{ JOB_NOTIFY_PAGES_PRINTED, "Pages printed" },
|
|
|
|
{ JOB_NOTIFY_TOTAL_BYTES, "Total bytes" },
|
|
|
|
{ JOB_NOTIFY_BYTES_PRINTED, "Bytes printed" },
|
|
|
|
{ 0, NULL}
|
|
|
|
};
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int
|
2002-06-05 04:15:30 +00:00
|
|
|
dissect_notify_field(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep, guint16 type,
|
2002-08-28 21:04:11 +00:00
|
|
|
guint16 *data)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2002-06-05 04:15:30 +00:00
|
|
|
guint16 field;
|
2005-06-26 19:56:52 +00:00
|
|
|
const char *str;
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
2002-08-28 21:04:11 +00:00
|
|
|
tvb, offset, pinfo, NULL, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_field, &field);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
switch(type) {
|
|
|
|
case PRINTER_NOTIFY_TYPE:
|
2002-08-28 21:04:11 +00:00
|
|
|
str = val_to_str(field, printer_notify_option_data_vals,
|
2002-06-05 04:15:30 +00:00
|
|
|
"Unknown");
|
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_TYPE:
|
2002-08-28 21:04:11 +00:00
|
|
|
str = val_to_str(field, job_notify_option_data_vals,
|
2002-06-05 04:15:30 +00:00
|
|
|
"Unknown");
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
str = "Unknown notify type";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
proto_tree_add_text(tree, tvb, offset - 2, 2,
|
|
|
|
"Field: %s (%d)", str, field);
|
|
|
|
|
|
|
|
if (data)
|
|
|
|
*data = field;
|
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int
|
2002-06-05 04:15:30 +00:00
|
|
|
dissect_NOTIFY_OPTION_DATA(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-06-05 04:15:30 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = pinfo->private_data;
|
2003-02-10 06:21:57 +00:00
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2002-01-03 20:42:41 +00:00
|
|
|
guint32 count, i;
|
2003-02-10 06:21:57 +00:00
|
|
|
guint16 type;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
if (di->conformant_run)
|
|
|
|
return offset;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2002-08-28 21:04:11 +00:00
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_option_data_count, &count);
|
|
|
|
|
|
|
|
type = GPOINTER_TO_INT(dcv->private_data);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
for (i = 0; i < count; i++)
|
2002-06-05 04:15:30 +00:00
|
|
|
offset = dissect_notify_field(
|
|
|
|
tvb, offset, pinfo, tree, drep, type, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
static const value_string printer_notify_types[] =
|
|
|
|
{
|
|
|
|
{ PRINTER_NOTIFY_TYPE, "Printer notify" },
|
|
|
|
{ JOB_NOTIFY_TYPE, "Job notify" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2005-07-26 08:01:16 +00:00
|
|
|
static const char *notify_plural(int count)
|
2003-02-25 02:08:05 +00:00
|
|
|
{
|
|
|
|
if (count == 1)
|
|
|
|
return "notification";
|
|
|
|
|
|
|
|
return "notifies";
|
|
|
|
}
|
|
|
|
|
2002-06-05 07:15:47 +00:00
|
|
|
static gint ett_NOTIFY_OPTION = -1;
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int
|
2002-06-05 04:15:30 +00:00
|
|
|
dissect_NOTIFY_OPTION(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2003-02-10 06:21:57 +00:00
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2002-06-05 07:15:47 +00:00
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
2002-06-05 04:15:30 +00:00
|
|
|
guint16 type;
|
2003-02-25 02:08:05 +00:00
|
|
|
guint32 count;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
item = proto_tree_add_text(tree, tvb, offset, 0, "Notify Option");
|
2002-06-05 07:15:47 +00:00
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_NOTIFY_OPTION);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(tvb, offset, pinfo, subtree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_option_type, &type);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
proto_item_append_text(
|
|
|
|
item, ": %s", val_to_str(type, printer_notify_types,
|
|
|
|
"Unknown (%d)"));
|
2002-06-17 03:21:15 +00:00
|
|
|
|
2002-06-05 07:15:47 +00:00
|
|
|
offset = dissect_ndr_uint16(tvb, offset, pinfo, subtree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_option_reserved1, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 07:15:47 +00:00
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, subtree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_option_reserved2, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 07:15:47 +00:00
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, subtree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_option_reserved3, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 07:15:47 +00:00
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, subtree, drep,
|
2003-02-25 02:08:05 +00:00
|
|
|
hf_notify_option_count, &count);
|
|
|
|
|
|
|
|
proto_item_append_text(
|
|
|
|
item, ", %d %s", count, notify_plural(count));
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
dcv->private_data = GINT_TO_POINTER((int)type);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
offset = dissect_ndr_pointer(
|
2002-08-28 21:04:11 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2002-06-05 04:15:30 +00:00
|
|
|
dissect_NOTIFY_OPTION_DATA, NDR_POINTER_UNIQUE,
|
2003-02-10 06:21:57 +00:00
|
|
|
"Notify Option Data", -1);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
return offset;
|
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
static int
|
2002-08-28 21:04:11 +00:00
|
|
|
dissect_NOTIFY_OPTIONS_ARRAY(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-06-05 04:15:30 +00:00
|
|
|
{
|
|
|
|
/* Why is a check for di->conformant_run not required here? */
|
|
|
|
|
|
|
|
offset = dissect_ndr_ucarray(
|
|
|
|
tvb, offset, pinfo, tree, drep, dissect_NOTIFY_OPTION);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
static gint ett_notify_options_flags = -1;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
static const true_false_string tfs_notify_options_flags_refresh = {
|
|
|
|
"Data for all monitored fields is present",
|
|
|
|
"Data for all monitored fields not present"
|
|
|
|
};
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
static int
|
|
|
|
dissect_notify_options_flags(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
2002-06-05 04:15:30 +00:00
|
|
|
guint32 flags;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_options_flags,
|
2002-06-05 04:15:30 +00:00
|
|
|
&flags);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 07:15:47 +00:00
|
|
|
item = proto_tree_add_text(tree, tvb, offset - 4, 4,
|
2002-06-05 04:15:30 +00:00
|
|
|
"Flags: 0x%08x", flags);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
subtree = proto_item_add_subtree(item, ett_notify_options_flags);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
subtree, hf_notify_options_flags_refresh,
|
2002-06-05 04:15:30 +00:00
|
|
|
tvb, offset, 4, flags);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
static int
|
2002-08-28 21:04:11 +00:00
|
|
|
dissect_NOTIFY_OPTIONS_ARRAY_CTR(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2002-06-05 04:15:30 +00:00
|
|
|
dcerpc_info *di = pinfo->private_data;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
if (di->conformant_run)
|
|
|
|
return offset;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_options_version, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
offset = dissect_notify_options_flags(tvb, offset, pinfo, tree, drep);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_options_count, NULL);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_pointer(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2002-06-05 07:15:47 +00:00
|
|
|
dissect_NOTIFY_OPTIONS_ARRAY, NDR_POINTER_UNIQUE,
|
2003-02-10 06:21:57 +00:00
|
|
|
"Notify Options Array", -1);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* SpoolssRFFPCNEX
|
|
|
|
*/
|
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
static gint ett_rffpcnex_flags = -1;
|
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
static int hf_rffpcnex_flags = -1;
|
|
|
|
static int hf_rffpcnex_options = -1;
|
|
|
|
|
|
|
|
static int hf_rffpcnex_flags_add_printer = -1;
|
|
|
|
static int hf_rffpcnex_flags_set_printer = -1;
|
|
|
|
static int hf_rffpcnex_flags_delete_printer = -1;
|
|
|
|
static int hf_rffpcnex_flags_failed_printer_connection = -1;
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_add_printer = {
|
|
|
|
"Notify on add printer",
|
|
|
|
"Don't notify on add printer"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_set_printer = {
|
|
|
|
"Notify on set printer",
|
|
|
|
"Don't notify on set printer"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_delete_printer = {
|
|
|
|
"Notify on delete printer",
|
|
|
|
"Don't notify on delete printer"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_failed_connection_printer = {
|
|
|
|
"Notify on failed printer connection",
|
|
|
|
"Don't notify on failed printer connection"
|
|
|
|
};
|
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
static int hf_rffpcnex_flags_add_job = -1;
|
|
|
|
static int hf_rffpcnex_flags_set_job = -1;
|
|
|
|
static int hf_rffpcnex_flags_delete_job = -1;
|
|
|
|
static int hf_rffpcnex_flags_write_job = -1;
|
2002-06-27 03:02:50 +00:00
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_add_job = {
|
|
|
|
"Notify on add job",
|
|
|
|
"Don't notify on add job"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_set_job = {
|
|
|
|
"Notify on set job",
|
|
|
|
"Don't notify on set job"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_delete_job = {
|
|
|
|
"Notify on delete job",
|
|
|
|
"Don't notify on delete job"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_write_job = {
|
|
|
|
"Notify on writejob",
|
|
|
|
"Don't notify on write job"
|
|
|
|
};
|
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
static int hf_rffpcnex_flags_add_form = -1;
|
|
|
|
static int hf_rffpcnex_flags_set_form = -1;
|
|
|
|
static int hf_rffpcnex_flags_delete_form = -1;
|
2002-06-27 03:02:50 +00:00
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_add_form = {
|
|
|
|
"Notify on add form",
|
|
|
|
"Don't notify on add form"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_set_form = {
|
|
|
|
"Notify on set form",
|
|
|
|
"Don't notify on set form"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_delete_form = {
|
|
|
|
"Notify on delete form",
|
|
|
|
"Don't notify on delete form"
|
|
|
|
};
|
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
static int hf_rffpcnex_flags_add_port = -1;
|
|
|
|
static int hf_rffpcnex_flags_configure_port = -1;
|
|
|
|
static int hf_rffpcnex_flags_delete_port = -1;
|
2002-06-27 03:02:50 +00:00
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_add_port = {
|
|
|
|
"Notify on add port",
|
|
|
|
"Don't notify on add port"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_configure_port = {
|
|
|
|
"Notify on configure port",
|
|
|
|
"Don't notify on configure port"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_delete_port = {
|
|
|
|
"Notify on delete port",
|
|
|
|
"Don't notify on delete port"
|
|
|
|
};
|
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
static int hf_rffpcnex_flags_add_print_processor = -1;
|
|
|
|
static int hf_rffpcnex_flags_delete_print_processor = -1;
|
2002-06-27 03:02:50 +00:00
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_add_print_processor = {
|
|
|
|
"Notify on add driver",
|
|
|
|
"Don't notify on add driver"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_delete_print_processor = {
|
|
|
|
"Notify on add driver",
|
|
|
|
"Don't notify on add driver"
|
|
|
|
};
|
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
static int hf_rffpcnex_flags_add_driver = -1;
|
|
|
|
static int hf_rffpcnex_flags_set_driver = -1;
|
|
|
|
static int hf_rffpcnex_flags_delete_driver = -1;
|
2002-06-27 03:02:50 +00:00
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_add_driver = {
|
|
|
|
"Notify on add driver",
|
|
|
|
"Don't notify on add driver"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_set_driver = {
|
|
|
|
"Notify on set driver",
|
|
|
|
"Don't notify on set driver"
|
|
|
|
};
|
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_delete_driver = {
|
|
|
|
"Notify on delete driver",
|
|
|
|
"Don't notify on delete driver"
|
|
|
|
};
|
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
static int hf_rffpcnex_flags_timeout = -1;
|
2002-06-27 03:02:50 +00:00
|
|
|
|
|
|
|
static const true_false_string tfs_rffpcnex_flags_timeout = {
|
|
|
|
"Notify on timeout",
|
|
|
|
"Don't notify on timeout"
|
|
|
|
};
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssRFFPCNEX_q(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2002-06-05 04:15:30 +00:00
|
|
|
guint32 flags;
|
|
|
|
proto_item *flags_item;
|
|
|
|
proto_tree *flags_subtree;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
|
|
|
FALSE, FALSE);
|
2002-03-25 05:42:02 +00:00
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_rffpcnex_flags, &flags);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
flags_item = proto_tree_add_text(tree, tvb, offset - 4, 4,
|
|
|
|
"Flags: 0x%08x", flags);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
flags_subtree = proto_item_add_subtree(flags_item, ett_rffpcnex_flags);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_timeout, tvb,
|
2002-06-05 04:15:30 +00:00
|
|
|
offset - 4, 4, flags);
|
2002-03-26 05:20:51 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_delete_driver, tvb,
|
2002-06-05 04:15:30 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_set_driver, tvb,
|
2002-06-05 04:15:30 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_add_driver, tvb,
|
2002-06-05 04:15:30 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
2002-06-27 03:02:50 +00:00
|
|
|
proto_tree_add_boolean(
|
2002-08-28 21:04:11 +00:00
|
|
|
flags_subtree,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_rffpcnex_flags_delete_print_processor, tvb,
|
2002-06-27 03:02:50 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_add_print_processor,
|
2002-07-10 02:59:38 +00:00
|
|
|
tvb, offset - 4, 4, flags);
|
2002-06-27 03:02:50 +00:00
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_delete_port, tvb,
|
2002-06-27 03:02:50 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_configure_port, tvb,
|
2002-06-27 03:02:50 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_add_port, tvb,
|
2002-06-27 03:02:50 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_delete_form, tvb,
|
2002-06-27 03:02:50 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_set_form, tvb,
|
2002-06-27 03:02:50 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_add_form, tvb,
|
2002-06-27 03:02:50 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_write_job, tvb,
|
2002-06-27 03:02:50 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_delete_job, tvb,
|
2002-06-27 03:02:50 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_set_job, tvb,
|
2002-06-27 03:02:50 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_add_job, tvb,
|
2002-06-27 03:02:50 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2002-08-28 21:04:11 +00:00
|
|
|
flags_subtree,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_rffpcnex_flags_failed_printer_connection, tvb,
|
2002-06-27 03:02:50 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_delete_printer, tvb,
|
2002-06-27 03:02:50 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_set_printer, tvb,
|
2002-06-27 03:02:50 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
2003-02-10 06:21:57 +00:00
|
|
|
flags_subtree, hf_rffpcnex_flags_add_printer, tvb,
|
2002-06-27 03:02:50 +00:00
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
2002-08-29 19:05:41 +00:00
|
|
|
if (flags & SPOOLSS_PRINTER_CHANGE_PRINTER)
|
2002-06-27 03:02:50 +00:00
|
|
|
proto_item_append_text(flags_item, ", change printer");
|
|
|
|
|
2002-08-29 19:05:41 +00:00
|
|
|
if (flags & SPOOLSS_PRINTER_CHANGE_JOB)
|
2002-06-27 03:02:50 +00:00
|
|
|
proto_item_append_text(flags_item, ", change job");
|
|
|
|
|
2002-08-29 19:05:41 +00:00
|
|
|
if (flags & SPOOLSS_PRINTER_CHANGE_FORM)
|
2002-06-27 03:02:50 +00:00
|
|
|
proto_item_append_text(flags_item, ", change form");
|
|
|
|
|
2002-08-29 19:05:41 +00:00
|
|
|
if (flags & SPOOLSS_PRINTER_CHANGE_PORT)
|
2002-06-27 03:02:50 +00:00
|
|
|
proto_item_append_text(flags_item, ", change port");
|
|
|
|
|
2002-08-29 19:05:41 +00:00
|
|
|
if (flags & SPOOLSS_PRINTER_CHANGE_PRINTER_DRIVER)
|
2002-06-27 03:02:50 +00:00
|
|
|
proto_item_append_text(flags_item, ", change printer driver");
|
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_rffpcnex_options, NULL);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
2003-01-28 06:42:20 +00:00
|
|
|
offset = dissect_ndr_str_pointer_item(
|
|
|
|
tvb, offset, pinfo, tree, drep, NDR_POINTER_UNIQUE,
|
2003-02-14 06:23:45 +00:00
|
|
|
"Server", hf_servername, 0);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_printerlocal, NULL);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_pointer(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2002-06-05 07:15:47 +00:00
|
|
|
dissect_NOTIFY_OPTIONS_ARRAY_CTR, NDR_POINTER_UNIQUE,
|
2003-02-10 06:21:57 +00:00
|
|
|
"Notify Options Container", -1);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int SpoolssRFFPCNEX_r(tvbuff_t *tvb, int offset,
|
2002-08-28 21:04:11 +00:00
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* SpoolssReplyOpenPrinter
|
|
|
|
*/
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssReplyOpenPrinter_q(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
2002-03-26 05:20:51 +00:00
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2002-06-06 03:18:14 +00:00
|
|
|
guint32 printerlocal;
|
2006-09-16 08:51:03 +00:00
|
|
|
char *name;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
/* Parse packet */
|
2006-09-16 08:51:03 +00:00
|
|
|
name=NULL;
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_cvstring(
|
|
|
|
tvb, offset, pinfo, tree, drep, sizeof(guint16),
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_servername, TRUE, &name);
|
2006-09-16 08:51:03 +00:00
|
|
|
/* ReplyOpenPrinter() stores the printername in se_data */
|
|
|
|
if(!pinfo->fd->flags.visited){
|
|
|
|
if(!dcv->se_data){
|
|
|
|
if(name){
|
|
|
|
dcv->se_data = se_strdup(name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2002-06-06 03:18:14 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO) && name)
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", name);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_printerlocal,
|
|
|
|
&printerlocal);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-05-20 00:36:04 +00:00
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_printerdata_type, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_replyopenprinter_unk0,
|
|
|
|
NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_replyopenprinter_unk1,
|
|
|
|
NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssReplyOpenPrinter_r(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2003-02-10 06:21:57 +00:00
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2002-06-06 03:18:14 +00:00
|
|
|
e_ctx_hnd policy_hnd;
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
proto_item *hnd_item;
|
|
|
|
guint32 status;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, &hnd_item,
|
2003-02-14 06:23:45 +00:00
|
|
|
TRUE, FALSE);
|
2003-02-10 06:21:57 +00:00
|
|
|
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, &status);
|
2002-03-25 05:42:02 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
if( status == 0 ){
|
2007-04-23 10:59:26 +00:00
|
|
|
const char *pol_name;
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
if (dcv->se_data){
|
|
|
|
pol_name = ep_strdup_printf(
|
|
|
|
"ReplyOpenPrinter(%s)", (char *)dcv->se_data);
|
|
|
|
} else {
|
|
|
|
pol_name = "Unknown ReplyOpenPrinter() handle";
|
|
|
|
}
|
|
|
|
if(!pinfo->fd->flags.visited){
|
2007-08-28 11:45:08 +00:00
|
|
|
dcerpc_store_polhnd_name(&policy_hnd, pinfo, pol_name);
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
}
|
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
if(hnd_item)
|
|
|
|
proto_item_append_text(hnd_item, ": %s", pol_name);
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* SpoolssGetPrinter
|
|
|
|
*/
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
static int SpoolssGetPrinter_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
2002-03-26 05:20:51 +00:00
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2002-01-03 20:42:41 +00:00
|
|
|
guint32 level;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2002-06-28 01:23:26 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-11-11 05:39:51 +00:00
|
|
|
FALSE, FALSE);
|
2001-11-12 08:58:45 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_level, &level);
|
2001-11-12 08:58:45 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
/* GetPrinter() stores the level in se_data */
|
|
|
|
if(!pinfo->fd->flags.visited){
|
|
|
|
dcv->se_data = GINT_TO_POINTER((int)level);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", level %d", level);
|
2001-11-12 08:58:45 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_buffer(
|
|
|
|
tvb, offset, pinfo, tree, drep, NULL);
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_offered, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
static gint ett_PRINTER_INFO = -1;
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
static int SpoolssGetPrinter_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
2002-03-26 05:20:51 +00:00
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2002-11-11 05:39:51 +00:00
|
|
|
BUFFER buffer;
|
2006-09-16 08:51:03 +00:00
|
|
|
gint16 level = GPOINTER_TO_INT(dcv->se_data);
|
2002-11-11 05:39:51 +00:00
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree = NULL;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-04-05 03:07:28 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", level %d", level);
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_spoolss_buffer(
|
|
|
|
tvb, offset, pinfo, tree, drep, &buffer);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2003-01-30 05:11:33 +00:00
|
|
|
if (buffer.tvb) {
|
|
|
|
switch(level) {
|
|
|
|
case 0:
|
|
|
|
case 1:
|
|
|
|
case 2:
|
|
|
|
case 3:
|
|
|
|
case 7:
|
|
|
|
item = proto_tree_add_text(
|
|
|
|
buffer.tree, buffer.tvb, 0, -1,
|
2003-02-25 02:08:05 +00:00
|
|
|
"Print info level %d", level);
|
2003-01-30 05:11:33 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
subtree = proto_item_add_subtree(
|
|
|
|
item, ett_PRINTER_INFO);
|
2003-01-30 05:11:33 +00:00
|
|
|
break;
|
|
|
|
}
|
2002-04-03 23:32:23 +00:00
|
|
|
|
2003-01-30 05:11:33 +00:00
|
|
|
switch(level) {
|
|
|
|
case 0:
|
|
|
|
dissect_PRINTER_INFO_0(
|
|
|
|
buffer.tvb, 0, pinfo, subtree, drep);
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
dissect_PRINTER_INFO_1(
|
|
|
|
buffer.tvb, 0, pinfo, subtree, drep);
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
dissect_PRINTER_INFO_2(
|
|
|
|
buffer.tvb, 0, pinfo, subtree, drep);
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
dissect_PRINTER_INFO_3(
|
|
|
|
buffer.tvb, 0, pinfo, subtree, drep);
|
|
|
|
break;
|
|
|
|
case 7:
|
|
|
|
dissect_PRINTER_INFO_7(
|
|
|
|
buffer.tvb, 0, pinfo, subtree, drep);
|
|
|
|
break;
|
|
|
|
default:
|
2003-02-25 02:08:05 +00:00
|
|
|
proto_tree_add_text(
|
|
|
|
buffer.tree, buffer.tvb, 0, -1,
|
|
|
|
"[Unknown printer info level %d]", level);
|
2003-01-30 05:11:33 +00:00
|
|
|
break;
|
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
}
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_needed, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-05-01 05:28:56 +00:00
|
|
|
/*
|
|
|
|
* SEC_DESC_BUF
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_SEC_DESC_BUF = -1;
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
static int hf_secdescbuf_maxlen = -1;
|
|
|
|
static int hf_secdescbuf_undoc = -1;
|
|
|
|
static int hf_secdescbuf_len = -1;
|
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
static int
|
|
|
|
dissect_SEC_DESC_BUF(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-05-01 05:28:56 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
guint32 len;
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
/* XXX: I think this is really a array of bytes which can be
|
|
|
|
dissected using dissect_ndr_cvstring(). The dissected data
|
|
|
|
can be passed to dissect_nt_sec_desc(). The problem is that
|
|
|
|
dissect_nt_cvstring() passes back a char * where it really
|
|
|
|
should pass back a tvb. */
|
2003-01-11 04:40:21 +00:00
|
|
|
|
2003-02-25 02:08:05 +00:00
|
|
|
item = proto_tree_add_text(
|
|
|
|
tree, tvb, offset, 0, "Security descriptor buffer");
|
2002-05-01 05:28:56 +00:00
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_SEC_DESC_BUF);
|
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_secdescbuf_maxlen, NULL);
|
2003-01-11 04:40:21 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_secdescbuf_undoc, NULL);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_secdescbuf_len, &len);
|
2003-01-11 04:40:21 +00:00
|
|
|
|
2003-02-07 06:04:28 +00:00
|
|
|
dissect_nt_sec_desc(
|
Don't ensure all the bytes of a security descriptor exist before calling
"dissect_nt_sec_desc()". Add a Boolean argument to
"dissect_nt_sec_desc()" to indicate whether a length was passed to it
(so we don't treat -1 as a special value; we want to stop treating -1 as
a special length value, and, in fact, want to stop treating *any*
negative length values specially, so that we don't have to worry about
passing arbitrary 32-bit values from packets as lengths), and have
"dissect_nt_sec_desc()" initially create the protocol tree item for the
security descriptor with a length of "go to the end of the tvbuff", and
set the length once we're done dissecting it - and, if the length was
specified, check at *that* point, *after* we've dissected the security
descriptor, whether we have the entire security descriptor in the
tvbuff.
That means that we don't have to worry about overflows after
"dissect_nt_sec_desc()" returns - if the length was so large that we
would have gotten an overflow, we'd have thrown an exception in the
"tvb_ensure_bytes_exist()" call at the end of "dissect_nt_sec_desc()".
Do sanity checks on offsets within the security descriptor, so we know
the item referred to by the offset is after the fixed-length portion of
the descriptor.
svn path=/trunk/; revision=16113
2005-10-04 10:23:40 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, TRUE, len,
|
2003-05-15 02:15:13 +00:00
|
|
|
&spoolss_printer_access_mask_info);
|
2002-05-01 05:28:56 +00:00
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
offset += len;
|
2002-05-01 05:28:56 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/*
|
|
|
|
* SPOOL_PRINTER_INFO_LEVEL
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_SPOOL_PRINTER_INFO_LEVEL = -1;
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
/* spool printer info */
|
|
|
|
|
|
|
|
static int hf_spool_printer_info_devmode_ptr = -1;
|
|
|
|
static int hf_spool_printer_info_secdesc_ptr = -1;
|
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
static int
|
|
|
|
dissect_SPOOL_PRINTER_INFO(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
2002-04-29 08:20:18 +00:00
|
|
|
guint32 level;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-25 02:08:05 +00:00
|
|
|
item = proto_tree_add_text(
|
|
|
|
tree, tvb, offset, 0, "Spool printer info level");
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_SPOOL_PRINTER_INFO_LEVEL);
|
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_level, &level);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
switch(level) {
|
2002-05-01 05:28:56 +00:00
|
|
|
case 3: {
|
2003-01-11 04:40:21 +00:00
|
|
|
guint32 devmode_ptr, secdesc_ptr;
|
2002-05-01 05:28:56 +00:00
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
/* I can't seem to get this working with the correct
|
|
|
|
dissect_ndr_pointer() function so let's cheat and
|
|
|
|
dissect the pointers by hand. )-: */
|
2002-05-01 05:28:56 +00:00
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_spool_printer_info_devmode_ptr,
|
2003-01-11 04:40:21 +00:00
|
|
|
&devmode_ptr);
|
2002-05-01 05:28:56 +00:00
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_spool_printer_info_secdesc_ptr,
|
2003-01-11 04:40:21 +00:00
|
|
|
&secdesc_ptr);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
if (devmode_ptr)
|
|
|
|
offset = dissect_DEVMODE_CTR(
|
|
|
|
tvb, offset, pinfo, subtree, drep);
|
2002-06-24 00:03:18 +00:00
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
if (secdesc_ptr)
|
|
|
|
offset = dissect_SEC_DESC_BUF(
|
|
|
|
tvb, offset, pinfo, subtree, drep);
|
2002-05-01 05:28:56 +00:00
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 2:
|
2002-05-01 05:28:56 +00:00
|
|
|
default:
|
2003-02-25 02:08:05 +00:00
|
|
|
proto_tree_add_text(
|
|
|
|
subtree, tvb, offset, 0,
|
|
|
|
"[Unknown spool printer info level %d]", level);
|
2002-08-28 21:04:11 +00:00
|
|
|
break;
|
2002-05-01 05:28:56 +00:00
|
|
|
}
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* SpoolssSetPrinter
|
|
|
|
*/
|
|
|
|
|
2003-02-11 03:22:59 +00:00
|
|
|
static int hf_setprinter_cmd = -1;
|
|
|
|
|
|
|
|
static const value_string setprinter_cmd_vals[] = {
|
|
|
|
{ SPOOLSS_PRINTER_CONTROL_UNPAUSE, "Unpause" },
|
|
|
|
{ SPOOLSS_PRINTER_CONTROL_PAUSE, "Pause" },
|
|
|
|
{ SPOOLSS_PRINTER_CONTROL_RESUME, "Resume" },
|
|
|
|
{ SPOOLSS_PRINTER_CONTROL_PURGE, "Purge" },
|
|
|
|
{ SPOOLSS_PRINTER_CONTROL_SET_STATUS, "Set status" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
static int SpoolssSetPrinter_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
guint32 level;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2002-06-28 01:23:26 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-06-28 01:23:26 +00:00
|
|
|
FALSE, FALSE);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-11 00:42:12 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_level, &level);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", level %d", level);
|
|
|
|
|
2003-01-11 04:40:21 +00:00
|
|
|
offset = dissect_SPOOL_PRINTER_INFO(
|
|
|
|
tvb, offset, pinfo, tree, drep);
|
|
|
|
|
2002-06-24 04:36:56 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-11 03:22:59 +00:00
|
|
|
hf_setprinter_cmd, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
static int SpoolssSetPrinter_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-03-26 04:29:17 +00:00
|
|
|
/*
|
|
|
|
* FORM_REL
|
|
|
|
*/
|
|
|
|
|
2002-04-09 04:41:40 +00:00
|
|
|
static const value_string form_type_vals[] =
|
|
|
|
{
|
2002-08-29 19:05:41 +00:00
|
|
|
{ SPOOLSS_FORM_USER, "User" },
|
|
|
|
{ SPOOLSS_FORM_BUILTIN, "Builtin" },
|
|
|
|
{ SPOOLSS_FORM_PRINTER, "Printer" },
|
2002-04-09 04:41:40 +00:00
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
2002-03-26 04:29:17 +00:00
|
|
|
static gint ett_FORM_REL = -1;
|
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
static int dissect_FORM_REL(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep, int struct_start)
|
2002-03-26 04:29:17 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
2002-04-09 04:41:40 +00:00
|
|
|
guint32 flags;
|
2002-07-09 14:24:39 +00:00
|
|
|
int item_start = offset;
|
2003-02-10 02:11:36 +00:00
|
|
|
char *name = NULL;
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2003-02-10 02:11:36 +00:00
|
|
|
item = proto_tree_add_text(tree, tvb, offset, 0, "Form");
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_FORM_REL);
|
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-10 02:11:36 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_form_flags, &flags);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-10 02:11:36 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_form_name,
|
|
|
|
struct_start, &name);
|
|
|
|
|
|
|
|
if (name) {
|
|
|
|
proto_item_append_text(item, ": %s", name);
|
|
|
|
g_free(name);
|
|
|
|
}
|
2002-07-09 14:24:39 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 02:11:36 +00:00
|
|
|
hf_form_width, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 02:11:36 +00:00
|
|
|
hf_form_height, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 02:11:36 +00:00
|
|
|
hf_form_left_margin, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 02:11:36 +00:00
|
|
|
hf_form_top_margin, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 02:11:36 +00:00
|
|
|
hf_form_horiz_len, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 02:11:36 +00:00
|
|
|
hf_form_vert_len, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
proto_item_set_len(item, offset - item_start);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/*
|
|
|
|
* SpoolssEnumForms
|
|
|
|
*/
|
|
|
|
|
|
|
|
static int SpoolssEnumForms_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
2002-03-26 05:20:51 +00:00
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2002-01-03 20:42:41 +00:00
|
|
|
guint32 level;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-02-10 02:11:36 +00:00
|
|
|
tree, hf_form, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-02-10 02:11:36 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2002-06-28 01:23:26 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-06-28 01:23:26 +00:00
|
|
|
FALSE, FALSE);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-11 00:42:12 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_level, &level);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
/* EnumForms() stores the level in se_data */
|
|
|
|
if(!pinfo->fd->flags.visited){
|
|
|
|
dcv->se_data = GINT_TO_POINTER((int)level);
|
|
|
|
}
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", level %d", level);
|
|
|
|
|
2003-01-11 00:42:12 +00:00
|
|
|
offset = dissect_spoolss_buffer(
|
|
|
|
tvb, offset, pinfo, tree, drep, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_offered, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
static int SpoolssEnumForms_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
2002-03-26 05:20:51 +00:00
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2002-07-09 14:24:39 +00:00
|
|
|
BUFFER buffer;
|
2006-09-16 08:51:03 +00:00
|
|
|
guint32 level = GPOINTER_TO_UINT(dcv->se_data), i, count;
|
2002-07-09 14:24:39 +00:00
|
|
|
int buffer_offset;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-02-10 02:11:36 +00:00
|
|
|
tree, hf_form, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-02-10 02:11:36 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_spoolss_buffer(
|
|
|
|
tvb, offset, pinfo, tree, drep, &buffer);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_needed, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", level %d", level);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-10 02:11:36 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_enumforms_num, &count);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
/* Unfortunately this array isn't in NDR format so we can't
|
|
|
|
use prs_array(). The other weird thing is the
|
|
|
|
struct_start being inside the loop rather than outside.
|
|
|
|
Very strange. */
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-11-19 03:01:18 +00:00
|
|
|
buffer_offset = 0;
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
for (i = 0; i < count; i++) {
|
2002-11-19 03:01:18 +00:00
|
|
|
int struct_start = buffer_offset;
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
buffer_offset = dissect_FORM_REL(
|
2002-12-12 08:05:31 +00:00
|
|
|
buffer.tvb, buffer_offset, pinfo, buffer.tree, drep,
|
2002-07-09 14:24:39 +00:00
|
|
|
struct_start);
|
2002-03-26 04:29:17 +00:00
|
|
|
}
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* SpoolssDeletePrinter
|
|
|
|
*/
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssDeletePrinter_q(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2002-06-28 01:23:26 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-06-28 01:23:26 +00:00
|
|
|
FALSE, FALSE);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssDeletePrinter_r(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2002-06-28 01:23:26 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-06-28 01:23:26 +00:00
|
|
|
FALSE, FALSE);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
static int SpoolssAddPrinterEx_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
2002-03-26 05:20:51 +00:00
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2002-06-28 01:23:26 +00:00
|
|
|
e_ctx_hnd policy_hnd;
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
proto_item *hnd_item;
|
2002-01-03 20:42:41 +00:00
|
|
|
guint32 status;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2002-06-28 01:23:26 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, &hnd_item,
|
2002-06-28 01:23:26 +00:00
|
|
|
TRUE, FALSE);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, &status);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
if( status == 0 ){
|
2007-04-23 10:59:26 +00:00
|
|
|
const char *pol_name;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
if (dcv->se_data){
|
|
|
|
pol_name = ep_strdup_printf(
|
|
|
|
"AddPrinterEx(%s)", (char *)dcv->se_data);
|
|
|
|
} else {
|
|
|
|
pol_name = "Unknown AddPrinterEx() handle";
|
2002-03-26 05:20:51 +00:00
|
|
|
}
|
2006-09-16 08:51:03 +00:00
|
|
|
if(!pinfo->fd->flags.visited){
|
2007-08-28 11:45:08 +00:00
|
|
|
dcerpc_store_polhnd_name(&policy_hnd, pinfo, pol_name);
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
}
|
2006-09-16 08:51:03 +00:00
|
|
|
|
|
|
|
if(hnd_item)
|
|
|
|
proto_item_append_text(hnd_item, ": %s", pol_name);
|
2002-01-03 20:42:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* SpoolssEnumPrinterData
|
|
|
|
*/
|
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
static int hf_enumprinterdata_enumindex = -1;
|
|
|
|
static int hf_enumprinterdata_value_offered = -1;
|
|
|
|
static int hf_enumprinterdata_data_offered = -1;
|
|
|
|
static int hf_enumprinterdata_value_len = -1;
|
|
|
|
static int hf_enumprinterdata_value_needed = -1;
|
|
|
|
static int hf_enumprinterdata_data_needed = -1;
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssEnumPrinterData_q(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2002-05-20 00:36:04 +00:00
|
|
|
guint32 ndx;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2002-05-20 00:36:04 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-05-20 00:36:04 +00:00
|
|
|
FALSE, FALSE);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
|
|
|
hf_enumprinterdata_enumindex, &ndx);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-05-20 00:36:04 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", index %d", ndx);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
|
|
|
hf_enumprinterdata_value_offered, NULL);
|
2002-05-20 00:36:04 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
|
|
|
hf_enumprinterdata_data_offered, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssEnumPrinterData_r(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2003-01-28 22:51:54 +00:00
|
|
|
guint32 value_len, type;
|
2003-01-11 00:42:12 +00:00
|
|
|
char *value;
|
2002-05-20 00:36:04 +00:00
|
|
|
proto_item *value_item;
|
|
|
|
proto_tree *value_subtree;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2002-05-20 00:36:04 +00:00
|
|
|
value_item = proto_tree_add_text(tree, tvb, offset, 0, "Value");
|
|
|
|
|
2003-01-11 00:42:12 +00:00
|
|
|
value_subtree = proto_item_add_subtree(
|
|
|
|
value_item, ett_printerdata_value);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2003-01-11 00:42:12 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, value_subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_enumprinterdata_value_len, &value_len);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
if (value_len) {
|
|
|
|
dissect_spoolss_uint16uni(
|
|
|
|
tvb, offset, pinfo, value_subtree, drep, &value,
|
|
|
|
"Value name");
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
offset += value_len * 2;
|
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO) && value && value[0])
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", value);
|
|
|
|
|
|
|
|
proto_item_append_text(value_item, ": %s", value);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_string(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata_value, tvb, offset, 0, value);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
|
|
|
g_free(value);
|
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-11 00:42:12 +00:00
|
|
|
proto_item_set_len(value_item, value_len * 2 + 4);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-05 00:36:35 +00:00
|
|
|
tvb, offset, pinfo, value_subtree, drep,
|
2003-01-28 22:51:54 +00:00
|
|
|
hf_enumprinterdata_value_needed, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_printerdata_type, &type);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
offset = dissect_printerdata_data(
|
|
|
|
tvb, offset, pinfo, tree, drep, type);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
|
|
|
hf_enumprinterdata_data_needed, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
offset = dissect_doserror(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* SpoolssEnumPrinters
|
|
|
|
*/
|
|
|
|
|
2002-08-27 07:38:36 +00:00
|
|
|
static gint ett_enumprinters_flags = -1;
|
|
|
|
|
2003-01-10 05:41:29 +00:00
|
|
|
static int hf_enumprinters_flags = -1;
|
2002-08-27 07:38:36 +00:00
|
|
|
static int hf_enumprinters_flags_local = -1;
|
|
|
|
static int hf_enumprinters_flags_name = -1;
|
|
|
|
static int hf_enumprinters_flags_shared = -1;
|
|
|
|
static int hf_enumprinters_flags_default = -1;
|
|
|
|
static int hf_enumprinters_flags_connections = -1;
|
|
|
|
static int hf_enumprinters_flags_network = -1;
|
|
|
|
static int hf_enumprinters_flags_remote = -1;
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
static int SpoolssEnumPrinters_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2003-01-10 05:41:29 +00:00
|
|
|
guint32 level, flags;
|
2002-08-27 07:38:36 +00:00
|
|
|
proto_tree *flags_subtree;
|
|
|
|
proto_item *flags_item;
|
2007-11-26 16:38:26 +00:00
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-01-10 05:41:29 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, NULL, drep,
|
|
|
|
hf_enumprinters_flags, &flags);
|
2002-08-27 07:38:36 +00:00
|
|
|
|
|
|
|
flags_item = proto_tree_add_text(tree, tvb, offset - 4, 4,
|
|
|
|
"Flags: 0x%08x", flags);
|
|
|
|
|
|
|
|
flags_subtree = proto_item_add_subtree(
|
|
|
|
flags_item, ett_enumprinters_flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
flags_subtree, hf_enumprinters_flags_network, tvb,
|
|
|
|
offset - 4, 4, flags);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-08-27 07:38:36 +00:00
|
|
|
proto_tree_add_boolean(
|
|
|
|
flags_subtree, hf_enumprinters_flags_shared, tvb,
|
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
flags_subtree, hf_enumprinters_flags_remote, tvb,
|
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
flags_subtree, hf_enumprinters_flags_name, tvb,
|
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
flags_subtree, hf_enumprinters_flags_connections, tvb,
|
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
flags_subtree, hf_enumprinters_flags_local, tvb,
|
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
|
|
|
proto_tree_add_boolean(
|
|
|
|
flags_subtree, hf_enumprinters_flags_default, tvb,
|
|
|
|
offset - 4, 4, flags);
|
|
|
|
|
2003-01-28 06:42:20 +00:00
|
|
|
offset = dissect_ndr_str_pointer_item(
|
2003-01-10 05:41:29 +00:00
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
NDR_POINTER_UNIQUE, "Server name", hf_servername, 0);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-01-10 05:41:29 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_level, &level);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2007-11-26 16:38:26 +00:00
|
|
|
/* GetPrinter() stores the level in se_data */
|
|
|
|
if(!pinfo->fd->flags.visited){
|
|
|
|
dcv->se_data = GINT_TO_POINTER((int)level);
|
|
|
|
}
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
2003-01-10 05:41:29 +00:00
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", level %d", level);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2003-01-10 05:41:29 +00:00
|
|
|
offset = dissect_spoolss_buffer(
|
|
|
|
tvb, offset, pinfo, tree, drep, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_offered, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
static int SpoolssEnumPrinters_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-01-03 20:42:41 +00:00
|
|
|
{
|
2002-11-11 05:39:51 +00:00
|
|
|
guint32 num_drivers;
|
2007-11-26 16:38:26 +00:00
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
|
|
|
gint16 level = GPOINTER_TO_INT(dcv->se_data);
|
|
|
|
BUFFER buffer;
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree = NULL;
|
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", level %d", level);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-01-10 05:41:29 +00:00
|
|
|
offset = dissect_spoolss_buffer(
|
2007-11-26 16:38:26 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, &buffer);
|
|
|
|
|
|
|
|
if (buffer.tvb) {
|
|
|
|
switch(level) {
|
|
|
|
case 0:
|
|
|
|
case 1:
|
|
|
|
case 2:
|
|
|
|
case 3:
|
|
|
|
case 7:
|
|
|
|
item = proto_tree_add_text(
|
|
|
|
buffer.tree, buffer.tvb, 0, -1,
|
|
|
|
"Printer info level %d", level);
|
|
|
|
subtree = proto_item_add_subtree(
|
|
|
|
item, ett_PRINTER_INFO);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
switch(level) {
|
|
|
|
case 0:
|
|
|
|
dissect_PRINTER_INFO_0(
|
|
|
|
buffer.tvb, 0, pinfo, subtree, drep);
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
dissect_PRINTER_INFO_1(
|
|
|
|
buffer.tvb, 0, pinfo, subtree, drep);
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
dissect_PRINTER_INFO_2(
|
|
|
|
buffer.tvb, 0, pinfo, subtree, drep);
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
dissect_PRINTER_INFO_3(
|
|
|
|
buffer.tvb, 0, pinfo, subtree, drep);
|
|
|
|
break;
|
|
|
|
case 7:
|
|
|
|
dissect_PRINTER_INFO_7(
|
|
|
|
buffer.tvb, 0, pinfo, subtree, drep);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
proto_tree_add_text(
|
|
|
|
buffer.tree, buffer.tvb, 0, -1,
|
|
|
|
"[Unknown printer info level %d]", level);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_needed, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_returned,
|
2002-11-11 05:39:51 +00:00
|
|
|
&num_drivers);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-01-03 20:42:41 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-03 20:42:41 +00:00
|
|
|
|
2002-01-07 19:55:48 +00:00
|
|
|
/*
|
|
|
|
* AddPrinterDriver
|
|
|
|
*/
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssAddPrinterDriver_r(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep _U_)
|
2002-01-07 19:55:48 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-01-07 19:55:48 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-07 19:55:48 +00:00
|
|
|
|
2002-03-26 04:29:17 +00:00
|
|
|
/*
|
|
|
|
* FORM_1
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_FORM_1 = -1;
|
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
static int dissect_FORM_1(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-03-26 04:29:17 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
2002-07-09 14:24:39 +00:00
|
|
|
guint32 flags;
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2003-02-25 02:08:05 +00:00
|
|
|
item = proto_tree_add_text(tree, tvb, offset, 0, "Form level 1");
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_FORM_1);
|
|
|
|
|
2003-01-28 06:42:20 +00:00
|
|
|
offset = dissect_ndr_str_pointer_item(
|
|
|
|
tvb, offset, pinfo, subtree, drep, NDR_POINTER_UNIQUE,
|
2003-02-10 02:11:36 +00:00
|
|
|
"Name", hf_form_name, 0);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
/* Eek - we need to know whether this pointer was NULL or not.
|
|
|
|
Currently there is not any way to do this. */
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
if (tvb_length_remaining(tvb, offset) == 0)
|
|
|
|
goto done;
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-10 02:11:36 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_form_flags, &flags);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 02:11:36 +00:00
|
|
|
hf_form_unknown, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 02:11:36 +00:00
|
|
|
hf_form_width, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 02:11:36 +00:00
|
|
|
hf_form_height, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 02:11:36 +00:00
|
|
|
hf_form_left_margin, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 02:11:36 +00:00
|
|
|
hf_form_top_margin, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 02:11:36 +00:00
|
|
|
hf_form_horiz_len, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 02:11:36 +00:00
|
|
|
hf_form_vert_len, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
done:
|
2002-03-26 04:29:17 +00:00
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* FORM_CTR
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_FORM_CTR = -1;
|
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
static int dissect_FORM_CTR(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-03-26 04:29:17 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
guint32 level;
|
|
|
|
|
2003-02-25 02:08:05 +00:00
|
|
|
item = proto_tree_add_text(tree, tvb, offset, 0, "Form container");
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_FORM_CTR);
|
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-10 02:11:36 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_form_level, &level);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
switch(level) {
|
|
|
|
case 1:
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_FORM_1(tvb, offset, pinfo, subtree, drep);
|
2002-03-26 04:29:17 +00:00
|
|
|
break;
|
2002-07-09 14:24:39 +00:00
|
|
|
|
2002-03-26 04:29:17 +00:00
|
|
|
default:
|
2003-02-25 02:08:05 +00:00
|
|
|
proto_tree_add_text(
|
|
|
|
subtree, tvb, offset, 0,
|
|
|
|
"[Unknown form info level %d]", level);
|
2002-03-26 04:29:17 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-01-07 19:55:48 +00:00
|
|
|
/*
|
|
|
|
* AddForm
|
|
|
|
*/
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssAddForm_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-03-26 04:29:17 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
2002-03-26 05:20:51 +00:00
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2002-03-26 04:29:17 +00:00
|
|
|
guint32 level;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-02-10 02:11:36 +00:00
|
|
|
tree, hf_form, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-02-10 02:11:36 +00:00
|
|
|
|
2002-03-26 04:29:17 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2002-06-28 01:23:26 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-06-28 01:23:26 +00:00
|
|
|
FALSE, FALSE);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-10 02:11:36 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_form_level, &level);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", level %d", level);
|
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
/* AddForm() stores the level in se_data */
|
|
|
|
if(!pinfo->fd->flags.visited){
|
|
|
|
dcv->se_data = GUINT_TO_POINTER((int)level);
|
|
|
|
}
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_FORM_CTR(tvb, offset, pinfo, tree, drep);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-01-07 19:55:48 +00:00
|
|
|
static int SpoolssAddForm_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-01-07 19:55:48 +00:00
|
|
|
{
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
|
|
|
|
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-02-10 02:11:36 +00:00
|
|
|
tree, hf_form, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-02-10 02:11:36 +00:00
|
|
|
|
2002-01-07 19:55:48 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-01-07 19:55:48 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-01-07 19:55:48 +00:00
|
|
|
|
2002-03-26 04:29:17 +00:00
|
|
|
/*
|
|
|
|
* DeleteForm
|
|
|
|
*/
|
|
|
|
|
|
|
|
static int SpoolssDeleteForm_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-03-26 04:29:17 +00:00
|
|
|
{
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2003-02-10 02:11:36 +00:00
|
|
|
char *name = NULL;
|
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-02-10 02:11:36 +00:00
|
|
|
tree, hf_form, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-02-10 02:11:36 +00:00
|
|
|
|
2002-03-26 04:29:17 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2002-06-28 01:23:26 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-06-28 01:23:26 +00:00
|
|
|
FALSE, FALSE);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2003-02-10 02:11:36 +00:00
|
|
|
offset = dissect_ndr_cvstring(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
|
|
|
sizeof(guint16), hf_form_name, TRUE, &name);
|
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO) && name)
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", name);
|
2002-03-26 05:20:51 +00:00
|
|
|
|
2003-02-10 02:11:36 +00:00
|
|
|
g_free(name);
|
|
|
|
|
2002-03-26 04:29:17 +00:00
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
static int SpoolssDeleteForm_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-03-26 04:29:17 +00:00
|
|
|
{
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
|
|
|
|
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-02-10 02:11:36 +00:00
|
|
|
tree, hf_form, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-02-10 02:11:36 +00:00
|
|
|
|
2002-03-26 04:29:17 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* SetForm
|
|
|
|
*/
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssSetForm_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-03-26 04:29:17 +00:00
|
|
|
{
|
2003-02-10 02:11:36 +00:00
|
|
|
char *name = NULL;
|
2002-03-26 04:29:17 +00:00
|
|
|
guint32 level;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-02-10 02:11:36 +00:00
|
|
|
tree, hf_form, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-02-10 02:11:36 +00:00
|
|
|
|
2002-03-26 04:29:17 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2002-06-28 01:23:26 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-06-28 01:23:26 +00:00
|
|
|
FALSE, FALSE);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2003-02-10 02:11:36 +00:00
|
|
|
offset = dissect_ndr_cvstring(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
|
|
|
sizeof(guint16), hf_form_name, TRUE, &name);
|
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO) && name)
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", name);
|
|
|
|
|
|
|
|
g_free(name);
|
2002-03-26 05:20:51 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-10 02:11:36 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_form_level, &level);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
2002-07-09 14:24:39 +00:00
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", level %d", level);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_FORM_CTR(tvb, offset, pinfo, tree, drep);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-03-26 04:29:17 +00:00
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
static int SpoolssSetForm_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-03-26 04:29:17 +00:00
|
|
|
{
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
|
|
|
|
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-02-10 02:11:36 +00:00
|
|
|
tree, hf_form, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-02-10 02:11:36 +00:00
|
|
|
|
2002-03-26 04:29:17 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* GetForm
|
|
|
|
*/
|
|
|
|
|
|
|
|
static int SpoolssGetForm_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-03-26 04:29:17 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
2002-03-26 05:20:51 +00:00
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-03-26 05:20:51 +00:00
|
|
|
guint32 level;
|
2003-02-10 02:11:36 +00:00
|
|
|
char *name;
|
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-02-10 02:11:36 +00:00
|
|
|
tree, hf_form, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2002-06-28 01:23:26 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-06-28 01:23:26 +00:00
|
|
|
FALSE, FALSE);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2003-02-10 02:11:36 +00:00
|
|
|
offset = dissect_ndr_cvstring(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
|
|
|
sizeof(guint16), hf_form_name, TRUE, &name);
|
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", name);
|
2002-03-26 05:20:51 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-10 02:11:36 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_form_level, &level);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
/* GetForm() stores the level in se_data */
|
|
|
|
if(!pinfo->fd->flags.visited){
|
|
|
|
dcv->se_data = GUINT_TO_POINTER((int)level);
|
|
|
|
}
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
2002-07-09 14:24:39 +00:00
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", level %d",
|
|
|
|
level);
|
2002-03-26 05:20:51 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_spoolss_buffer(tvb, offset, pinfo, tree, drep, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_offered, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
static int SpoolssGetForm_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-03-26 04:29:17 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
2002-03-26 05:20:51 +00:00
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2002-07-09 14:24:39 +00:00
|
|
|
BUFFER buffer;
|
2006-09-16 08:51:03 +00:00
|
|
|
guint32 level = GPOINTER_TO_UINT(dcv->se_data);
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-02-10 02:11:36 +00:00
|
|
|
tree, hf_form, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-02-10 02:11:36 +00:00
|
|
|
|
2002-03-26 04:29:17 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_spoolss_buffer(
|
|
|
|
tvb, offset, pinfo, tree, drep, &buffer);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_needed, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", level %d", level);
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2003-01-30 05:11:33 +00:00
|
|
|
if (buffer.tvb) {
|
|
|
|
int buffer_offset = 0;
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2003-01-30 05:11:33 +00:00
|
|
|
switch(level) {
|
|
|
|
case 1: {
|
|
|
|
int struct_start = buffer_offset;
|
|
|
|
|
|
|
|
buffer_offset = dissect_FORM_REL(
|
|
|
|
buffer.tvb, buffer_offset, pinfo, tree, drep,
|
|
|
|
struct_start);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
default:
|
|
|
|
proto_tree_add_text(
|
|
|
|
buffer.tree, buffer.tvb, buffer_offset, -1,
|
2003-02-25 02:08:05 +00:00
|
|
|
"[Unknown form info level %d]", level);
|
2003-01-30 05:11:33 +00:00
|
|
|
break;
|
|
|
|
}
|
2002-07-09 14:24:39 +00:00
|
|
|
}
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
|
2002-03-25 01:09:01 +00:00
|
|
|
/* A generic reply function that just parses the status code. Useful for
|
|
|
|
unimplemented dissectors so the status code can be inserted into the
|
|
|
|
INFO column. */
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssGeneric_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-03-25 01:09:01 +00:00
|
|
|
{
|
|
|
|
int len = tvb_length(tvb);
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
proto_tree_add_text(tree, tvb, offset, 0,
|
2002-03-25 01:09:01 +00:00
|
|
|
"[Unimplemented dissector: SPOOLSS]");
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, len - 4, pinfo, tree, drep, hf_rc, NULL);
|
2002-03-25 01:09:01 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-04-24 03:08:49 +00:00
|
|
|
/*
|
|
|
|
* JOB_INFO_1
|
|
|
|
*/
|
|
|
|
|
2009-08-04 18:48:45 +00:00
|
|
|
static gint ett_JOB_INFO_1 = -1;
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
static int
|
2002-08-28 21:04:11 +00:00
|
|
|
dissect_spoolss_JOB_INFO_1(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-04-24 03:08:49 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
2002-05-10 02:41:48 +00:00
|
|
|
int struct_start = offset;
|
|
|
|
char *document_name;
|
2002-04-24 03:08:49 +00:00
|
|
|
|
2003-02-25 02:08:05 +00:00
|
|
|
item = proto_tree_add_text(tree, tvb, offset, 0, "Job info level 1");
|
2002-04-24 03:08:49 +00:00
|
|
|
|
2002-05-10 02:41:48 +00:00
|
|
|
subtree = proto_item_add_subtree(item, ett_JOB_INFO_1);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, subtree, drep,
|
2003-02-05 06:55:56 +00:00
|
|
|
hf_job_id, NULL);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_printername,
|
2002-05-10 02:41:48 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_servername,
|
2002-05-10 02:41:48 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_username,
|
2002-05-10 02:41:48 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_documentname,
|
2002-05-10 02:41:48 +00:00
|
|
|
struct_start, &document_name);
|
|
|
|
|
|
|
|
proto_item_append_text(item, ": %s", document_name);
|
|
|
|
g_free(document_name);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_datatype,
|
2002-05-10 02:41:48 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_textstatus,
|
2002-05-10 02:41:48 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
2002-06-17 06:45:42 +00:00
|
|
|
offset = dissect_job_status(tvb, offset, pinfo, subtree, drep);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, subtree, drep,
|
2003-02-05 06:55:56 +00:00
|
|
|
hf_job_priority, NULL);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, subtree, drep,
|
2003-02-05 06:55:56 +00:00
|
|
|
hf_job_position, NULL);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, subtree, drep,
|
2003-02-05 06:55:56 +00:00
|
|
|
hf_job_totalpages, NULL);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, subtree, drep,
|
2003-02-05 06:55:56 +00:00
|
|
|
hf_job_pagesprinted, NULL);
|
|
|
|
|
2003-02-11 03:22:59 +00:00
|
|
|
offset = dissect_SYSTEM_TIME(
|
|
|
|
tvb, offset, pinfo, subtree, drep, "Job Submission Time",
|
|
|
|
TRUE, NULL);
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
proto_item_set_len(item, offset - struct_start);
|
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* JOB_INFO_2
|
|
|
|
*/
|
|
|
|
|
2009-08-04 18:48:45 +00:00
|
|
|
static gint ett_JOB_INFO_2 = -1;
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
static int
|
|
|
|
dissect_spoolss_JOB_INFO_2(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2003-02-05 06:55:56 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
int struct_start = offset;
|
|
|
|
char *document_name;
|
|
|
|
guint32 devmode_offset, secdesc_offset;
|
|
|
|
|
2003-02-25 02:08:05 +00:00
|
|
|
item = proto_tree_add_text(tree, tvb, offset, 0, "Job info level 2");
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_JOB_INFO_2);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, subtree, drep,
|
|
|
|
hf_job_id, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_printername,
|
2003-02-05 06:55:56 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_machinename,
|
2003-02-05 06:55:56 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_username,
|
2003-02-05 06:55:56 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_documentname,
|
2003-02-05 06:55:56 +00:00
|
|
|
struct_start, &document_name);
|
|
|
|
|
|
|
|
proto_item_append_text(item, ": %s", document_name);
|
|
|
|
g_free(document_name);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_notifyname,
|
2003-02-05 06:55:56 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_datatype,
|
2003-02-05 06:55:56 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_printprocessor,
|
2003-02-05 06:55:56 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_parameters,
|
2003-02-05 06:55:56 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_drivername,
|
2003-02-05 06:55:56 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, NULL, drep, hf_offset,
|
2003-02-05 06:55:56 +00:00
|
|
|
&devmode_offset);
|
|
|
|
|
|
|
|
dissect_DEVMODE(
|
|
|
|
tvb, devmode_offset - 4 + struct_start, pinfo, subtree, drep);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_textstatus,
|
2003-02-05 06:55:56 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, NULL, drep, hf_offset,
|
2003-02-05 06:55:56 +00:00
|
|
|
&secdesc_offset);
|
|
|
|
|
|
|
|
dissect_nt_sec_desc(
|
2003-02-07 06:04:28 +00:00
|
|
|
tvb, secdesc_offset, pinfo, subtree, drep,
|
Don't ensure all the bytes of a security descriptor exist before calling
"dissect_nt_sec_desc()". Add a Boolean argument to
"dissect_nt_sec_desc()" to indicate whether a length was passed to it
(so we don't treat -1 as a special value; we want to stop treating -1 as
a special length value, and, in fact, want to stop treating *any*
negative length values specially, so that we don't have to worry about
passing arbitrary 32-bit values from packets as lengths), and have
"dissect_nt_sec_desc()" initially create the protocol tree item for the
security descriptor with a length of "go to the end of the tvbuff", and
set the length once we're done dissecting it - and, if the length was
specified, check at *that* point, *after* we've dissected the security
descriptor, whether we have the entire security descriptor in the
tvbuff.
That means that we don't have to worry about overflows after
"dissect_nt_sec_desc()" returns - if the length was so large that we
would have gotten an overflow, we'd have thrown an exception in the
"tvb_ensure_bytes_exist()" call at the end of "dissect_nt_sec_desc()".
Do sanity checks on offsets within the security descriptor, so we know
the item referred to by the offset is after the fixed-length portion of
the descriptor.
svn path=/trunk/; revision=16113
2005-10-04 10:23:40 +00:00
|
|
|
FALSE, -1,
|
2003-05-15 02:15:13 +00:00
|
|
|
&spoolss_job_access_mask_info);
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
offset = dissect_job_status(tvb, offset, pinfo, subtree, drep);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_job_priority, NULL);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_job_position, NULL);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, NULL, drep, hf_start_time, NULL);
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, NULL, drep, hf_end_time, NULL);
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_job_totalpages, NULL);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_job_size, NULL);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2003-02-11 03:22:59 +00:00
|
|
|
offset = dissect_SYSTEM_TIME(
|
|
|
|
tvb, offset, pinfo, subtree, drep, "Job Submission Time",
|
|
|
|
TRUE, NULL);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2003-02-05 06:55:56 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, NULL, drep, hf_elapsed_time, NULL);
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_job_pagesprinted, NULL);
|
|
|
|
|
2002-05-10 02:41:48 +00:00
|
|
|
proto_item_set_len(item, offset - struct_start);
|
2002-04-24 03:08:49 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* EnumJobs
|
|
|
|
*/
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
static int hf_enumjobs_firstjob = -1;
|
|
|
|
static int hf_enumjobs_numjobs = -1;
|
|
|
|
|
2002-04-24 03:08:49 +00:00
|
|
|
static int SpoolssEnumJobs_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-04-24 03:08:49 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
|
|
|
guint32 level;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
hf_hnd, NULL, NULL, FALSE, FALSE);
|
2002-04-24 03:08:49 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_enumjobs_firstjob, NULL);
|
2002-04-24 03:08:49 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_enumjobs_numjobs, NULL);
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_level, &level);
|
2002-04-24 03:08:49 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
/* EnumJobs() stores the level in se_data */
|
|
|
|
if(!pinfo->fd->flags.visited){
|
|
|
|
dcv->se_data = GUINT_TO_POINTER((int)level);
|
|
|
|
}
|
2002-04-24 03:08:49 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", level %d", level);
|
|
|
|
|
2002-05-10 02:41:48 +00:00
|
|
|
offset = dissect_spoolss_buffer(tvb, offset, pinfo, tree, drep, NULL);
|
2002-04-24 03:08:49 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_offered, NULL);
|
2002-04-24 03:08:49 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-04-24 03:08:49 +00:00
|
|
|
|
|
|
|
static int SpoolssEnumJobs_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep _U_)
|
2002-04-24 03:08:49 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2006-09-16 08:51:03 +00:00
|
|
|
gint16 level = GPOINTER_TO_UINT(dcv->se_data);
|
2002-05-10 02:41:48 +00:00
|
|
|
BUFFER buffer;
|
|
|
|
guint32 num_jobs, i;
|
|
|
|
int buffer_offset;
|
2002-04-24 03:08:49 +00:00
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_spoolss_buffer(
|
|
|
|
tvb, offset, pinfo, tree, drep, &buffer);
|
2002-04-24 03:08:49 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_needed, NULL);
|
2002-04-24 03:08:49 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_enumjobs_numjobs,
|
|
|
|
&num_jobs);
|
2002-04-24 03:08:49 +00:00
|
|
|
|
2002-11-19 03:01:18 +00:00
|
|
|
buffer_offset = 0;
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
for (i = 0; i < num_jobs; i++) {
|
|
|
|
switch(level) {
|
|
|
|
case 1:
|
|
|
|
buffer_offset = dissect_spoolss_JOB_INFO_1(
|
2003-02-05 06:55:56 +00:00
|
|
|
buffer.tvb, buffer_offset, pinfo,
|
2002-12-12 08:05:31 +00:00
|
|
|
buffer.tree, drep);
|
2002-05-10 02:41:48 +00:00
|
|
|
break;
|
|
|
|
case 2:
|
2003-02-05 06:55:56 +00:00
|
|
|
buffer_offset = dissect_spoolss_JOB_INFO_2(
|
|
|
|
buffer.tvb, buffer_offset, pinfo,
|
|
|
|
buffer.tree, drep);
|
|
|
|
break;
|
2002-04-24 03:08:49 +00:00
|
|
|
default:
|
|
|
|
proto_tree_add_text(
|
2003-02-05 06:55:56 +00:00
|
|
|
buffer.tree, buffer.tvb, 0, -1,
|
2003-02-25 02:08:05 +00:00
|
|
|
"[Unknown job info level %d]", level);
|
2003-02-14 06:23:45 +00:00
|
|
|
break;
|
2002-04-24 03:08:49 +00:00
|
|
|
}
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2002-04-24 03:08:49 +00:00
|
|
|
}
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-04-24 03:08:49 +00:00
|
|
|
|
2002-05-10 02:41:48 +00:00
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* SetJob
|
|
|
|
*/
|
|
|
|
|
2002-05-11 22:29:43 +00:00
|
|
|
static const value_string setjob_commands[] = {
|
2002-05-10 02:41:48 +00:00
|
|
|
{ JOB_CONTROL_PAUSE, "Pause" },
|
|
|
|
{ JOB_CONTROL_RESUME, "Resume" },
|
|
|
|
{ JOB_CONTROL_CANCEL, "Cancel" },
|
|
|
|
{ JOB_CONTROL_RESTART, "Restart" },
|
|
|
|
{ JOB_CONTROL_DELETE, "Delete" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
static int hf_setjob_cmd = -1;
|
|
|
|
|
2002-05-10 02:41:48 +00:00
|
|
|
static int SpoolssSetJob_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-05-10 02:41:48 +00:00
|
|
|
{
|
|
|
|
guint32 jobid, cmd;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
|
|
|
FALSE, FALSE);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_job_id, &jobid);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_level, NULL);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_setjob_cmd, &cmd);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(
|
|
|
|
pinfo->cinfo, COL_INFO, ", %s jobid %d",
|
2002-06-25 03:01:05 +00:00
|
|
|
val_to_str(cmd, setjob_commands, "Unknown (%d)"),
|
2002-05-10 02:41:48 +00:00
|
|
|
jobid);
|
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
static int SpoolssSetJob_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-05-10 02:41:48 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* GetJob
|
|
|
|
*/
|
|
|
|
|
|
|
|
static int SpoolssGetJob_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-05-10 02:41:48 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
|
|
|
guint32 level, jobid;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
|
|
|
FALSE, FALSE);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_job_id, &jobid);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_level, &level);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
/* GetJob() stores the level in se_data */
|
|
|
|
if(!pinfo->fd->flags.visited){
|
|
|
|
dcv->se_data = GUINT_TO_POINTER((int)level);
|
|
|
|
}
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", level %d, jobid %d",
|
|
|
|
level, jobid);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_buffer(tvb, offset, pinfo, tree, drep, NULL);
|
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_offered, NULL);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
static int SpoolssGetJob_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-05-10 02:41:48 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2006-09-16 08:51:03 +00:00
|
|
|
gint32 level = GPOINTER_TO_UINT(dcv->se_data);
|
2002-05-10 02:41:48 +00:00
|
|
|
BUFFER buffer;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
offset = dissect_spoolss_buffer(tvb, offset, pinfo, tree, drep,
|
2002-05-10 02:41:48 +00:00
|
|
|
&buffer);
|
|
|
|
|
2003-01-30 05:11:33 +00:00
|
|
|
if (buffer.tvb) {
|
|
|
|
int buffer_offset = 0;
|
|
|
|
|
|
|
|
switch(level) {
|
|
|
|
case 1:
|
|
|
|
buffer_offset = dissect_spoolss_JOB_INFO_1(
|
|
|
|
buffer.tvb, buffer_offset, pinfo,
|
|
|
|
buffer.tree, drep);
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
default:
|
|
|
|
proto_tree_add_text(
|
|
|
|
buffer.tree, buffer.tvb, buffer_offset, -1,
|
2003-02-25 02:08:05 +00:00
|
|
|
"[Unknown job info level %d]", level);
|
2003-01-30 05:11:33 +00:00
|
|
|
break;
|
|
|
|
}
|
2002-05-10 02:41:48 +00:00
|
|
|
}
|
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_needed, NULL);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* StartPagePrinter
|
|
|
|
*/
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssStartPagePrinter_q(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-05-10 02:41:48 +00:00
|
|
|
{
|
|
|
|
e_ctx_hnd policy_hnd;
|
|
|
|
char *pol_name;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, NULL,
|
2003-02-14 06:23:45 +00:00
|
|
|
FALSE, FALSE);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2007-08-28 11:45:08 +00:00
|
|
|
dcerpc_fetch_polhnd_data(&policy_hnd, &pol_name, NULL, NULL, NULL,
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
pinfo->fd->num);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO) && pol_name)
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
|
|
|
|
pol_name);
|
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssStartPagePrinter_r(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-05-10 02:41:48 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* EndPagePrinter
|
|
|
|
*/
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssEndPagePrinter_q(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-05-10 02:41:48 +00:00
|
|
|
{
|
|
|
|
e_ctx_hnd policy_hnd;
|
|
|
|
char *pol_name;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, NULL,
|
2003-02-14 06:23:45 +00:00
|
|
|
FALSE, FALSE);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2007-08-28 11:45:08 +00:00
|
|
|
dcerpc_fetch_polhnd_data(&policy_hnd, &pol_name, NULL, NULL, NULL,
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
pinfo->fd->num);
|
2002-05-10 02:41:48 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO) && pol_name)
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
|
|
|
|
pol_name);
|
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-10 02:41:48 +00:00
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssEndPagePrinter_r(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-05-10 02:41:48 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-04-24 03:08:49 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-03-26 04:29:17 +00:00
|
|
|
|
2002-05-13 01:27:07 +00:00
|
|
|
/*
|
|
|
|
* DOC_INFO_1
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_DOC_INFO_1 = -1;
|
|
|
|
|
|
|
|
static int
|
|
|
|
dissect_spoolss_doc_info_1(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-05-13 01:27:07 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
|
2003-02-25 02:08:05 +00:00
|
|
|
item = proto_tree_add_text(
|
|
|
|
tree, tvb, offset, 0, "Document info level 1");
|
2002-05-13 01:27:07 +00:00
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_DOC_INFO_1);
|
|
|
|
|
2003-01-28 06:42:20 +00:00
|
|
|
offset = dissect_ndr_str_pointer_item(
|
|
|
|
tvb, offset, pinfo, subtree, drep, NDR_POINTER_UNIQUE,
|
2003-02-14 06:23:45 +00:00
|
|
|
"Document name", hf_documentname, 0);
|
2002-05-13 01:27:07 +00:00
|
|
|
|
2003-01-28 06:42:20 +00:00
|
|
|
offset = dissect_ndr_str_pointer_item(
|
|
|
|
tvb, offset, pinfo, subtree, drep, NDR_POINTER_UNIQUE,
|
2003-02-14 06:23:45 +00:00
|
|
|
"Output file", hf_outputfile, 0);
|
2002-05-13 01:27:07 +00:00
|
|
|
|
2003-01-28 06:42:20 +00:00
|
|
|
offset = dissect_ndr_str_pointer_item(
|
|
|
|
tvb, offset, pinfo, subtree, drep, NDR_POINTER_UNIQUE,
|
2003-02-14 06:23:45 +00:00
|
|
|
"Data type", hf_datatype, 0);
|
2002-05-13 01:27:07 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
dissect_spoolss_doc_info_data(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-05-13 01:27:07 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = pinfo->private_data;
|
2003-01-28 06:42:20 +00:00
|
|
|
guint32 info_level = 1; /* XXX */
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
if (di->conformant_run)
|
|
|
|
return offset;
|
|
|
|
|
2003-01-28 06:42:20 +00:00
|
|
|
switch(info_level) {
|
2002-05-13 01:27:07 +00:00
|
|
|
case 1:
|
|
|
|
offset = dissect_spoolss_doc_info_1(
|
|
|
|
tvb, offset, pinfo, tree, drep);
|
|
|
|
break;
|
|
|
|
default:
|
2003-02-25 02:08:05 +00:00
|
|
|
proto_tree_add_text(
|
|
|
|
tree, tvb, offset, 0,
|
|
|
|
"[Unknown documentinfo level %d]", info_level);
|
2002-05-13 01:27:07 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* DOC_INFO
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_DOC_INFO = -1;
|
|
|
|
|
|
|
|
static int
|
|
|
|
dissect_spoolss_doc_info(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-05-13 01:27:07 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
guint32 level;
|
|
|
|
|
2003-02-25 02:08:05 +00:00
|
|
|
item = proto_tree_add_text(
|
|
|
|
tree, tvb, offset, 0, "Document info");
|
2002-05-13 01:27:07 +00:00
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_DOC_INFO);
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_level, &level);
|
|
|
|
|
|
|
|
offset = dissect_ndr_pointer(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
|
|
|
dissect_spoolss_doc_info_data,
|
|
|
|
NDR_POINTER_UNIQUE, "Document info", -1);
|
2002-05-13 01:27:07 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* DOC_INFO_CTR
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_DOC_INFO_CTR = -1;
|
|
|
|
|
|
|
|
static int
|
|
|
|
dissect_spoolss_doc_info_ctr(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-05-13 01:27:07 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
|
2003-02-25 02:08:05 +00:00
|
|
|
item = proto_tree_add_text(
|
|
|
|
tree, tvb, offset, 0, "Document info container");
|
2002-05-13 01:27:07 +00:00
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_DOC_INFO_CTR);
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_level, NULL);
|
2002-05-13 01:27:07 +00:00
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
offset = dissect_spoolss_doc_info(
|
|
|
|
tvb, offset, pinfo, subtree, drep);
|
2002-05-13 01:27:07 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* StartDocPrinter
|
|
|
|
*/
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssStartDocPrinter_q(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-05-13 01:27:07 +00:00
|
|
|
{
|
|
|
|
e_ctx_hnd policy_hnd;
|
|
|
|
char *pol_name;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, NULL,
|
2003-02-14 06:23:45 +00:00
|
|
|
FALSE, FALSE);
|
2002-05-13 01:27:07 +00:00
|
|
|
|
2007-08-28 11:45:08 +00:00
|
|
|
dcerpc_fetch_polhnd_data(&policy_hnd, &pol_name, NULL, NULL, NULL,
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
pinfo->fd->num);
|
2002-05-13 01:27:07 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO) && pol_name)
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
|
|
|
|
pol_name);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_doc_info_ctr(tvb, offset, pinfo, tree, drep);
|
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-13 01:27:07 +00:00
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssStartDocPrinter_r(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-05-13 01:27:07 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-02-05 06:55:56 +00:00
|
|
|
hf_job_id, NULL);
|
2002-05-13 01:27:07 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-05-13 01:27:07 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-13 01:27:07 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* EndDocPrinter
|
|
|
|
*/
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssEndDocPrinter_q(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-05-13 01:27:07 +00:00
|
|
|
{
|
|
|
|
e_ctx_hnd policy_hnd;
|
|
|
|
char *pol_name;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, NULL,
|
2003-02-14 06:23:45 +00:00
|
|
|
FALSE, FALSE);
|
2002-05-13 01:27:07 +00:00
|
|
|
|
2007-08-28 11:45:08 +00:00
|
|
|
dcerpc_fetch_polhnd_data(&policy_hnd, &pol_name, NULL, NULL, NULL,
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
pinfo->fd->num);
|
2002-05-13 01:27:07 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO) && pol_name)
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
|
|
|
|
pol_name);
|
|
|
|
|
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-13 01:27:07 +00:00
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssEndDocPrinter_r(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-05-13 01:27:07 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-05-13 01:27:07 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-13 01:27:07 +00:00
|
|
|
|
2002-05-20 00:36:04 +00:00
|
|
|
/*
|
|
|
|
* WritePrinter
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_writeprinter_buffer = -1;
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
static int hf_writeprinter_numwritten = -1;
|
|
|
|
|
2002-05-20 00:36:04 +00:00
|
|
|
static int SpoolssWritePrinter_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-05-20 00:36:04 +00:00
|
|
|
{
|
|
|
|
e_ctx_hnd policy_hnd;
|
|
|
|
char *pol_name;
|
|
|
|
guint32 size;
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, NULL,
|
2003-02-14 06:23:45 +00:00
|
|
|
FALSE, FALSE);
|
2002-05-20 00:36:04 +00:00
|
|
|
|
2007-08-28 11:45:08 +00:00
|
|
|
dcerpc_fetch_polhnd_data(&policy_hnd, &pol_name, NULL, NULL, NULL,
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
pinfo->fd->num);
|
2002-05-20 00:36:04 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO) && pol_name)
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
|
|
|
|
pol_name);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_buffer_size, &size);
|
2002-05-20 00:36:04 +00:00
|
|
|
|
2003-04-10 05:38:43 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %d bytes", size);
|
|
|
|
|
2002-05-20 00:36:04 +00:00
|
|
|
item = proto_tree_add_text(tree, tvb, offset, 0, "Buffer");
|
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_writeprinter_buffer);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint8s(tvb, offset, pinfo, subtree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_buffer_data, size, NULL);
|
2002-05-20 00:36:04 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, subtree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_buffer_size, NULL);
|
2002-05-20 00:36:04 +00:00
|
|
|
|
|
|
|
proto_item_set_len(item, size + 4);
|
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-20 00:36:04 +00:00
|
|
|
|
|
|
|
static int SpoolssWritePrinter_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-05-20 00:36:04 +00:00
|
|
|
{
|
2003-04-10 05:38:43 +00:00
|
|
|
guint32 size;
|
|
|
|
|
2002-05-20 00:36:04 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_writeprinter_numwritten,
|
2003-04-10 05:38:43 +00:00
|
|
|
&size);
|
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(
|
|
|
|
pinfo->cinfo, COL_INFO, ", %d bytes written", size);
|
2002-05-20 00:36:04 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-05-20 00:36:04 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-20 00:36:04 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* DeletePrinterData
|
|
|
|
*/
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssDeletePrinterData_q(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-05-20 00:36:04 +00:00
|
|
|
{
|
|
|
|
char *value_name;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-05-20 00:36:04 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2002-05-20 00:36:04 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-05-20 00:36:04 +00:00
|
|
|
FALSE, FALSE);
|
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_cvstring(
|
|
|
|
tvb, offset, pinfo, tree, drep, sizeof(guint16),
|
|
|
|
hf_printerdata_value, TRUE, &value_name);
|
2002-05-20 00:36:04 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", value_name);
|
|
|
|
|
|
|
|
g_free(value_name);
|
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-20 00:36:04 +00:00
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssDeletePrinterData_r(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-05-20 00:36:04 +00:00
|
|
|
{
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
|
|
|
|
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2002-05-20 00:36:04 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-05-20 00:36:04 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-20 00:36:04 +00:00
|
|
|
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* DRIVER_INFO_1
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_DRIVER_INFO_1 = -1;
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int dissect_DRIVER_INFO_1(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-05-20 06:53:31 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
int struct_start = offset;
|
|
|
|
|
2003-02-25 02:08:05 +00:00
|
|
|
item = proto_tree_add_text(
|
|
|
|
tree, tvb, offset, 0, "Driver info level 1");
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_DRIVER_INFO_1);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_drivername,
|
2002-05-20 06:53:31 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
2007-04-26 06:00:48 +00:00
|
|
|
* DRIVER_INFO_2
|
2002-05-20 06:53:31 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
static const value_string driverinfo_cversion_vals[] =
|
|
|
|
{
|
|
|
|
{ 0, "Windows 95/98/Me" },
|
|
|
|
{ 2, "Windows NT 4.0" },
|
|
|
|
{ 3, "Windows 2000/XP" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
2007-04-26 06:00:48 +00:00
|
|
|
static gint ett_DRIVER_INFO_2 = -1;
|
|
|
|
|
|
|
|
static int dissect_DRIVER_INFO_2(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
|
|
|
guint8 *drep)
|
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
int struct_start = offset;
|
|
|
|
|
|
|
|
item = proto_tree_add_text(
|
|
|
|
tree, tvb, offset, 0, "Driver info level 2");
|
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_DRIVER_INFO_2);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, subtree, drep,
|
|
|
|
hf_driverinfo_cversion, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_drivername,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_architecture,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_driverpath,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_datafile,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_configfile,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* DRIVER_INFO_3
|
|
|
|
*/
|
|
|
|
|
2002-05-20 06:53:31 +00:00
|
|
|
static gint ett_DRIVER_INFO_3 = -1;
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int dissect_DRIVER_INFO_3(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-05-20 06:53:31 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
int struct_start = offset;
|
|
|
|
|
2003-02-25 02:08:05 +00:00
|
|
|
item = proto_tree_add_text(
|
|
|
|
tree, tvb, offset, 0, "Driver info level 3");
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_DRIVER_INFO_3);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, subtree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_driverinfo_cversion, NULL);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_drivername,
|
2002-05-20 06:53:31 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_architecture,
|
2002-05-20 06:53:31 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_driverpath,
|
2002-05-20 06:53:31 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_datafile,
|
2002-05-20 06:53:31 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_configfile,
|
2002-05-20 06:53:31 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_helpfile,
|
2002-05-20 06:53:31 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstrarray(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_dependentfiles,
|
2002-05-20 06:53:31 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_monitorname,
|
2002-05-20 06:53:31 +00:00
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_defaultdatatype,
|
2002-08-28 21:04:11 +00:00
|
|
|
struct_start, NULL);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2007-04-26 06:00:48 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
DRIVER_INFO_6
|
|
|
|
*/
|
|
|
|
|
|
|
|
static gint ett_DRIVER_INFO_6 = -1;
|
|
|
|
|
|
|
|
static int dissect_DRIVER_INFO_6(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
|
|
|
guint8 *drep)
|
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
int struct_start = offset;
|
|
|
|
|
|
|
|
item = proto_tree_add_text(
|
|
|
|
tree, tvb, offset, 0, "Driver info level 6");
|
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_DRIVER_INFO_6);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, subtree, drep,
|
|
|
|
hf_driverinfo_cversion, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_drivername,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_architecture,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_driverpath,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_datafile,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_configfile,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_helpfile,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstrarray(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_dependentfiles,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_monitorname,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_defaultdatatype,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstrarray(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_previousdrivernames,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_ndr_nt_NTTIME (
|
|
|
|
tvb, offset, pinfo, subtree, drep,hf_driverdate);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_padding,
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_driver_version_low,
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_driver_version_high,
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_mfgname,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_oemurl,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_hardwareid,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_provider,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static gint ett_DRIVER_INFO_101 = -1;
|
|
|
|
|
|
|
|
static int dissect_DRIVER_INFO_101(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
|
|
|
guint8 *drep)
|
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
int struct_start = offset;
|
|
|
|
|
|
|
|
item = proto_tree_add_text(
|
|
|
|
tree, tvb, offset, 0, "Driver info level 101");
|
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_DRIVER_INFO_101);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, subtree, drep,
|
|
|
|
hf_driverinfo_cversion, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_drivername,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_relstr(
|
|
|
|
tvb, offset, pinfo, subtree, drep, hf_architecture,
|
|
|
|
struct_start, NULL);
|
|
|
|
|
|
|
|
proto_tree_add_text(subtree,tvb,offset,0,"Unknown Data Follows");
|
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
2002-05-20 06:53:31 +00:00
|
|
|
/*
|
|
|
|
* EnumPrinterDrivers
|
|
|
|
*/
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssEnumPrinterDrivers_q(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-05-20 06:53:31 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
|
|
|
guint32 level;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-01-28 06:42:20 +00:00
|
|
|
offset = dissect_ndr_str_pointer_item(
|
|
|
|
tvb, offset, pinfo, tree, drep, NDR_POINTER_UNIQUE,
|
2003-02-14 06:23:45 +00:00
|
|
|
"Name", hf_servername, 0);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
2003-01-28 06:42:20 +00:00
|
|
|
offset = dissect_ndr_str_pointer_item(
|
|
|
|
tvb, offset, pinfo, tree, drep, NDR_POINTER_UNIQUE,
|
2003-02-14 06:23:45 +00:00
|
|
|
"Environment", hf_servername, 0);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_level, &level);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
/* EnumPrinterDrivers() stores the level in se_data */
|
|
|
|
if(!pinfo->fd->flags.visited){
|
|
|
|
dcv->se_data = GUINT_TO_POINTER((int)level);
|
|
|
|
}
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", level %d", level);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_buffer(tvb, offset, pinfo, tree, drep, NULL);
|
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_offered, NULL);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-20 06:53:31 +00:00
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssEnumPrinterDrivers_r(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-05-20 06:53:31 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2006-09-16 08:51:03 +00:00
|
|
|
guint32 level = GPOINTER_TO_UINT(dcv->se_data), num_drivers, i;
|
2002-05-20 06:53:31 +00:00
|
|
|
int buffer_offset;
|
|
|
|
BUFFER buffer;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
|
|
|
offset = dissect_spoolss_buffer(tvb, offset, pinfo, tree, drep,
|
|
|
|
&buffer);
|
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_needed, NULL);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_returned,
|
2002-11-11 05:39:51 +00:00
|
|
|
&num_drivers);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
2002-11-19 03:01:18 +00:00
|
|
|
buffer_offset = 0;
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
for (i = 0; i < num_drivers; i++) {
|
|
|
|
switch(level) {
|
|
|
|
case 1:
|
|
|
|
buffer_offset = dissect_DRIVER_INFO_1(
|
2002-12-12 08:05:31 +00:00
|
|
|
buffer.tvb, buffer_offset, pinfo,
|
|
|
|
buffer.tree, drep);
|
2002-05-20 06:53:31 +00:00
|
|
|
break;
|
2007-04-26 06:00:48 +00:00
|
|
|
case 2:
|
|
|
|
buffer_offset = dissect_DRIVER_INFO_2(
|
|
|
|
buffer.tvb, buffer_offset, pinfo,
|
|
|
|
buffer.tree, drep);
|
|
|
|
break;
|
2002-05-20 06:53:31 +00:00
|
|
|
case 3:
|
|
|
|
buffer_offset = dissect_DRIVER_INFO_3(
|
2002-12-12 08:05:31 +00:00
|
|
|
buffer.tvb, buffer_offset, pinfo,
|
|
|
|
buffer.tree, drep);
|
2002-05-20 06:53:31 +00:00
|
|
|
break;
|
2007-04-26 06:00:48 +00:00
|
|
|
case 6:
|
|
|
|
buffer_offset = dissect_DRIVER_INFO_6(
|
|
|
|
buffer.tvb, buffer_offset, pinfo,
|
|
|
|
buffer.tree, drep);
|
|
|
|
break;
|
|
|
|
case 101:
|
|
|
|
buffer_offset = dissect_DRIVER_INFO_101(
|
|
|
|
buffer.tvb, buffer_offset, pinfo,
|
|
|
|
buffer.tree, drep);
|
|
|
|
/*break;*/
|
|
|
|
goto done; /*Not entirely imeplemented*/
|
2002-05-20 06:53:31 +00:00
|
|
|
default:
|
|
|
|
proto_tree_add_text(
|
2002-12-12 08:05:31 +00:00
|
|
|
buffer.tree, buffer.tvb, buffer_offset, -1,
|
2003-02-25 02:08:05 +00:00
|
|
|
"[Unknown driver info level %d]", level);
|
2002-05-20 06:53:31 +00:00
|
|
|
goto done;
|
|
|
|
}
|
|
|
|
}
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-05-20 06:53:31 +00:00
|
|
|
done:
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* GetPrinterDriver2
|
|
|
|
*/
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssGetPrinterDriver2_q(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-05-20 06:53:31 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
|
|
|
e_ctx_hnd policy_hnd;
|
|
|
|
char *pol_name;
|
|
|
|
guint32 level;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, NULL,
|
2002-05-20 06:53:31 +00:00
|
|
|
FALSE, FALSE);
|
|
|
|
|
2007-08-28 11:45:08 +00:00
|
|
|
dcerpc_fetch_polhnd_data(&policy_hnd, &pol_name, NULL, NULL, NULL,
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
pinfo->fd->num);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO) && pol_name)
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
|
|
|
|
pol_name);
|
|
|
|
|
2003-01-28 06:42:20 +00:00
|
|
|
offset = dissect_ndr_str_pointer_item(
|
|
|
|
tvb, offset, pinfo, tree, drep, NDR_POINTER_UNIQUE,
|
2003-02-14 06:23:45 +00:00
|
|
|
"Architecture", hf_architecture, 0);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_level, &level);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
2006-09-16 08:51:03 +00:00
|
|
|
/* GetPrinterDriver2() stores the level in se_data */
|
|
|
|
if(!pinfo->fd->flags.visited){
|
|
|
|
dcv->se_data = GUINT_TO_POINTER((int)level);
|
|
|
|
}
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", level %d", level);
|
|
|
|
|
|
|
|
offset = dissect_spoolss_buffer(tvb, offset, pinfo, tree, drep, NULL);
|
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_offered, NULL);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_clientmajorversion, NULL);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_clientminorversion, NULL);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-20 06:53:31 +00:00
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssGetPrinterDriver2_r(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-05-20 06:53:31 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
2006-09-16 08:51:03 +00:00
|
|
|
guint32 level = GPOINTER_TO_UINT(dcv->se_data);
|
2002-05-20 06:53:31 +00:00
|
|
|
BUFFER buffer;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
offset = dissect_spoolss_buffer(tvb, offset, pinfo, tree, drep,
|
2002-05-20 06:53:31 +00:00
|
|
|
&buffer);
|
|
|
|
|
2003-01-30 05:11:33 +00:00
|
|
|
if (buffer.tvb) {
|
|
|
|
switch(level) {
|
|
|
|
case 1:
|
|
|
|
dissect_DRIVER_INFO_1(
|
|
|
|
buffer.tvb, 0, pinfo, buffer.tree, drep);
|
|
|
|
break;
|
2007-04-26 06:00:48 +00:00
|
|
|
case 2:
|
|
|
|
dissect_DRIVER_INFO_2(
|
|
|
|
buffer.tvb, 0, pinfo, buffer.tree, drep);
|
|
|
|
break;
|
2003-01-30 05:11:33 +00:00
|
|
|
case 3:
|
|
|
|
dissect_DRIVER_INFO_3(
|
|
|
|
buffer.tvb, 0, pinfo, buffer.tree, drep);
|
|
|
|
break;
|
2007-04-26 06:00:48 +00:00
|
|
|
case 6:
|
|
|
|
dissect_DRIVER_INFO_6(
|
|
|
|
buffer.tvb, 0, pinfo, buffer.tree, drep);
|
|
|
|
break;
|
|
|
|
case 101:
|
|
|
|
dissect_DRIVER_INFO_101(
|
|
|
|
buffer.tvb, 0, pinfo, buffer.tree, drep);
|
|
|
|
break;
|
2003-01-30 05:11:33 +00:00
|
|
|
default:
|
|
|
|
proto_tree_add_text(
|
|
|
|
buffer.tree, buffer.tvb, 0, -1,
|
2003-02-25 02:08:05 +00:00
|
|
|
"[Unknown driver info level %d]", level);
|
2003-01-30 05:11:33 +00:00
|
|
|
break;
|
|
|
|
}
|
2002-05-20 06:53:31 +00:00
|
|
|
}
|
|
|
|
|
2002-07-09 14:24:39 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_needed, NULL);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_servermajorversion, NULL);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_serverminorversion, NULL);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-05-20 06:53:31 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-05-20 06:53:31 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
static int
|
|
|
|
dissect_notify_info_data_buffer(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-06-05 04:15:30 +00:00
|
|
|
{
|
2003-02-10 06:21:57 +00:00
|
|
|
guint32 len;
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_buffer_len, &len);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint16s(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_buffer_data, len);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
static void cb_notify_str_postprocess(packet_info *pinfo _U_,
|
|
|
|
proto_tree *tree _U_,
|
|
|
|
proto_item *item, tvbuff_t *tvb,
|
|
|
|
int start_offset, int end_offset,
|
|
|
|
void *callback_args)
|
|
|
|
{
|
|
|
|
gint levels, hf_index = GPOINTER_TO_INT(callback_args);
|
|
|
|
guint32 len;
|
|
|
|
char *s;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
/* Align start_offset on 4-byte boundary. */
|
|
|
|
|
|
|
|
if (start_offset % 4)
|
|
|
|
start_offset += 4 - (start_offset % 4);
|
|
|
|
|
|
|
|
/* Get string length */
|
|
|
|
|
|
|
|
len = tvb_get_letohl(tvb, start_offset);
|
|
|
|
|
2003-02-24 01:22:30 +00:00
|
|
|
s = tvb_fake_unicode(
|
|
|
|
tvb, start_offset + 4, (end_offset - start_offset - 4) / 2, TRUE);
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
/* Append string to upper-level proto_items */
|
|
|
|
|
|
|
|
levels = 2;
|
|
|
|
|
2003-02-25 02:08:05 +00:00
|
|
|
if (levels > 0 && item && s && s[0]) {
|
2003-02-10 06:21:57 +00:00
|
|
|
proto_item_append_text(item, ": %s", s);
|
|
|
|
item = item->parent;
|
|
|
|
levels--;
|
|
|
|
if (levels > 0) {
|
|
|
|
proto_item_append_text(item, ": %s", s);
|
|
|
|
item = item->parent;
|
|
|
|
levels--;
|
|
|
|
while (levels > 0) {
|
|
|
|
proto_item_append_text(item, " %s", s);
|
|
|
|
item = item->parent;
|
|
|
|
levels--;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Add hidden field so filter brings up any notify data */
|
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
if (hf_index != -1) {
|
|
|
|
hidden_item = proto_tree_add_string(
|
2003-02-10 06:21:57 +00:00
|
|
|
tree, hf_index, tvb, start_offset, len, s);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
}
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
g_free(s);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Return the hf_index for a printer notify field. This is used to
|
|
|
|
add a hidden string to the display so that filtering will bring
|
|
|
|
up relevant notify data. */
|
|
|
|
|
|
|
|
static int
|
|
|
|
printer_notify_hf_index(int field)
|
|
|
|
{
|
|
|
|
int result = -1;
|
|
|
|
|
|
|
|
switch(field) {
|
|
|
|
case PRINTER_NOTIFY_SERVER_NAME:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_servername;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case PRINTER_NOTIFY_PRINTER_NAME:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_printername;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case PRINTER_NOTIFY_SHARE_NAME:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_sharename;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case PRINTER_NOTIFY_PORT_NAME:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_portname;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case PRINTER_NOTIFY_DRIVER_NAME:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_drivername;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case PRINTER_NOTIFY_COMMENT:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_printercomment;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case PRINTER_NOTIFY_LOCATION:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_printerlocation;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case PRINTER_NOTIFY_SEPFILE:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_sepfile;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case PRINTER_NOTIFY_PRINT_PROCESSOR:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_printprocessor;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case PRINTER_NOTIFY_PARAMETERS:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_parameters;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case PRINTER_NOTIFY_DATATYPE:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_parameters;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
job_notify_hf_index(int field)
|
|
|
|
{
|
|
|
|
int result = -1;
|
|
|
|
|
|
|
|
switch(field) {
|
|
|
|
case JOB_NOTIFY_PRINTER_NAME:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_printername;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_MACHINE_NAME:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_machinename;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_PORT_NAME:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_portname;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_USER_NAME:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_username;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_NOTIFY_NAME:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_notifyname;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_DATATYPE:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_datatype;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_PRINT_PROCESSOR:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_printprocessor;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_DRIVER_NAME:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_drivername;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_DOCUMENT:
|
2003-02-14 06:23:45 +00:00
|
|
|
result = hf_documentname;
|
2003-02-10 06:21:57 +00:00
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_PRIORITY:
|
|
|
|
result = hf_job_priority;
|
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_POSITION:
|
|
|
|
result = hf_job_position;
|
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_TOTAL_PAGES:
|
|
|
|
result = hf_job_totalpages;
|
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_PAGES_PRINTED:
|
|
|
|
result = hf_job_pagesprinted;
|
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_TOTAL_BYTES:
|
|
|
|
result = hf_job_totalbytes;
|
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_BYTES_PRINTED:
|
|
|
|
result = hf_job_bytesprinted;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int
|
2002-06-05 04:15:30 +00:00
|
|
|
dissect_NOTIFY_INFO_DATA_printer(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2003-02-10 06:21:57 +00:00
|
|
|
proto_tree *tree, proto_item *item,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep, guint16 field)
|
2002-06-05 04:15:30 +00:00
|
|
|
{
|
|
|
|
guint32 value1;
|
|
|
|
|
|
|
|
switch (field) {
|
|
|
|
|
|
|
|
/* String notify data */
|
|
|
|
|
|
|
|
case PRINTER_NOTIFY_SERVER_NAME:
|
|
|
|
case PRINTER_NOTIFY_PRINTER_NAME:
|
|
|
|
case PRINTER_NOTIFY_SHARE_NAME:
|
|
|
|
case PRINTER_NOTIFY_DRIVER_NAME:
|
|
|
|
case PRINTER_NOTIFY_COMMENT:
|
|
|
|
case PRINTER_NOTIFY_LOCATION:
|
|
|
|
case PRINTER_NOTIFY_SEPFILE:
|
|
|
|
case PRINTER_NOTIFY_PRINT_PROCESSOR:
|
|
|
|
case PRINTER_NOTIFY_PARAMETERS:
|
|
|
|
case PRINTER_NOTIFY_DATATYPE:
|
2002-06-07 03:42:02 +00:00
|
|
|
case PRINTER_NOTIFY_PORT_NAME:
|
2002-06-05 04:15:30 +00:00
|
|
|
|
2002-06-07 06:10:53 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_bufsize, &value1);
|
2002-06-07 06:10:53 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_pointer_cb(
|
2002-06-07 06:10:53 +00:00
|
|
|
tvb, offset, pinfo, tree, drep,
|
2002-08-28 21:04:11 +00:00
|
|
|
dissect_notify_info_data_buffer,
|
|
|
|
NDR_POINTER_UNIQUE, "String",
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_buffer,
|
|
|
|
cb_notify_str_postprocess,
|
|
|
|
GINT_TO_POINTER(printer_notify_hf_index(field)));
|
2002-06-07 06:10:53 +00:00
|
|
|
|
|
|
|
break;
|
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
case PRINTER_NOTIFY_ATTRIBUTES:
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
/* Value 1 is the printer attributes */
|
2002-08-28 21:04:11 +00:00
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
offset = dissect_printer_attributes(
|
|
|
|
tvb, offset, pinfo, tree, drep);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, NULL, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_value2, NULL);
|
2002-06-17 03:21:15 +00:00
|
|
|
|
|
|
|
break;
|
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
case PRINTER_NOTIFY_STATUS: {
|
|
|
|
guint32 status;
|
2002-06-17 03:21:15 +00:00
|
|
|
|
|
|
|
/* Value 1 is the printer status */
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2002-06-17 03:21:15 +00:00
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-11 03:22:59 +00:00
|
|
|
hf_printer_status, &status);
|
2002-06-17 03:21:15 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, NULL, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_value2, NULL);
|
|
|
|
|
|
|
|
proto_item_append_text(
|
|
|
|
item, ": %s",
|
|
|
|
val_to_str(status, printer_status_vals, "Unknown"));
|
2002-06-17 03:21:15 +00:00
|
|
|
|
|
|
|
break;
|
2003-02-10 06:21:57 +00:00
|
|
|
}
|
2002-06-17 03:21:15 +00:00
|
|
|
|
2002-06-07 06:10:53 +00:00
|
|
|
/* Unknown notify data */
|
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
case PRINTER_NOTIFY_SECURITY_DESCRIPTOR: /* Secdesc */
|
2003-02-25 02:08:05 +00:00
|
|
|
case PRINTER_NOTIFY_DEVMODE: /* Devicemode */
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_bufsize, &value1);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_pointer(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2002-08-28 21:04:11 +00:00
|
|
|
dissect_notify_info_data_buffer,
|
|
|
|
NDR_POINTER_UNIQUE, "Buffer",
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_buffer);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_value1, NULL);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_value2, NULL);
|
2002-06-07 06:10:53 +00:00
|
|
|
|
|
|
|
break;
|
2002-06-05 04:15:30 +00:00
|
|
|
}
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2003-02-11 03:22:59 +00:00
|
|
|
static void notify_job_time_cb(packet_info *pinfo, proto_tree *tree _U_,
|
|
|
|
proto_item *item, tvbuff_t *tvb _U_,
|
|
|
|
int start_offset _U_, int end_offset _U_,
|
|
|
|
void *callback_args _U_)
|
|
|
|
{
|
|
|
|
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
|
|
|
|
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
|
|
|
|
char *str = (char *)dcv->private_data;
|
|
|
|
|
|
|
|
/* Append job string stored in dcv->private_data by
|
|
|
|
dissect_SYSTEM_TIME_ptr() in the current item as well
|
|
|
|
as the parent. */
|
|
|
|
|
|
|
|
proto_item_append_text(item, ": %s", str);
|
|
|
|
|
|
|
|
if (item)
|
|
|
|
proto_item_append_text(item->parent, ": %s", str);
|
|
|
|
}
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int
|
2002-06-05 04:15:30 +00:00
|
|
|
dissect_NOTIFY_INFO_DATA_job(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, proto_item *item, guint8 *drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
guint16 field)
|
2002-06-05 04:15:30 +00:00
|
|
|
{
|
|
|
|
guint32 value1;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
switch (field) {
|
|
|
|
|
|
|
|
/* String notify data */
|
|
|
|
|
|
|
|
case JOB_NOTIFY_PRINTER_NAME:
|
|
|
|
case JOB_NOTIFY_MACHINE_NAME:
|
|
|
|
case JOB_NOTIFY_PORT_NAME:
|
|
|
|
case JOB_NOTIFY_USER_NAME:
|
|
|
|
case JOB_NOTIFY_NOTIFY_NAME:
|
|
|
|
case JOB_NOTIFY_DATATYPE:
|
|
|
|
case JOB_NOTIFY_PRINT_PROCESSOR:
|
|
|
|
case JOB_NOTIFY_PARAMETERS:
|
|
|
|
case JOB_NOTIFY_DRIVER_NAME:
|
|
|
|
case JOB_NOTIFY_STATUS_STRING:
|
|
|
|
case JOB_NOTIFY_DOCUMENT:
|
|
|
|
|
2002-06-07 06:10:53 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_bufsize, &value1);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_pointer_cb(
|
2002-06-07 06:10:53 +00:00
|
|
|
tvb, offset, pinfo, tree, drep,
|
2002-08-28 21:04:11 +00:00
|
|
|
dissect_notify_info_data_buffer,
|
|
|
|
NDR_POINTER_UNIQUE, "String",
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_buffer,
|
|
|
|
cb_notify_str_postprocess,
|
|
|
|
GINT_TO_POINTER(job_notify_hf_index(field)));
|
2002-06-07 06:10:53 +00:00
|
|
|
|
|
|
|
break;
|
|
|
|
|
2002-06-17 06:45:42 +00:00
|
|
|
case JOB_NOTIFY_STATUS:
|
|
|
|
offset = dissect_job_status(
|
|
|
|
tvb, offset, pinfo, tree, drep);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, NULL, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_value2, NULL);
|
2002-06-17 06:45:42 +00:00
|
|
|
|
|
|
|
break;
|
|
|
|
|
2002-06-07 06:10:53 +00:00
|
|
|
case JOB_NOTIFY_SUBMITTED:
|
|
|
|
|
|
|
|
/* SYSTEM_TIME */
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_buffer_len, NULL);
|
2002-06-07 06:10:53 +00:00
|
|
|
|
2003-02-11 03:22:59 +00:00
|
|
|
offset = dissect_ndr_pointer_cb(
|
2002-06-07 06:10:53 +00:00
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-11 03:22:59 +00:00
|
|
|
dissect_SYSTEM_TIME_ptr, NDR_POINTER_UNIQUE,
|
|
|
|
"Time submitted", -1, notify_job_time_cb, NULL);
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case JOB_NOTIFY_PRIORITY:
|
|
|
|
case JOB_NOTIFY_POSITION:
|
|
|
|
case JOB_NOTIFY_TOTAL_PAGES:
|
|
|
|
case JOB_NOTIFY_PAGES_PRINTED:
|
|
|
|
case JOB_NOTIFY_TOTAL_BYTES:
|
|
|
|
case JOB_NOTIFY_BYTES_PRINTED: {
|
|
|
|
guint32 value;
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
|
|
|
hf_notify_info_data_value1, &value);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
|
|
|
hf_notify_info_data_value2, NULL);
|
|
|
|
|
|
|
|
proto_item_append_text(item, ": %d", value);
|
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-02-10 06:21:57 +00:00
|
|
|
tree, job_notify_hf_index(field), tvb,
|
|
|
|
offset, 4, value);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2002-06-07 06:10:53 +00:00
|
|
|
|
|
|
|
break;
|
2003-02-10 06:21:57 +00:00
|
|
|
}
|
2002-06-07 06:10:53 +00:00
|
|
|
|
|
|
|
/* Unknown notify data */
|
|
|
|
|
|
|
|
case JOB_NOTIFY_DEVMODE:
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_bufsize, &value1);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_pointer(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2002-08-28 21:04:11 +00:00
|
|
|
dissect_notify_info_data_buffer,
|
|
|
|
NDR_POINTER_UNIQUE, "Buffer",
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_buffer);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_value1, NULL);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_value2, NULL);
|
2002-06-05 04:15:30 +00:00
|
|
|
}
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2009-08-04 18:48:45 +00:00
|
|
|
static gint ett_NOTIFY_INFO_DATA = -1;
|
2002-06-05 04:15:30 +00:00
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int
|
2002-06-05 04:15:30 +00:00
|
|
|
dissect_NOTIFY_INFO_DATA(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-06-05 04:15:30 +00:00
|
|
|
{
|
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
guint32 count;
|
|
|
|
guint16 type, field;
|
2005-06-26 19:56:52 +00:00
|
|
|
const char *field_string;
|
2002-06-05 04:15:30 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
item = proto_tree_add_text(tree, tvb, offset, 0, "%s", "");
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_NOTIFY_INFO_DATA);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint16(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_type, &type);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
offset = dissect_notify_field(
|
|
|
|
tvb, offset, pinfo, subtree, drep, type, &field);
|
|
|
|
|
2002-06-17 03:21:15 +00:00
|
|
|
switch(type) {
|
|
|
|
case PRINTER_NOTIFY_TYPE:
|
|
|
|
field_string = val_to_str(
|
2003-02-25 02:08:05 +00:00
|
|
|
field, printer_notify_option_data_vals,
|
|
|
|
"Unknown (%d)");
|
2002-06-17 03:21:15 +00:00
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_TYPE:
|
|
|
|
field_string = val_to_str(
|
2003-02-25 02:08:05 +00:00
|
|
|
field, job_notify_option_data_vals,
|
|
|
|
"Unknown (%d)");
|
2002-06-17 03:21:15 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
field_string = "Unknown field";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
proto_item_append_text(
|
2003-02-10 06:21:57 +00:00
|
|
|
item, "%s, %s",
|
2002-08-28 21:04:11 +00:00
|
|
|
val_to_str(type, printer_notify_types, "Unknown (%d)"),
|
2002-06-25 03:01:05 +00:00
|
|
|
field_string);
|
2002-06-17 03:21:15 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_count, &count);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_id, NULL);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_data_count, NULL);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
/* The value here depends on (type, field) */
|
|
|
|
|
|
|
|
switch (type) {
|
|
|
|
case PRINTER_NOTIFY_TYPE:
|
|
|
|
offset = dissect_NOTIFY_INFO_DATA_printer(
|
2003-02-10 06:21:57 +00:00
|
|
|
tvb, offset, pinfo, subtree, item, drep, field);
|
2002-06-05 04:15:30 +00:00
|
|
|
break;
|
|
|
|
case JOB_NOTIFY_TYPE:
|
|
|
|
offset = dissect_NOTIFY_INFO_DATA_job(
|
2003-02-10 06:21:57 +00:00
|
|
|
tvb, offset, pinfo, subtree, item, drep, field);
|
2002-06-05 04:15:30 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
proto_tree_add_text(
|
|
|
|
tree, tvb, offset, 0,
|
|
|
|
"[Unknown notify type %d]", type);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int
|
2002-06-05 04:15:30 +00:00
|
|
|
dissect_NOTIFY_INFO(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-06-05 04:15:30 +00:00
|
|
|
{
|
2003-02-11 03:22:59 +00:00
|
|
|
dcerpc_info *di = pinfo->private_data;
|
|
|
|
guint32 count;
|
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_version, NULL);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-02-10 06:21:57 +00:00
|
|
|
hf_notify_info_flags, NULL);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
2002-06-07 06:10:53 +00:00
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-02-11 03:22:59 +00:00
|
|
|
hf_notify_info_count, &count);
|
|
|
|
|
|
|
|
if (!di->conformant_run && check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(
|
2003-02-25 02:08:05 +00:00
|
|
|
pinfo->cinfo, COL_INFO, ", %d %s", count,
|
|
|
|
notify_plural(count));
|
2002-06-07 06:10:53 +00:00
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
|
|
|
|
dissect_NOTIFY_INFO_DATA);
|
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* RFNPCNEX
|
|
|
|
*/
|
|
|
|
|
|
|
|
static int SpoolssRFNPCNEX_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-06-05 04:15:30 +00:00
|
|
|
{
|
2003-02-11 03:22:59 +00:00
|
|
|
guint32 changeid;
|
|
|
|
|
2002-06-05 04:15:30 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-08-28 21:04:11 +00:00
|
|
|
FALSE, FALSE);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
2002-06-17 06:45:42 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-11 03:22:59 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_rrpcn_changelow, &changeid);
|
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(
|
|
|
|
pinfo->cinfo, COL_INFO, ", changeid %d", changeid);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_pointer(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2002-06-07 03:42:02 +00:00
|
|
|
dissect_NOTIFY_OPTIONS_ARRAY_CTR, NDR_POINTER_UNIQUE,
|
2003-02-10 06:21:57 +00:00
|
|
|
"Notify Options Array Container", -1);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
static int SpoolssRFNPCNEX_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-06-05 04:15:30 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
|
|
|
offset = dissect_ndr_pointer(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
|
|
|
dissect_NOTIFY_INFO, NDR_POINTER_UNIQUE,
|
2003-02-10 06:21:57 +00:00
|
|
|
"Notify Info", -1);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-06-05 04:15:30 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-06-05 04:15:30 +00:00
|
|
|
|
2002-06-05 07:15:47 +00:00
|
|
|
/*
|
|
|
|
* RRPCN
|
|
|
|
*/
|
|
|
|
|
|
|
|
static int SpoolssRRPCN_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-06-05 07:15:47 +00:00
|
|
|
{
|
2003-02-11 03:22:59 +00:00
|
|
|
guint32 changeid;
|
|
|
|
|
2002-06-05 07:15:47 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-08-28 21:04:11 +00:00
|
|
|
FALSE, FALSE);
|
2002-06-05 07:15:47 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-11 03:22:59 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_rrpcn_changelow, &changeid);
|
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(
|
|
|
|
pinfo->cinfo, COL_INFO, ", changeid %d", changeid);
|
2002-06-05 07:15:47 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rrpcn_changehigh, NULL);
|
2002-06-05 07:15:47 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rrpcn_unk0, NULL);
|
2002-06-05 07:15:47 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rrpcn_unk1, NULL);
|
2002-06-05 07:15:47 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_pointer(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
|
|
|
dissect_NOTIFY_INFO, NDR_POINTER_UNIQUE,
|
2003-02-10 06:21:57 +00:00
|
|
|
"Notify Info", -1);
|
2002-06-05 07:15:47 +00:00
|
|
|
|
|
|
|
/* Notify info */
|
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-06-05 07:15:47 +00:00
|
|
|
|
|
|
|
static int SpoolssRRPCN_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-06-05 07:15:47 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rrpcn_unk0, NULL);
|
2002-06-05 07:15:47 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-06-05 07:15:47 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-06-05 07:15:47 +00:00
|
|
|
|
2002-06-06 03:18:14 +00:00
|
|
|
/*
|
|
|
|
* ReplyClosePrinter
|
|
|
|
*/
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssReplyClosePrinter_q(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-06-06 03:18:14 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
|
|
|
FALSE, TRUE);
|
2002-06-06 03:18:14 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-06-06 03:18:14 +00:00
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
static int SpoolssReplyClosePrinter_r(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-06-06 03:18:14 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
|
|
|
FALSE, FALSE);
|
2002-06-06 03:18:14 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-06-06 03:18:14 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-06-06 03:18:14 +00:00
|
|
|
|
2002-06-06 05:46:55 +00:00
|
|
|
/*
|
|
|
|
* FCPN
|
|
|
|
*/
|
|
|
|
|
|
|
|
static int SpoolssFCPN_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-06-06 05:46:55 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
|
|
|
FALSE, FALSE);
|
2002-06-06 05:46:55 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-06-06 05:46:55 +00:00
|
|
|
|
|
|
|
static int SpoolssFCPN_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-06-06 05:46:55 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-06-06 05:46:55 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-06-06 05:46:55 +00:00
|
|
|
|
2002-06-25 03:01:05 +00:00
|
|
|
/*
|
|
|
|
* RouterReplyPrinter
|
|
|
|
*/
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
static int hf_routerreplyprinter_condition = -1;
|
|
|
|
static int hf_routerreplyprinter_unknown1 = -1;
|
|
|
|
static int hf_routerreplyprinter_changeid = -1;
|
|
|
|
|
2002-06-25 03:01:05 +00:00
|
|
|
static int SpoolssRouterReplyPrinter_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-06-25 03:01:05 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
|
|
|
FALSE, FALSE);
|
2002-06-25 03:01:05 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_routerreplyprinter_condition, NULL);
|
2002-06-25 03:01:05 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_routerreplyprinter_unknown1, NULL);
|
2002-06-25 03:01:05 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_routerreplyprinter_changeid, NULL);
|
2002-06-25 03:01:05 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-06-25 03:01:05 +00:00
|
|
|
|
|
|
|
static int SpoolssRouterReplyPrinter_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-06-25 03:01:05 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-06-25 03:01:05 +00:00
|
|
|
|
|
|
|
return offset;
|
2002-08-28 21:04:11 +00:00
|
|
|
}
|
2002-06-25 03:01:05 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
static int hf_keybuffer_size = -1;
|
|
|
|
static int hf_keybuffer_data = -1;
|
|
|
|
|
2002-11-08 19:25:42 +00:00
|
|
|
static int
|
|
|
|
dissect_spoolss_keybuffer(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
2004-01-19 20:10:37 +00:00
|
|
|
proto_tree *tree, guint8 *drep)
|
2002-11-08 19:25:42 +00:00
|
|
|
{
|
|
|
|
dcerpc_info *di = pinfo->private_data;
|
2002-11-08 19:58:09 +00:00
|
|
|
guint32 size;
|
|
|
|
int end_offset;
|
2002-11-08 19:25:42 +00:00
|
|
|
|
|
|
|
if (di->conformant_run)
|
|
|
|
return offset;
|
|
|
|
|
|
|
|
/* Dissect size and data */
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_keybuffer_size, &size);
|
2002-11-08 19:25:42 +00:00
|
|
|
|
2002-11-08 19:58:09 +00:00
|
|
|
end_offset = offset + (size*2);
|
|
|
|
if (end_offset < offset) {
|
|
|
|
/*
|
|
|
|
* Overflow - make the end offset one past the end of
|
|
|
|
* the packet data, so we throw an exception (as the
|
|
|
|
* size is almost certainly too big).
|
|
|
|
*/
|
|
|
|
end_offset = tvb_reported_length_remaining(tvb, offset) + 1;
|
|
|
|
}
|
2003-01-10 05:41:29 +00:00
|
|
|
|
|
|
|
while (offset < end_offset)
|
|
|
|
offset = dissect_spoolss_uint16uni(
|
|
|
|
tvb, offset, pinfo, tree, drep, NULL, "Key");
|
2002-11-08 19:25:42 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2002-11-07 17:45:30 +00:00
|
|
|
static int SpoolssEnumPrinterKey_q(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-11-07 17:45:30 +00:00
|
|
|
{
|
|
|
|
char *key_name;
|
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-11-07 17:45:30 +00:00
|
|
|
FALSE, FALSE);
|
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_cvstring(
|
|
|
|
tvb, offset, pinfo, tree, drep, sizeof(guint16),
|
|
|
|
hf_printerdata_key, TRUE, &key_name);
|
2002-11-07 17:45:30 +00:00
|
|
|
|
2003-01-10 05:41:29 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO)) {
|
2005-07-26 08:01:16 +00:00
|
|
|
const char *kn = key_name;
|
2003-01-10 05:41:29 +00:00
|
|
|
|
|
|
|
if (!key_name[0])
|
|
|
|
kn = "\"\"";
|
|
|
|
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", kn);
|
|
|
|
}
|
2002-11-07 17:45:30 +00:00
|
|
|
|
|
|
|
g_free(key_name);
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_needed, NULL);
|
2002-11-07 17:45:30 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int SpoolssEnumPrinterKey_r(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-11-07 17:45:30 +00:00
|
|
|
{
|
|
|
|
/* Parse packet */
|
|
|
|
|
|
|
|
offset = dissect_spoolss_keybuffer(tvb, offset, pinfo, tree, drep);
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_needed, NULL);
|
2002-11-07 17:45:30 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-11-07 17:45:30 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
static int hf_enumprinterdataex_num_values = -1;
|
|
|
|
static int hf_enumprinterdataex_name_offset = -1;
|
|
|
|
static int hf_enumprinterdataex_name_len = -1;
|
|
|
|
static int hf_enumprinterdataex_name = -1;
|
|
|
|
static int hf_enumprinterdataex_val_type = -1;
|
|
|
|
static int hf_enumprinterdataex_val_offset = -1;
|
|
|
|
static int hf_enumprinterdataex_val_len = -1;
|
|
|
|
static int hf_enumprinterdataex_val_dword_low = -1;
|
|
|
|
static int hf_enumprinterdataex_val_dword_high = -1;
|
|
|
|
static int hf_enumprinterdataex_val_sz = -1;
|
|
|
|
|
2002-11-08 19:29:39 +00:00
|
|
|
static int SpoolssEnumPrinterDataEx_q(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-11-08 19:29:39 +00:00
|
|
|
{
|
|
|
|
char *key_name;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-11-08 19:29:39 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2002-11-08 19:29:39 +00:00
|
|
|
/* Parse packet */
|
|
|
|
|
|
|
|
offset = dissect_nt_policy_hnd(
|
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might
then be closed, and a subsequent handle might return handle XXX, and we
want to keep the two handles distinct to avoid, for example, displaying
handles closed before they're opened.
In policy handle open replies, store the handle name only if the
operation succeeded. We can now do that without parsing the packet
twice.
Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the
protocol tree item for the handle, so that its caller can decorate the
item with the name of the handle - that's done on opens, where we do
that only if the operation succeeds.
svn path=/trunk/; revision=7787
2003-06-05 04:22:04 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
|
2002-11-08 19:29:39 +00:00
|
|
|
FALSE, FALSE);
|
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
offset = dissect_ndr_cvstring(
|
|
|
|
tvb, offset, pinfo, tree, drep, sizeof(guint16),
|
|
|
|
hf_printerdata_key, TRUE, &key_name);
|
2002-11-08 19:29:39 +00:00
|
|
|
|
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", key_name);
|
|
|
|
|
|
|
|
g_free(key_name);
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_offered, NULL);
|
2002-11-08 19:29:39 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2003-01-10 05:01:48 +00:00
|
|
|
static gint ett_printer_enumdataex_value = -1;
|
|
|
|
|
2002-11-08 19:29:39 +00:00
|
|
|
static int
|
|
|
|
dissect_spoolss_printer_enum_values(tvbuff_t *tvb, int offset,
|
2003-01-10 05:01:48 +00:00
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-11-08 19:29:39 +00:00
|
|
|
{
|
2003-07-14 04:46:48 +00:00
|
|
|
guint32 start_offset = offset;
|
2002-11-08 19:29:39 +00:00
|
|
|
guint32 name_offset, name_len, val_offset, val_len, val_type;
|
|
|
|
char *name;
|
2003-01-10 05:01:48 +00:00
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
2002-11-08 19:29:39 +00:00
|
|
|
|
|
|
|
/* Get offset of value name */
|
|
|
|
|
2003-01-10 05:01:48 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, NULL, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_enumprinterdataex_name_offset, &name_offset);
|
2003-01-10 05:01:48 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, NULL, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_enumprinterdataex_name_len, &name_len);
|
2003-01-10 05:01:48 +00:00
|
|
|
|
|
|
|
dissect_spoolss_uint16uni(
|
2003-07-14 04:46:48 +00:00
|
|
|
tvb, start_offset + name_offset, pinfo, NULL, drep,
|
2003-01-10 05:01:48 +00:00
|
|
|
&name, "Name");
|
|
|
|
|
|
|
|
item = proto_tree_add_text(tree, tvb, offset, 0, "Name: ");
|
|
|
|
|
|
|
|
subtree = proto_item_add_subtree(item, ett_printer_enumdataex_value);
|
|
|
|
|
2005-06-20 19:35:58 +00:00
|
|
|
proto_item_append_text(item, "%s", name);
|
2003-01-10 05:01:48 +00:00
|
|
|
|
|
|
|
proto_tree_add_text(
|
|
|
|
subtree, tvb, offset - 8, 4, "Name offset: %d", name_offset);
|
|
|
|
|
|
|
|
proto_tree_add_text(
|
|
|
|
subtree, tvb, offset - 4, 4, "Name len: %d", name_len);
|
|
|
|
|
|
|
|
proto_tree_add_text(
|
2009-03-29 21:20:15 +00:00
|
|
|
subtree, tvb, start_offset + name_offset, ((int)strlen(name) + 1) * 2,
|
2003-01-10 05:01:48 +00:00
|
|
|
"Name: %s", name);
|
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
2003-01-28 22:51:54 +00:00
|
|
|
tvb, offset, pinfo, subtree, drep, hf_printerdata_type,
|
|
|
|
&val_type);
|
2003-01-10 05:01:48 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_enumprinterdataex_val_offset, &val_offset);
|
2003-01-10 05:01:48 +00:00
|
|
|
|
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, subtree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_enumprinterdataex_val_len, &val_len);
|
2002-11-08 19:29:39 +00:00
|
|
|
|
2003-07-14 04:46:48 +00:00
|
|
|
if (val_len == 0) {
|
|
|
|
proto_tree_add_text(subtree, tvb, start_offset + val_offset, 4,
|
|
|
|
"Value: (null)");
|
|
|
|
goto done;
|
|
|
|
}
|
|
|
|
|
2002-11-08 19:29:39 +00:00
|
|
|
switch(val_type) {
|
|
|
|
case DCERPC_REG_DWORD: {
|
|
|
|
guint32 value;
|
2003-01-10 05:01:48 +00:00
|
|
|
guint16 low, high;
|
2003-07-14 04:46:48 +00:00
|
|
|
int offset2 = start_offset + val_offset;
|
2003-01-10 05:01:48 +00:00
|
|
|
|
|
|
|
/* Needs to be broken into two 16-byte ints because it may
|
|
|
|
not be aligned. */
|
|
|
|
|
|
|
|
offset2 = dissect_ndr_uint16(
|
|
|
|
tvb, offset2, pinfo, subtree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_enumprinterdataex_val_dword_low, &low);
|
2003-01-10 05:01:48 +00:00
|
|
|
|
|
|
|
offset2 = dissect_ndr_uint16(
|
|
|
|
tvb, offset2, pinfo, subtree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_enumprinterdataex_val_dword_high, &high);
|
2003-01-10 05:01:48 +00:00
|
|
|
|
|
|
|
value = (high << 16) | low;
|
|
|
|
|
2003-07-14 04:46:48 +00:00
|
|
|
proto_tree_add_text(subtree, tvb, start_offset + val_offset, 4,
|
2003-01-10 05:01:48 +00:00
|
|
|
"Value: %d", value);
|
|
|
|
|
|
|
|
proto_item_append_text(item, ", Value: %d", value);
|
|
|
|
|
2002-11-08 19:29:39 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
case DCERPC_REG_SZ: {
|
|
|
|
char *value;
|
2003-01-10 05:01:48 +00:00
|
|
|
|
|
|
|
dissect_spoolss_uint16uni(
|
2003-07-14 04:46:48 +00:00
|
|
|
tvb, start_offset + val_offset, pinfo, subtree, drep,
|
2003-01-10 05:01:48 +00:00
|
|
|
&value, "Value");
|
|
|
|
|
|
|
|
proto_item_append_text(item, ", Value: %s", value);
|
|
|
|
|
|
|
|
g_free(value);
|
|
|
|
|
2002-11-08 19:29:39 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
case DCERPC_REG_BINARY:
|
2003-01-10 05:01:48 +00:00
|
|
|
|
|
|
|
/* FIXME: nicer way to display this */
|
|
|
|
|
2003-07-14 04:46:48 +00:00
|
|
|
proto_tree_add_text(
|
|
|
|
subtree, tvb, start_offset + val_offset, val_len,
|
|
|
|
"Value: <binary data>");
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DCERPC_REG_MULTI_SZ:
|
|
|
|
|
|
|
|
/* FIXME: implement REG_MULTI_SZ support */
|
|
|
|
|
|
|
|
proto_tree_add_text(
|
|
|
|
subtree, tvb, start_offset + val_offset, val_len,
|
|
|
|
"Value: <REG_MULTI_SZ not implemented>");
|
2002-11-08 19:29:39 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
2003-07-14 04:46:48 +00:00
|
|
|
proto_tree_add_text(
|
|
|
|
subtree, tvb, start_offset + val_offset, val_len,
|
|
|
|
"%s: unknown type %d", name, val_type);
|
2002-11-08 19:29:39 +00:00
|
|
|
}
|
2003-01-10 05:01:48 +00:00
|
|
|
|
2003-07-14 04:46:48 +00:00
|
|
|
done:
|
2003-01-10 05:01:48 +00:00
|
|
|
g_free(name);
|
|
|
|
|
2002-11-08 19:29:39 +00:00
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2009-08-04 18:48:45 +00:00
|
|
|
static gint ett_PRINTER_DATA_CTR = -1;
|
2002-11-08 19:29:39 +00:00
|
|
|
|
|
|
|
static int SpoolssEnumPrinterDataEx_r(tvbuff_t *tvb, int offset,
|
|
|
|
packet_info *pinfo, proto_tree *tree,
|
2004-01-19 20:10:37 +00:00
|
|
|
guint8 *drep)
|
2002-11-08 19:29:39 +00:00
|
|
|
{
|
2003-01-10 05:01:48 +00:00
|
|
|
guint32 size, num_values;
|
2008-05-15 01:44:53 +00:00
|
|
|
proto_item *hidden_item;
|
2002-11-08 19:29:39 +00:00
|
|
|
|
2008-05-15 01:44:53 +00:00
|
|
|
hidden_item = proto_tree_add_uint(
|
2003-01-28 22:51:54 +00:00
|
|
|
tree, hf_printerdata, tvb, offset, 0, 1);
|
2008-05-15 01:44:53 +00:00
|
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
2003-01-28 22:51:54 +00:00
|
|
|
|
|
|
|
/* Parse packet */
|
|
|
|
|
2003-01-10 05:01:48 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
|
|
|
tvb, offset, pinfo, tree, drep,
|
2003-02-14 06:23:45 +00:00
|
|
|
hf_buffer_size, &size);
|
2003-01-10 05:01:48 +00:00
|
|
|
|
|
|
|
dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset + size + 4, pinfo, NULL, drep, hf_returned,
|
2003-01-10 05:01:48 +00:00
|
|
|
&num_values);
|
2002-11-08 19:29:39 +00:00
|
|
|
|
|
|
|
if (size) {
|
2003-01-10 05:01:48 +00:00
|
|
|
proto_item *item;
|
|
|
|
proto_tree *subtree;
|
|
|
|
int offset2 = offset;
|
|
|
|
guint32 i;
|
|
|
|
|
|
|
|
item = proto_tree_add_text(
|
|
|
|
tree, tvb, offset, 0, "Printer data");
|
2002-11-08 19:29:39 +00:00
|
|
|
|
2003-01-10 05:01:48 +00:00
|
|
|
subtree = proto_item_add_subtree(item, ett_PRINTER_DATA_CTR);
|
2002-11-08 19:29:39 +00:00
|
|
|
|
2003-01-10 05:01:48 +00:00
|
|
|
for (i=0; i < num_values; i++)
|
|
|
|
offset2 = dissect_spoolss_printer_enum_values(
|
|
|
|
tvb, offset2, pinfo, subtree, drep);
|
2002-11-08 19:29:39 +00:00
|
|
|
}
|
|
|
|
|
2003-01-10 05:01:48 +00:00
|
|
|
offset += size;
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_needed, NULL);
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-10 05:01:48 +00:00
|
|
|
offset = dissect_ndr_uint32(
|
2003-02-14 06:23:45 +00:00
|
|
|
tvb, offset, pinfo, tree, drep, hf_returned, NULL);
|
2002-11-08 19:29:39 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
offset = dissect_doserror(
|
|
|
|
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
|
2002-11-08 19:29:39 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/*
|
|
|
|
* List of subdissectors for this pipe.
|
|
|
|
*/
|
2001-11-12 08:58:45 +00:00
|
|
|
|
2001-11-21 02:08:57 +00:00
|
|
|
static dcerpc_sub_dissector dcerpc_spoolss_dissectors[] = {
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ENUMPRINTERS, "EnumPrinters",
|
2002-01-03 20:42:41 +00:00
|
|
|
SpoolssEnumPrinters_q, SpoolssEnumPrinters_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_OPENPRINTER, "OpenPrinter",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_SETJOB, "SetJob",
|
2002-05-10 02:41:48 +00:00
|
|
|
SpoolssSetJob_q, SpoolssSetJob_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_GETJOB, "GetJob",
|
2002-05-10 02:41:48 +00:00
|
|
|
SpoolssGetJob_q, SpoolssGetJob_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ENUMJOBS, "EnumJobs",
|
2002-04-24 03:08:49 +00:00
|
|
|
SpoolssEnumJobs_q, SpoolssEnumJobs_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ADDPRINTER, "AddPrinter",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_DELETEPRINTER, "DeletePrinter",
|
2002-01-03 20:42:41 +00:00
|
|
|
SpoolssDeletePrinter_q, SpoolssDeletePrinter_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_SETPRINTER, "SetPrinter",
|
2002-01-03 20:42:41 +00:00
|
|
|
SpoolssSetPrinter_q, SpoolssSetPrinter_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_GETPRINTER, "GetPrinter",
|
2002-01-03 20:42:41 +00:00
|
|
|
SpoolssGetPrinter_q, SpoolssGetPrinter_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ADDPRINTERDRIVER, "AddPrinterDriver",
|
2002-01-07 19:55:48 +00:00
|
|
|
NULL, SpoolssAddPrinterDriver_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ENUMPRINTERDRIVERS, "EnumPrinterDrivers",
|
2002-05-20 06:53:31 +00:00
|
|
|
SpoolssEnumPrinterDrivers_q, SpoolssEnumPrinterDrivers_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_GETPRINTERDRIVER, "GetPrinterDriver",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_GETPRINTERDRIVERDIRECTORY, "GetPrinterDriverDirectory",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_DELETEPRINTERDRIVER, "DeletePrinterDriver",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ADDPRINTPROCESSOR, "AddPrintProcessor",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ENUMPRINTPROCESSORS, "EnumPrintProcessor",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_GETPRINTPROCESSORDIRECTORY, "GetPrintProcessorDirectory",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_STARTDOCPRINTER, "StartDocPrinter",
|
2002-05-13 01:27:07 +00:00
|
|
|
SpoolssStartDocPrinter_q, SpoolssStartDocPrinter_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_STARTPAGEPRINTER, "StartPagePrinter",
|
2002-05-10 02:41:48 +00:00
|
|
|
SpoolssStartPagePrinter_q, SpoolssStartPagePrinter_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_WRITEPRINTER, "WritePrinter",
|
2002-05-20 00:36:04 +00:00
|
|
|
SpoolssWritePrinter_q, SpoolssWritePrinter_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ENDPAGEPRINTER, "EndPagePrinter",
|
2002-05-10 02:41:48 +00:00
|
|
|
SpoolssEndPagePrinter_q, SpoolssEndPagePrinter_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ABORTPRINTER, "AbortPrinter",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_READPRINTER, "ReadPrinter",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ENDDOCPRINTER, "EndDocPrinter",
|
2002-05-13 01:27:07 +00:00
|
|
|
SpoolssEndDocPrinter_q, SpoolssEndDocPrinter_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ADDJOB, "AddJob",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_SCHEDULEJOB, "ScheduleJob",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_GETPRINTERDATA, "GetPrinterData",
|
|
|
|
SpoolssGetPrinterData_q, SpoolssGetPrinterData_r },
|
|
|
|
{ SPOOLSS_SETPRINTERDATA, "SetPrinterData",
|
2002-01-03 20:42:41 +00:00
|
|
|
SpoolssSetPrinterData_q, SpoolssSetPrinterData_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_WAITFORPRINTERCHANGE, "WaitForPrinterChange",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_CLOSEPRINTER, "ClosePrinter",
|
2002-01-03 20:42:41 +00:00
|
|
|
SpoolssClosePrinter_q, SpoolssClosePrinter_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ADDFORM, "AddForm",
|
2002-03-26 04:29:17 +00:00
|
|
|
SpoolssAddForm_q, SpoolssAddForm_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_DELETEFORM, "DeleteForm",
|
2002-03-26 04:29:17 +00:00
|
|
|
SpoolssDeleteForm_q, SpoolssDeleteForm_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_GETFORM, "GetForm",
|
2002-03-26 04:29:17 +00:00
|
|
|
SpoolssGetForm_q, SpoolssGetForm_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_SETFORM, "SetForm",
|
2002-03-26 04:29:17 +00:00
|
|
|
SpoolssSetForm_q, SpoolssSetForm_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ENUMFORMS, "EnumForms",
|
2002-01-03 20:42:41 +00:00
|
|
|
SpoolssEnumForms_q, SpoolssEnumForms_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ENUMPORTS, "EnumPorts",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ENUMMONITORS, "EnumMonitors",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ADDPORT, "AddPort",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_CONFIGUREPORT, "ConfigurePort",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_DELETEPORT, "DeletePort",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_CREATEPRINTERIC, "CreatePrinterIC",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_PLAYGDISCRIPTONPRINTERIC, "PlayDiscriptOnPrinterIC",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_DELETEPRINTERIC, "DeletePrinterIC",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ADDPRINTERCONNECTION, "AddPrinterConnection",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_DELETEPRINTERCONNECTION, "DeletePrinterConnection",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_PRINTERMESSAGEBOX, "PrinterMessageBox",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ADDMONITOR, "AddMonitor",
|
2002-03-25 01:09:01 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_DELETEMONITOR, "DeleteMonitor",
|
2002-03-25 01:09:01 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_DELETEPRINTPROCESSOR, "DeletePrintProcessor",
|
2002-03-25 01:09:01 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ADDPRINTPROVIDER, "AddPrintProvider",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_DELETEPRINTPROVIDER, "DeletePrintProvider",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ENUMPRINTPROCDATATYPES, "EnumPrintProcDataTypes",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_RESETPRINTER, "ResetPrinter",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_GETPRINTERDRIVER2, "GetPrinterDriver2",
|
2002-05-20 06:53:31 +00:00
|
|
|
SpoolssGetPrinterDriver2_q, SpoolssGetPrinterDriver2_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_FINDFIRSTPRINTERCHANGENOTIFICATION,
|
|
|
|
"FindFirstPrinterChangeNotification",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_FINDNEXTPRINTERCHANGENOTIFICATION,
|
|
|
|
"FindNextPrinterChangeNotification",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_FCPN, "FCPN",
|
2002-06-06 05:46:55 +00:00
|
|
|
SpoolssFCPN_q, SpoolssFCPN_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ROUTERFINDFIRSTPRINTERNOTIFICATIONOLD,
|
|
|
|
"RouterFindFirstPrinterNotificationOld",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_REPLYOPENPRINTER, "ReplyOpenPrinter",
|
2002-01-03 20:42:41 +00:00
|
|
|
SpoolssReplyOpenPrinter_q, SpoolssReplyOpenPrinter_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ROUTERREPLYPRINTER, "RouterReplyPrinter",
|
2002-06-25 03:01:05 +00:00
|
|
|
SpoolssRouterReplyPrinter_q, SpoolssRouterReplyPrinter_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_REPLYCLOSEPRINTER, "ReplyClosePrinter",
|
2002-06-06 03:18:14 +00:00
|
|
|
SpoolssReplyClosePrinter_q, SpoolssReplyClosePrinter_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ADDPORTEX, "AddPortEx",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_REMOTEFINDFIRSTPRINTERCHANGENOTIFICATION,
|
|
|
|
"RemoteFindFirstPrinterChangeNotification",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_SPOOLERINIT, "SpoolerInit",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_RESETPRINTEREX, "ResetPrinterEx",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_RFFPCNEX, "RFFPCNEX",
|
2002-01-03 20:42:41 +00:00
|
|
|
SpoolssRFFPCNEX_q, SpoolssRFFPCNEX_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_RRPCN, "RRPCN",
|
2002-06-05 07:15:47 +00:00
|
|
|
SpoolssRRPCN_q, SpoolssRRPCN_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_RFNPCNEX, "RFNPCNEX",
|
2002-06-05 04:15:30 +00:00
|
|
|
SpoolssRFNPCNEX_q, SpoolssRFNPCNEX_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_OPENPRINTEREX, "OpenPrinterEx",
|
2002-01-03 20:42:41 +00:00
|
|
|
SpoolssOpenPrinterEx_q, SpoolssOpenPrinterEx_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ADDPRINTEREX, "AddPrinterEx",
|
2002-01-03 20:42:41 +00:00
|
|
|
NULL, SpoolssAddPrinterEx_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ENUMPRINTERDATA, "EnumPrinterData",
|
2002-01-03 20:42:41 +00:00
|
|
|
SpoolssEnumPrinterData_q, SpoolssEnumPrinterData_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_DELETEPRINTERDATA, "DeletePrinterData",
|
2002-05-20 00:36:04 +00:00
|
|
|
SpoolssDeletePrinterData_q, SpoolssDeletePrinterData_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_GETPRINTERDATAEX, "GetPrinterDataEx",
|
2002-01-03 20:42:41 +00:00
|
|
|
SpoolssGetPrinterDataEx_q, SpoolssGetPrinterDataEx_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_SETPRINTERDATAEX, "SetPrinterDataEx",
|
2002-01-03 20:42:41 +00:00
|
|
|
SpoolssSetPrinterDataEx_q, SpoolssSetPrinterDataEx_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ENUMPRINTERDATAEX, "EnumPrinterDataEx",
|
2002-11-08 19:29:39 +00:00
|
|
|
SpoolssEnumPrinterDataEx_q, SpoolssEnumPrinterDataEx_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ENUMPRINTERKEY, "EnumPrinterKey",
|
2002-11-07 17:45:30 +00:00
|
|
|
SpoolssEnumPrinterKey_q, SpoolssEnumPrinterKey_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_DELETEPRINTERDATAEX, "DeletePrinterDataEx",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_DELETEPRINTERDRIVEREX, "DeletePrinterDriverEx",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-08-28 21:04:11 +00:00
|
|
|
{ SPOOLSS_ADDPRINTERDRIVEREX, "AddPrinterDriverEx",
|
2002-04-30 01:44:35 +00:00
|
|
|
NULL, SpoolssGeneric_r },
|
2002-03-25 01:09:01 +00:00
|
|
|
|
|
|
|
{ 0, NULL, NULL, NULL },
|
2001-11-12 08:58:45 +00:00
|
|
|
};
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/*
|
|
|
|
* Dissector initialisation function
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* Protocol registration */
|
|
|
|
|
|
|
|
static int proto_dcerpc_spoolss = -1;
|
|
|
|
static gint ett_dcerpc_spoolss = -1;
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
void
|
2001-11-21 02:08:57 +00:00
|
|
|
proto_register_dcerpc_spoolss(void)
|
2001-11-12 08:58:45 +00:00
|
|
|
{
|
2002-05-10 02:41:48 +00:00
|
|
|
static hf_register_info hf[] = {
|
2002-06-24 00:03:18 +00:00
|
|
|
|
2002-05-20 06:53:31 +00:00
|
|
|
/* GetPrinterDriver2 */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_clientmajorversion,
|
2002-08-28 21:04:11 +00:00
|
|
|
{ "Client major version", "spoolss.clientmajorversion", FT_UINT32, BASE_DEC,
|
2002-05-20 06:53:31 +00:00
|
|
|
NULL, 0x0, "Client printer driver major version", HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_clientminorversion,
|
2002-08-28 21:04:11 +00:00
|
|
|
{ "Client minor version", "spoolss.clientminorversion", FT_UINT32, BASE_DEC,
|
2002-05-20 06:53:31 +00:00
|
|
|
NULL, 0x0, "Client printer driver minor version", HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_servermajorversion,
|
2002-08-28 21:04:11 +00:00
|
|
|
{ "Server major version", "spoolss.servermajorversion", FT_UINT32, BASE_DEC,
|
2002-05-20 06:53:31 +00:00
|
|
|
NULL, 0x0, "Server printer driver major version", HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_serverminorversion,
|
2002-08-28 21:04:11 +00:00
|
|
|
{ "Server minor version", "spoolss.serverminorversion", FT_UINT32, BASE_DEC,
|
2002-05-20 06:53:31 +00:00
|
|
|
NULL, 0x0, "Server printer driver minor version", HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_driverpath,
|
2002-05-20 06:53:31 +00:00
|
|
|
{ "Driver path", "spoolss.driverpath", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_datafile,
|
2002-05-20 06:53:31 +00:00
|
|
|
{ "Data file", "spoolss.datafile", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_configfile,
|
2002-05-20 06:53:31 +00:00
|
|
|
{ "Config file", "spoolss.configfile", FT_STRING, BASE_NONE,
|
|
|
|
NULL, 0, "Printer name", HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_helpfile,
|
2002-05-20 06:53:31 +00:00
|
|
|
{ "Help file", "spoolss.helpfile", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_monitorname,
|
2002-05-20 06:53:31 +00:00
|
|
|
{ "Monitor name", "spoolss.monitorname", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_defaultdatatype,
|
2002-05-20 06:53:31 +00:00
|
|
|
{ "Default data type", "spoolss.defaultdatatype", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_driverinfo_cversion,
|
2002-05-20 06:53:31 +00:00
|
|
|
{ "Driver version", "spoolss.driverversion", FT_UINT32, BASE_DEC,
|
|
|
|
VALS(driverinfo_cversion_vals), 0, "Printer name", HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_dependentfiles,
|
2002-05-20 06:53:31 +00:00
|
|
|
{ "Dependent files", "spoolss.dependentfiles", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2002-06-05 04:15:30 +00:00
|
|
|
|
2003-02-11 03:22:59 +00:00
|
|
|
{ &hf_printer_status,
|
2002-06-17 03:21:15 +00:00
|
|
|
{ "Status", "spoolss.printer_status", FT_UINT32, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
VALS(printer_status_vals), 0, NULL, HFILL }},
|
2007-04-26 06:00:48 +00:00
|
|
|
|
|
|
|
{ &hf_previousdrivernames,
|
|
|
|
{ "Previous Driver Names", "spoolss.previousdrivernames", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2007-04-26 06:00:48 +00:00
|
|
|
|
|
|
|
{ &hf_driverdate,
|
2009-12-19 03:17:44 +00:00
|
|
|
{ "Driver Date", "spoolss.driverdate", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL,
|
2007-04-26 06:00:48 +00:00
|
|
|
NULL, 0, "Date of driver creation", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_padding,
|
|
|
|
{ "Padding", "spoolss.padding", FT_UINT32, BASE_HEX,
|
|
|
|
NULL, 0, "Some padding - conveys no semantic information", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_driver_version_low,
|
|
|
|
{ "Minor Driver Version", "spoolss.minordriverversion", FT_UINT32, BASE_DEC,
|
|
|
|
NULL, 0, "Driver Version Low", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_driver_version_high,
|
|
|
|
{ "Major Driver Version", "spoolss.majordriverversion", FT_UINT32, BASE_DEC,
|
|
|
|
NULL, 0, "Driver Version High", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_mfgname,
|
|
|
|
{ "Mfgname", "spoolss.mfgname", FT_STRING, BASE_NONE,
|
|
|
|
NULL, 0, "Manufacturer Name", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_oemurl,
|
|
|
|
{ "OEM URL", "spoolss.oemrul", FT_STRING, BASE_NONE,
|
|
|
|
NULL, 0, "OEM URL - Website of Vendor", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_hardwareid,
|
|
|
|
{ "Hardware ID", "spoolss.hardwareid", FT_STRING, BASE_NONE,
|
|
|
|
NULL, 0, "Hardware Identification Information", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_provider,
|
|
|
|
{ "Provider", "spoolss.provider", FT_STRING, BASE_NONE,
|
|
|
|
NULL, 0, "Provider of Driver", HFILL }},
|
2002-06-17 03:21:15 +00:00
|
|
|
|
2002-06-25 03:01:05 +00:00
|
|
|
/* Setprinter RPC */
|
|
|
|
|
2003-02-11 03:22:59 +00:00
|
|
|
{ &hf_setprinter_cmd,
|
2002-06-24 04:36:56 +00:00
|
|
|
{ "Command", "spoolss.setprinter_cmd", FT_UINT32, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
VALS(setprinter_cmd_vals), 0, NULL, HFILL }},
|
2002-06-25 03:01:05 +00:00
|
|
|
|
2002-08-27 07:38:36 +00:00
|
|
|
/* Enumprinters */
|
|
|
|
|
2003-01-10 05:41:29 +00:00
|
|
|
{ &hf_enumprinters_flags,
|
|
|
|
{ "Flags", "spoolss.enumprinters.flags",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
|
2003-01-10 05:41:29 +00:00
|
|
|
|
2002-08-27 07:38:36 +00:00
|
|
|
{ &hf_enumprinters_flags_local,
|
|
|
|
{ "Enum local", "spoolss.enumprinters.flags.enum_local",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ENUM_LOCAL, NULL, HFILL }},
|
2002-08-27 07:38:36 +00:00
|
|
|
|
|
|
|
{ &hf_enumprinters_flags_name,
|
|
|
|
{ "Enum name", "spoolss.enumprinters.flags.enum_name",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ENUM_NAME, NULL, HFILL }},
|
2002-08-27 07:38:36 +00:00
|
|
|
|
|
|
|
{ &hf_enumprinters_flags_shared,
|
|
|
|
{ "Enum shared", "spoolss.enumprinters.flags.enum_shared",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ENUM_SHARED, NULL, HFILL }},
|
2002-08-27 07:38:36 +00:00
|
|
|
|
|
|
|
{ &hf_enumprinters_flags_default,
|
|
|
|
{ "Enum default", "spoolss.enumprinters.flags.enum_default",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ENUM_DEFAULT, NULL, HFILL }},
|
2002-08-27 07:38:36 +00:00
|
|
|
|
|
|
|
{ &hf_enumprinters_flags_connections,
|
|
|
|
{ "Enum connections", "spoolss.enumprinters.flags.enum_connections",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ENUM_CONNECTIONS, NULL, HFILL }},
|
2002-08-27 07:38:36 +00:00
|
|
|
|
|
|
|
{ &hf_enumprinters_flags_network,
|
|
|
|
{ "Enum network", "spoolss.enumprinters.flags.enum_network",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ENUM_NETWORK, NULL, HFILL }},
|
2002-08-27 07:38:36 +00:00
|
|
|
|
|
|
|
{ &hf_enumprinters_flags_remote,
|
|
|
|
{ "Enum remote", "spoolss.enumprinters.flags.enum_remote",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ENUM_REMOTE, NULL, HFILL }},
|
2002-11-07 17:45:30 +00:00
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
/* GetPrinter */
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_start_time,
|
|
|
|
{ "Start time", "spoolss.start_time",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_end_time,
|
|
|
|
{ "End time", "spoolss.end_time",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_elapsed_time,
|
|
|
|
{ "Elapsed time", "spoolss.elapsed_time",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
/*
|
|
|
|
* New hf index values
|
|
|
|
*/
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_opnum,
|
|
|
|
{ "Operation", "spoolss.opnum", FT_UINT16, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0x0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_hnd,
|
|
|
|
{ "Context handle", "spoolss.hnd", FT_BYTES, BASE_NONE,
|
|
|
|
NULL, 0x0, "SPOOLSS policy handle", HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_rc,
|
|
|
|
{ "Return code", "spoolss.rc", FT_UINT32, BASE_HEX,
|
|
|
|
VALS(DOS_errors), 0x0, "SPOOLSS return code", HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_offered,
|
|
|
|
{ "Offered", "spoolss.offered", FT_UINT32, BASE_DEC,
|
|
|
|
NULL, 0x0, "Size of buffer offered in this request",
|
|
|
|
HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_needed,
|
|
|
|
{ "Needed", "spoolss.needed", FT_UINT32, BASE_DEC,
|
|
|
|
NULL, 0x0, "Size of buffer required for request", HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_returned,
|
|
|
|
{ "Returned", "spoolss.returned", FT_UINT32, BASE_DEC,
|
|
|
|
NULL, 0x0, "Number of items returned", HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_buffer_size,
|
|
|
|
{ "Buffer size", "spoolss.buffer.size", FT_UINT32, BASE_DEC,
|
|
|
|
NULL, 0x0, "Size of buffer", HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_buffer_data,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
{ "Buffer data", "spoolss.buffer.data", FT_BYTES, BASE_NONE,
|
2003-02-14 06:23:45 +00:00
|
|
|
NULL, 0x0, "Contents of buffer", HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_offset,
|
|
|
|
{ "Offset", "spoolss.offset", FT_UINT32, BASE_DEC,
|
|
|
|
NULL, 0x0, "Offset of data", HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_level,
|
|
|
|
{ "Info level", "spoolss.enumjobs.level", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0x0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_printername,
|
|
|
|
{ "Printer name", "spoolss.printername", FT_STRING,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_NONE, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_machinename,
|
|
|
|
{ "Machine name", "spoolss.machinename", FT_STRING,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_NONE, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_notifyname,
|
|
|
|
{ "Notify name", "spoolss.notifyname", FT_STRING,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_NONE, NULL, 0, NULL, HFILL }},
|
2002-12-04 05:41:47 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_printerdesc,
|
|
|
|
{ "Printer description", "spoolss.printerdesc", FT_STRING,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_NONE, NULL, 0, NULL, HFILL }},
|
2002-12-04 05:41:47 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_printercomment,
|
|
|
|
{ "Printer comment", "spoolss.printercomment", FT_STRING,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_NONE, NULL, 0, NULL, HFILL }},
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_servername,
|
|
|
|
{ "Server name", "spoolss.servername", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_sharename,
|
|
|
|
{ "Share name", "spoolss.sharename", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_portname,
|
|
|
|
{ "Port name", "spoolss.portname", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_printerlocation,
|
|
|
|
{ "Printer location", "spoolss.printerlocation", FT_STRING,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_NONE, NULL, 0, NULL, HFILL }},
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_architecture,
|
|
|
|
{ "Architecture name", "spoolss.architecture", FT_STRING,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_NONE, NULL, 0, NULL, HFILL }},
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_drivername,
|
|
|
|
{ "Driver name", "spoolss.drivername", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_username,
|
|
|
|
{ "User name", "spoolss.username", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_documentname,
|
|
|
|
{ "Document name", "spoolss.document", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_outputfile,
|
|
|
|
{ "Output file", "spoolss.outputfile", FT_STRING, BASE_NONE,
|
|
|
|
NULL, 0, "Output File", HFILL }},
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_datatype,
|
|
|
|
{ "Datatype", "spoolss.Datatype", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-01-28 22:51:54 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_textstatus,
|
|
|
|
{ "Text status", "spoolss.textstatus", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_sepfile,
|
|
|
|
{ "Separator file", "spoolss.setpfile", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_parameters,
|
|
|
|
{ "Parameters", "spoolss.parameters", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_printprocessor,
|
|
|
|
{ "Print processor", "spoolss.printprocessor", FT_STRING,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_NONE, NULL, 0, NULL, HFILL }},
|
2003-01-28 22:51:54 +00:00
|
|
|
|
|
|
|
/* Printer data */
|
|
|
|
|
|
|
|
{ &hf_printerdata,
|
|
|
|
{ "Data", "spoolss.printerdata", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_HEX, NULL, 0, NULL, HFILL }},
|
2003-01-28 22:51:54 +00:00
|
|
|
|
|
|
|
{ &hf_printerdata_key,
|
|
|
|
{ "Key", "spoolss.printerdata.key", FT_STRING,
|
|
|
|
BASE_NONE, NULL, 0, "Printer data key", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_printerdata_value,
|
|
|
|
{ "Value", "spoolss.printerdata.value",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0, "Printer data value",
|
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_printerdata_type,
|
|
|
|
{ "Type", "spoolss.printerdata.type",
|
|
|
|
FT_UINT32, BASE_DEC, VALS(reg_datatypes), 0,
|
|
|
|
"Printer data type", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_printerdata_size,
|
|
|
|
{ "Size", "spoolss.printerdata.size",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, "Printer data size",
|
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_printerdata_data,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
{ "Data", "spoolss.printerdata.data", FT_BYTES, BASE_NONE,
|
2003-01-28 22:51:54 +00:00
|
|
|
NULL, 0x0, "Printer data", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_printerdata_data_dword,
|
|
|
|
{ "DWORD data", "spoolss.printerdata.data.dword",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
|
2003-01-28 22:51:54 +00:00
|
|
|
|
|
|
|
{ &hf_printerdata_data_sz,
|
|
|
|
{ "String data", "spoolss.printerdata.data.sz",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_STRING, BASE_NONE, NULL, 0, NULL,
|
2003-01-28 22:51:54 +00:00
|
|
|
HFILL }},
|
|
|
|
|
2002-11-11 05:39:51 +00:00
|
|
|
/* Devicemode */
|
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmodectr_size,
|
|
|
|
{ "Devicemode ctr size", "spoolss.devicemodectr.size",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL,
|
2003-01-28 22:51:54 +00:00
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_devmode,
|
|
|
|
{ "Devicemode", "spoolss.devmode", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_HEX, NULL, 0, NULL, HFILL }},
|
2003-01-28 22:51:54 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_size,
|
|
|
|
{ "Size", "spoolss.devmode.size",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_spec_version,
|
|
|
|
{ "Spec version", "spoolss.devmode.spec_version",
|
|
|
|
FT_UINT16, BASE_DEC, VALS(devmode_specversion_vals),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_driver_version,
|
|
|
|
{ "Driver version", "spoolss.devmode.driver_version",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_size2,
|
|
|
|
{ "Size2", "spoolss.devmode.size2",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_fields,
|
|
|
|
{ "Fields", "spoolss.devmode.fields",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_orientation,
|
|
|
|
{ "Orientation", "spoolss.devmode.orientation",
|
2002-11-19 03:01:18 +00:00
|
|
|
FT_UINT16, BASE_DEC, VALS(devmode_orientation_vals),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_paper_size,
|
|
|
|
{ "Paper size", "spoolss.devmode.paper_size",
|
|
|
|
FT_UINT16, BASE_DEC, VALS(devmode_papersize_vals),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_paper_width,
|
|
|
|
{ "Paper width", "spoolss.devmode.paper_width",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_paper_length,
|
|
|
|
{ "Paper length", "spoolss.devmode.paper_length",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_scale,
|
|
|
|
{ "Scale", "spoolss.devmode.scale",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_copies,
|
|
|
|
{ "Copies", "spoolss.devmode.copies",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_default_source,
|
|
|
|
{ "Default source", "spoolss.devmode.default_source",
|
|
|
|
FT_UINT16, BASE_DEC, VALS(devmode_papersource_vals),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_print_quality,
|
|
|
|
{ "Print quality", "spoolss.devmode.print_quality",
|
|
|
|
FT_UINT16, BASE_DEC, VALS(devmode_printquality_vals),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_color,
|
|
|
|
{ "Color", "spoolss.devmode.color",
|
|
|
|
FT_UINT16, BASE_DEC, VALS(devmode_colour_vals), 0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_duplex,
|
|
|
|
{ "Duplex", "spoolss.devmode.duplex",
|
|
|
|
FT_UINT16, BASE_DEC, VALS(devmode_duplex_vals), 0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_y_resolution,
|
|
|
|
{ "Y resolution", "spoolss.devmode.y_resolution",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_tt_option,
|
|
|
|
{ "TT option", "spoolss.devmode.tt_option",
|
|
|
|
FT_UINT16, BASE_DEC, VALS(devmode_ttoption_vals), 0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_collate,
|
|
|
|
{ "Collate", "spoolss.devmode.collate",
|
|
|
|
FT_UINT16, BASE_DEC, VALS(devmode_collate_vals), 0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_log_pixels,
|
|
|
|
{ "Log pixels", "spoolss.devmode.log_pixels",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_bits_per_pel,
|
|
|
|
{ "Bits per pel", "spoolss.devmode.bits_per_pel",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_pels_width,
|
|
|
|
{ "Pels width", "spoolss.devmode.pels_width",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_pels_height,
|
|
|
|
{ "Pels height", "spoolss.devmode.pels_height",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_display_flags,
|
|
|
|
{ "Display flags", "spoolss.devmode.display_flags",
|
|
|
|
FT_UINT32, BASE_DEC, VALS(devmode_displayflags_vals), 0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_display_freq,
|
|
|
|
{ "Display frequency", "spoolss.devmode.display_freq",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL,
|
2002-11-11 05:39:51 +00:00
|
|
|
HFILL }},
|
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_icm_method,
|
|
|
|
{ "ICM method", "spoolss.devmode.icm_method",
|
|
|
|
FT_UINT32, BASE_DEC, VALS(devmode_icmmethod_vals), 0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_icm_intent,
|
|
|
|
{ "ICM intent", "spoolss.devmode.icm_intent",
|
|
|
|
FT_UINT32, BASE_DEC, VALS(devmode_icmintent_vals), 0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_media_type,
|
|
|
|
{ "Media type", "spoolss.devmode.media_type",
|
|
|
|
FT_UINT32, BASE_DEC, VALS(devmode_mediatype_vals), 0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_dither_type,
|
|
|
|
{ "Dither type", "spoolss.devmode.dither_type",
|
|
|
|
FT_UINT32, BASE_DEC, VALS(devmode_dithertype_vals), 0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_reserved1,
|
|
|
|
{ "Reserved1", "spoolss.devmode.reserved1",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_reserved2,
|
|
|
|
{ "Reserved2", "spoolss.devmode.reserved2",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_panning_width,
|
|
|
|
{ "Panning width", "spoolss.devmode.panning_width",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_panning_height,
|
|
|
|
{ "Panning height", "spoolss.devmode.panning_height",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2002-11-11 05:39:51 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_devmode_driver_extra_len,
|
2002-11-11 05:39:51 +00:00
|
|
|
{ "Driver extra length",
|
2003-01-28 22:51:54 +00:00
|
|
|
"spoolss.devmode.driver_extra_len",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL,
|
2002-11-11 05:39:51 +00:00
|
|
|
HFILL }},
|
|
|
|
|
2003-10-15 08:08:28 +00:00
|
|
|
{ &hf_devmode_driver_extra,
|
|
|
|
{ "Driver extra", "spoolss.devmode.driver_extra",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
|
2003-10-15 08:08:28 +00:00
|
|
|
|
2002-11-19 03:01:18 +00:00
|
|
|
/* Devicemode fields */
|
|
|
|
|
|
|
|
{ &hf_devmode_fields_orientation,
|
|
|
|
{ "Orientation", "spoolss.devmode.fields.orientation",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_ORIENTATION, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_papersize,
|
|
|
|
{ "Paper size", "spoolss.devmode.fields.paper_size",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_PAPERSIZE, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_paperlength,
|
|
|
|
{ "Paper length", "spoolss.devmode.fields.paper_length",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_PAPERLENGTH, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_paperwidth,
|
|
|
|
{ "Paper width", "spoolss.devmode.fields.paper_width",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_PAPERWIDTH, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_scale,
|
|
|
|
{ "Scale", "spoolss.devmode.fields.scale",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_SCALE, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_position,
|
|
|
|
{ "Position", "spoolss.devmode.fields.position",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_POSITION, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_nup,
|
|
|
|
{ "N-up", "spoolss.devmode.fields.nup",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_NUP, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_copies,
|
|
|
|
{ "Copies", "spoolss.devmode.fields.copies",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_COPIES, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_defaultsource,
|
|
|
|
{ "Default source", "spoolss.devmode.fields.default_source",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_DEFAULTSOURCE, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_printquality,
|
|
|
|
{ "Print quality", "spoolss.devmode.fields.print_quality",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_PRINTQUALITY, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_color,
|
|
|
|
{ "Color", "spoolss.devmode.fields.color",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_COLOR, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_duplex,
|
|
|
|
{ "Duplex", "spoolss.devmode.fields.duplex",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_DUPLEX, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_yresolution,
|
|
|
|
{ "Y resolution", "spoolss.devmode.fields.y_resolution",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_YRESOLUTION, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_ttoption,
|
|
|
|
{ "TT option", "spoolss.devmode.fields.tt_option",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_TTOPTION, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_collate,
|
|
|
|
{ "Collate", "spoolss.devmode.fields.collate",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_COLLATE, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_formname,
|
|
|
|
{ "Form name", "spoolss.devmode.fields.form_name",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_FORMNAME, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_logpixels,
|
|
|
|
{ "Log pixels", "spoolss.devmode.fields.log_pixels",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_LOGPIXELS, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_bitsperpel,
|
|
|
|
{ "Bits per pel", "spoolss.devmode.fields.bits_per_pel",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_BITSPERPEL, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_pelswidth,
|
|
|
|
{ "Pels width", "spoolss.devmode.fields.pels_width",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_PELSWIDTH, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_pelsheight,
|
|
|
|
{ "Pels height", "spoolss.devmode.fields.pels_height",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_PELSHEIGHT, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_displayflags,
|
|
|
|
{ "Display flags", "spoolss.devmode.fields.display_flags",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_DISPLAYFLAGS, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_displayfrequency,
|
|
|
|
{ "Display frequency",
|
|
|
|
"spoolss.devmode.fields.display_frequency",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_DISPLAYFREQUENCY, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_icmmethod,
|
|
|
|
{ "ICM method", "spoolss.devmode.fields.icm_method",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_ICMMETHOD, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_icmintent,
|
|
|
|
{ "ICM intent", "spoolss.devmode.fields.icm_intent",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_ICMINTENT, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_mediatype,
|
|
|
|
{ "Media type", "spoolss.devmode.fields.media_type",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_MEDIATYPE, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_dithertype,
|
|
|
|
{ "Dither type", "spoolss.devmode.fields.dither_type",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_DITHERTYPE, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_panningwidth,
|
|
|
|
{ "Panning width", "spoolss.devmode.fields.panning_width",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_PANNINGWIDTH, NULL, HFILL }},
|
2002-11-19 03:01:18 +00:00
|
|
|
|
|
|
|
{ &hf_devmode_fields_panningheight,
|
|
|
|
{ "Panning height", "spoolss.devmode.fields.panning_height",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
DEVMODE_PANNINGHEIGHT, NULL, HFILL }},
|
2002-11-19 05:25:04 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
/* EnumPrinterData RPC */
|
2002-11-19 05:25:04 +00:00
|
|
|
|
2003-01-28 22:51:54 +00:00
|
|
|
{ &hf_enumprinterdata_enumindex,
|
|
|
|
{ "Enum index", "spoolss.enumprinterdata.enumindex",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x0,
|
|
|
|
"Index for start of enumeration", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_enumprinterdata_value_offered,
|
|
|
|
{ "Value size offered",
|
|
|
|
"spoolss.enumprinterdata.value_offered", FT_UINT32,
|
|
|
|
BASE_DEC, NULL, 0x0,
|
|
|
|
"Buffer size offered for printerdata value", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_enumprinterdata_data_offered,
|
|
|
|
{ "Data size offered",
|
|
|
|
"spoolss.enumprinterdata.data_offered", FT_UINT32,
|
|
|
|
BASE_DEC, NULL, 0x0,
|
|
|
|
"Buffer size offered for printerdata data", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_enumprinterdata_value_len,
|
|
|
|
{ "Value length",
|
|
|
|
"spoolss.enumprinterdata.value_len", FT_UINT32,
|
|
|
|
BASE_DEC, NULL, 0x0,
|
|
|
|
"Size of printerdata value", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_enumprinterdata_value_needed,
|
|
|
|
{ "Value size needed",
|
|
|
|
"spoolss.enumprinterdata.value_needed", FT_UINT32,
|
|
|
|
BASE_DEC, NULL, 0x0,
|
|
|
|
"Buffer size needed for printerdata value", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_enumprinterdata_data_needed,
|
|
|
|
{ "Data size needed",
|
|
|
|
"spoolss.enumprinterdata.data_needed", FT_UINT32, BASE_DEC,
|
|
|
|
NULL, 0x0, "Buffer size needed for printerdata data",
|
2002-11-19 05:25:04 +00:00
|
|
|
HFILL }},
|
|
|
|
|
2003-02-05 06:55:56 +00:00
|
|
|
/* Print jobs */
|
|
|
|
|
|
|
|
{ &hf_job_id,
|
|
|
|
{ "Job ID", "spoolss.job.id", FT_UINT32, BASE_DEC,
|
|
|
|
NULL, 0x0, "Job identification number", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_job_status,
|
|
|
|
{ "Job status", "spoolss.job.status", FT_UINT32, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0x0, NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
{ &hf_job_status_paused,
|
|
|
|
{ "Paused", "spoolss.job.status.paused", FT_BOOLEAN, 32,
|
|
|
|
TFS(&tfs_job_status_paused), JOB_STATUS_PAUSED,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
{ &hf_job_status_error,
|
|
|
|
{ "Error", "spoolss.job.status.error", FT_BOOLEAN, 32,
|
|
|
|
TFS(&tfs_job_status_error), JOB_STATUS_ERROR,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
{ &hf_job_status_deleting,
|
|
|
|
{ "Deleting", "spoolss.job.status.deleting", FT_BOOLEAN, 32,
|
|
|
|
TFS(&tfs_job_status_deleting), JOB_STATUS_DELETING,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
{ &hf_job_status_spooling,
|
|
|
|
{ "Spooling", "spoolss.job.status.spooling", FT_BOOLEAN, 32,
|
|
|
|
TFS(&tfs_job_status_spooling), JOB_STATUS_SPOOLING,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
{ &hf_job_status_printing,
|
|
|
|
{ "Printing", "spoolss.job.status.printing", FT_BOOLEAN, 32,
|
|
|
|
TFS(&tfs_job_status_printing), JOB_STATUS_PRINTING,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
{ &hf_job_status_offline,
|
|
|
|
{ "Offline", "spoolss.job.status.offline", FT_BOOLEAN, 32,
|
|
|
|
TFS(&tfs_job_status_offline), JOB_STATUS_OFFLINE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
{ &hf_job_status_paperout,
|
|
|
|
{ "Paperout", "spoolss.job.status.paperout", FT_BOOLEAN, 32,
|
|
|
|
TFS(&tfs_job_status_paperout), JOB_STATUS_PAPEROUT,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
{ &hf_job_status_printed,
|
|
|
|
{ "Printed", "spoolss.job.status.printed", FT_BOOLEAN, 32,
|
|
|
|
TFS(&tfs_job_status_printed), JOB_STATUS_PRINTED,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
{ &hf_job_status_deleted,
|
|
|
|
{ "Deleted", "spoolss.job.status.deleted", FT_BOOLEAN, 32,
|
|
|
|
TFS(&tfs_job_status_deleted), JOB_STATUS_DELETED,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
{ &hf_job_status_blocked,
|
|
|
|
{ "Blocked", "spoolss.job.status.blocked", FT_BOOLEAN, 32,
|
|
|
|
TFS(&tfs_job_status_blocked), JOB_STATUS_BLOCKED,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
{ &hf_job_status_user_intervention,
|
|
|
|
{ "User intervention",
|
|
|
|
"spoolss.job.status.user_intervention", FT_BOOLEAN, 32,
|
|
|
|
TFS(&tfs_job_status_user_intervention),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
JOB_STATUS_USER_INTERVENTION, NULL,
|
2003-02-05 06:55:56 +00:00
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_job_priority,
|
|
|
|
{ "Job priority", "spoolss.job.priority", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0x0, NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
{ &hf_job_position,
|
|
|
|
{ "Job position", "spoolss.job.position", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0x0, NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
|
|
|
{ &hf_job_totalpages,
|
|
|
|
{ "Job total pages", "spoolss.job.totalpages", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0x0, NULL, HFILL }},
|
2003-02-05 06:55:56 +00:00
|
|
|
|
2003-02-10 06:21:57 +00:00
|
|
|
{ &hf_job_totalbytes,
|
|
|
|
{ "Job total bytes", "spoolss.job.totalbytes", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0x0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_job_bytesprinted,
|
|
|
|
{ "Job bytes printed", "spoolss.job.bytesprinted",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
|
2003-02-10 06:21:57 +00:00
|
|
|
HFILL }},
|
|
|
|
|
2003-02-05 06:55:56 +00:00
|
|
|
{ &hf_job_pagesprinted,
|
|
|
|
{ "Job pages printed", "spoolss.job.pagesprinted",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
|
2003-02-05 06:55:56 +00:00
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_job_size,
|
|
|
|
{ "Job size", "spoolss.job.size", FT_UINT32, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0x0, NULL, HFILL }},
|
2003-02-10 02:11:36 +00:00
|
|
|
|
|
|
|
/* Forms */
|
|
|
|
|
|
|
|
{ &hf_form,
|
|
|
|
{ "Data", "spoolss.form", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_HEX, NULL, 0, NULL, HFILL }},
|
2003-02-10 02:11:36 +00:00
|
|
|
|
|
|
|
{ &hf_form_level,
|
|
|
|
{ "Level", "spoolss.form.level", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 02:11:36 +00:00
|
|
|
|
|
|
|
{ &hf_form_name,
|
|
|
|
{ "Name", "spoolss.form.name", FT_STRING, BASE_NONE,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-02-10 02:11:36 +00:00
|
|
|
|
|
|
|
{ &hf_form_flags,
|
|
|
|
{ "Flags", "spoolss.form.flags", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, VALS(form_type_vals), 0, NULL, HFILL }},
|
2003-02-10 02:11:36 +00:00
|
|
|
|
|
|
|
{ &hf_form_unknown,
|
|
|
|
{ "Unknown", "spoolss.form.unknown", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_HEX, NULL, 0, NULL, HFILL }},
|
2003-02-10 02:11:36 +00:00
|
|
|
|
|
|
|
{ &hf_form_width,
|
|
|
|
{ "Width", "spoolss.form.width", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 02:11:36 +00:00
|
|
|
|
|
|
|
{ &hf_form_height,
|
|
|
|
{ "Height", "spoolss.form.height", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 02:11:36 +00:00
|
|
|
|
|
|
|
{ &hf_form_left_margin,
|
|
|
|
{ "Left margin", "spoolss.form.left", FT_UINT32,
|
|
|
|
BASE_DEC, NULL, 0, "Left", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_form_top_margin,
|
|
|
|
{ "Top", "spoolss.form.top", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 02:11:36 +00:00
|
|
|
|
|
|
|
{ &hf_form_horiz_len,
|
|
|
|
{ "Horizontal", "spoolss.form.horiz", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 02:11:36 +00:00
|
|
|
|
|
|
|
{ &hf_form_vert_len,
|
|
|
|
{ "Vertical", "spoolss.form.vert", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 02:11:36 +00:00
|
|
|
|
|
|
|
{ &hf_enumforms_num,
|
|
|
|
{ "Num", "spoolss.enumforms.num", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
/* Print notify */
|
|
|
|
|
|
|
|
{ &hf_notify_options_version,
|
|
|
|
{ "Version", "spoolss.notify_options.version", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_options_flags,
|
|
|
|
{ "Flags", "spoolss.notify_options.flags", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_options_count,
|
|
|
|
{ "Count", "spoolss.notify_options.count", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_option_type,
|
|
|
|
{ "Type", "spoolss.notify_option.type", FT_UINT16, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
VALS(printer_notify_types), 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_option_reserved1,
|
|
|
|
{ "Reserved1", "spoolss.notify_option.reserved1", FT_UINT16,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_option_reserved2,
|
|
|
|
{ "Reserved2", "spoolss.notify_option.reserved2", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_option_reserved3,
|
|
|
|
{ "Reserved3", "spoolss.notify_option.reserved3", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_option_count,
|
|
|
|
{ "Count", "spoolss.notify_option.count", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_option_data_count,
|
|
|
|
{ "Count", "spoolss.notify_option_data.count", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_options_flags_refresh,
|
|
|
|
{ "Refresh", "spoolss.notify_options.flags", FT_BOOLEAN, 32,
|
|
|
|
TFS(&tfs_notify_options_flags_refresh),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_NOTIFY_OPTIONS_REFRESH, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_info_count,
|
|
|
|
{ "Count", "spoolss.notify_info.count", FT_UINT32, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_info_version,
|
|
|
|
{ "Version", "spoolss.notify_info.version", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_info_flags,
|
|
|
|
{ "Flags", "spoolss.notify_info.flags", FT_UINT32, BASE_HEX,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_info_data_type,
|
|
|
|
{ "Type", "spoolss.notify_info_data.type", FT_UINT16,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, VALS(printer_notify_types), 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_field,
|
|
|
|
{ "Field", "spoolss.notify_field", FT_UINT16, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_info_data_count,
|
|
|
|
{ "Count", "spoolss.notify_info_data.count", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_info_data_id,
|
|
|
|
{ "Job Id", "spoolss.notify_info_data.jobid", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_info_data_value1,
|
|
|
|
{ "Value1", "spoolss.notify_info_data.value1", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_HEX, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_info_data_value2,
|
|
|
|
{ "Value2", "spoolss.notify_info_data.value2", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_HEX, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_info_data_bufsize,
|
|
|
|
{ "Buffer size", "spoolss.notify_info_data.bufsize",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_info_data_buffer,
|
|
|
|
{ "Buffer", "spoolss.notify_info_data.buffer", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_HEX, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_info_data_buffer_len,
|
|
|
|
{ "Buffer length", "spoolss.notify_info_data.buffer.len",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_notify_info_data_buffer_data,
|
|
|
|
{ "Buffer data", "spoolss.notify_info_data.buffer.data",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
/* RffpCNex RPC */
|
|
|
|
|
|
|
|
{ &hf_rffpcnex_options,
|
|
|
|
{ "Options", "spoolss.rffpcnex.options", FT_UINT32, BASE_DEC,
|
|
|
|
NULL, 0, "RFFPCNEX options", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_printerlocal, /* XXX: move me */
|
|
|
|
{ "Printer local", "spoolss.printer_local", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags,
|
|
|
|
{ "RFFPCNEX flags", "spoolss.rffpcnex.flags", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_add_printer,
|
|
|
|
{ "Add printer", "spoolss.rffpcnex.flags.add_printer",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_add_printer),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SPOOLSS_PRINTER_CHANGE_ADD_PRINTER, NULL,
|
2003-02-10 06:21:57 +00:00
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_set_printer,
|
|
|
|
{ "Set printer", "spoolss.rffpcnex.flags.set_printer",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_set_printer),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SPOOLSS_PRINTER_CHANGE_SET_PRINTER, NULL,
|
2003-02-10 06:21:57 +00:00
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_delete_printer,
|
|
|
|
{ "Delete printer", "spoolss.rffpcnex.flags.delete_printer",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_delete_printer),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SPOOLSS_PRINTER_CHANGE_DELETE_PRINTER, NULL,
|
2003-02-10 06:21:57 +00:00
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_add_job,
|
|
|
|
{ "Add job", "spoolss.rffpcnex.flags.add_job",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_add_job),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SPOOLSS_PRINTER_CHANGE_ADD_JOB, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_set_job,
|
|
|
|
{ "Set job", "spoolss.rffpcnex.flags.set_job",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_set_job),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SPOOLSS_PRINTER_CHANGE_SET_JOB, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_delete_job,
|
|
|
|
{ "Delete job", "spoolss.rffpcnex.flags.delete_job",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_delete_job),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SPOOLSS_PRINTER_CHANGE_DELETE_JOB, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_write_job,
|
|
|
|
{ "Write job", "spoolss.rffpcnex.flags.write_job",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_write_job),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SPOOLSS_PRINTER_CHANGE_WRITE_JOB, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_add_form,
|
|
|
|
{ "Add form", "spoolss.rffpcnex.flags.add_form",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_add_form),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SPOOLSS_PRINTER_CHANGE_ADD_FORM, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_set_form,
|
|
|
|
{ "Set form", "spoolss.rffpcnex.flags.set_form",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_set_form),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SPOOLSS_PRINTER_CHANGE_SET_FORM, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_delete_form,
|
|
|
|
{ "Delete form", "spoolss.rffpcnex.flags.delete_form",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_delete_form),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SPOOLSS_PRINTER_CHANGE_DELETE_FORM, NULL,
|
2003-02-10 06:21:57 +00:00
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_add_port,
|
|
|
|
{ "Add port", "spoolss.rffpcnex.flags.add_port",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_add_port),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SPOOLSS_PRINTER_CHANGE_ADD_PORT, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_configure_port,
|
|
|
|
{ "Configure port", "spoolss.rffpcnex.flags.configure_port",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_configure_port),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SPOOLSS_PRINTER_CHANGE_CONFIGURE_PORT, NULL,
|
2003-02-10 06:21:57 +00:00
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_delete_port,
|
|
|
|
{ "Delete port", "spoolss.rffpcnex.flags.delete_port",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_delete_port),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SPOOLSS_PRINTER_CHANGE_DELETE_PORT, NULL,
|
2003-02-10 06:21:57 +00:00
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_add_print_processor,
|
|
|
|
{ "Add processor", "spoolss.rffpcnex.flags.add_processor",
|
|
|
|
FT_BOOLEAN, 32,
|
|
|
|
TFS(&tfs_rffpcnex_flags_add_print_processor),
|
|
|
|
SPOOLSS_PRINTER_CHANGE_ADD_PRINT_PROCESSOR,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_delete_print_processor,
|
|
|
|
{ "Delete processor",
|
|
|
|
"spoolss.rffpcnex.flags.delete_processor", FT_BOOLEAN, 32,
|
|
|
|
TFS(&tfs_rffpcnex_flags_delete_print_processor),
|
|
|
|
SPOOLSS_PRINTER_CHANGE_DELETE_PRINT_PROCESSOR,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_add_driver,
|
|
|
|
{ "Add driver", "spoolss.rffpcnex.flags.add_driver",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_add_driver),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SPOOLSS_PRINTER_CHANGE_ADD_PRINTER_DRIVER, NULL,
|
2003-02-10 06:21:57 +00:00
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_set_driver,
|
|
|
|
{ "Set driver", "spoolss.rffpcnex.flags.set_driver",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_set_driver),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SPOOLSS_PRINTER_CHANGE_SET_PRINTER_DRIVER, NULL,
|
2003-02-10 06:21:57 +00:00
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_delete_driver,
|
|
|
|
{ "Delete driver", "spoolss.rffpcnex.flags.delete_driver",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_delete_driver),
|
|
|
|
SPOOLSS_PRINTER_CHANGE_DELETE_PRINTER_DRIVER,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_timeout,
|
|
|
|
{ "Timeout", "spoolss.rffpcnex.flags.timeout",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_rffpcnex_flags_timeout),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SPOOLSS_PRINTER_CHANGE_TIMEOUT, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_rffpcnex_flags_failed_printer_connection,
|
|
|
|
{ "Failed printer connection",
|
|
|
|
"spoolss.rffpcnex.flags.failed_connection_printer",
|
|
|
|
FT_BOOLEAN, 32,
|
|
|
|
TFS(&tfs_rffpcnex_flags_failed_connection_printer),
|
|
|
|
SPOOLSS_PRINTER_CHANGE_FAILED_CONNECTION_PRINTER,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
/* RRPCN RPC */
|
|
|
|
|
|
|
|
{ &hf_rrpcn_changelow,
|
|
|
|
{ "Change low", "spoolss.rrpcn.changelow", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_rrpcn_changehigh,
|
|
|
|
{ "Change high", "spoolss.rrpcn.changehigh", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_rrpcn_unk0,
|
|
|
|
{ "Unknown 0", "spoolss.rrpcn.unk0", FT_UINT32, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_rrpcn_unk1,
|
|
|
|
{ "Unknown 1", "spoolss.rrpcn.unk1", FT_UINT32, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
/* ReplyOpenPrinter RPC */
|
|
|
|
|
|
|
|
{ &hf_replyopenprinter_unk0,
|
|
|
|
{ "Unknown 0", "spoolss.replyopenprinter.unk0", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-10 06:21:57 +00:00
|
|
|
|
|
|
|
{ &hf_replyopenprinter_unk1,
|
|
|
|
{ "Unknown 1", "spoolss.replyopenprinter.unk1", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
/* Printer attributes */
|
|
|
|
|
|
|
|
{ &hf_printer_attributes,
|
|
|
|
{ "Attributes", "spoolss.printer_attributes", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_HEX, NULL, 0, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_printer_attributes_queued,
|
|
|
|
{ "Queued", "spoolss.printer_attributes.queued", FT_BOOLEAN,
|
|
|
|
32, TFS(&tfs_printer_attributes_queued),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ATTRIBUTE_QUEUED, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_printer_attributes_direct,
|
|
|
|
{ "Direct", "spoolss.printer_attributes.direct", FT_BOOLEAN,
|
|
|
|
32, TFS(&tfs_printer_attributes_direct),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ATTRIBUTE_DIRECT, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_printer_attributes_default,
|
|
|
|
{ "Default (9x/ME only)",
|
|
|
|
"spoolss.printer_attributes.default",FT_BOOLEAN,
|
|
|
|
32, TFS(&tfs_printer_attributes_default),
|
|
|
|
PRINTER_ATTRIBUTE_DEFAULT, "Default", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_printer_attributes_shared,
|
|
|
|
{ "Shared", "spoolss.printer_attributes.shared", FT_BOOLEAN,
|
|
|
|
32, TFS(&tfs_printer_attributes_shared),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ATTRIBUTE_SHARED, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_printer_attributes_network,
|
|
|
|
{ "Network", "spoolss.printer_attributes.network",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_printer_attributes_network),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ATTRIBUTE_NETWORK, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_printer_attributes_hidden,
|
|
|
|
{ "Hidden", "spoolss.printer_attributes.hidden", FT_BOOLEAN,
|
|
|
|
32, TFS(&tfs_printer_attributes_hidden),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ATTRIBUTE_HIDDEN, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_printer_attributes_local,
|
|
|
|
{ "Local", "spoolss.printer_attributes.local", FT_BOOLEAN,
|
|
|
|
32, TFS(&tfs_printer_attributes_local),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ATTRIBUTE_LOCAL, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_printer_attributes_enable_devq,
|
|
|
|
{ "Enable devq", "spoolss.printer_attributes.enable_devq",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_printer_attributes_enable_devq),
|
|
|
|
PRINTER_ATTRIBUTE_ENABLE_DEVQ, "Enable evq", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_printer_attributes_keep_printed_jobs,
|
|
|
|
{ "Keep printed jobs",
|
|
|
|
"spoolss.printer_attributes.keep_printed_jobs", FT_BOOLEAN,
|
|
|
|
32, TFS(&tfs_printer_attributes_keep_printed_jobs),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS, NULL,
|
2003-02-11 03:22:59 +00:00
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_printer_attributes_do_complete_first,
|
|
|
|
{ "Do complete first",
|
|
|
|
"spoolss.printer_attributes.do_complete_first", FT_BOOLEAN,
|
|
|
|
32, TFS(&tfs_printer_attributes_do_complete_first),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST, NULL,
|
2003-02-11 03:22:59 +00:00
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_printer_attributes_work_offline,
|
|
|
|
{ "Work offline (9x/ME only)",
|
|
|
|
"spoolss.printer_attributes.work_offline", FT_BOOLEAN,
|
|
|
|
32, TFS(&tfs_printer_attributes_work_offline),
|
|
|
|
PRINTER_ATTRIBUTE_WORK_OFFLINE, "Work offline", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_printer_attributes_enable_bidi,
|
|
|
|
{ "Enable bidi (9x/ME only)",
|
|
|
|
"spoolss.printer_attributes.enable_bidi", FT_BOOLEAN,
|
|
|
|
32, TFS(&tfs_printer_attributes_enable_bidi),
|
|
|
|
PRINTER_ATTRIBUTE_ENABLE_BIDI, "Enable bidi", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_printer_attributes_raw_only,
|
|
|
|
{ "Raw only", "spoolss.printer_attributes.raw_only",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_printer_attributes_raw_only),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ATTRIBUTE_RAW_ONLY, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_printer_attributes_published,
|
|
|
|
{ "Published", "spoolss.printer_attributes.published",
|
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_printer_attributes_published),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ATTRIBUTE_PUBLISHED, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
/* Timestamps */
|
|
|
|
|
|
|
|
{ &hf_time_year,
|
|
|
|
{ "Year", "spoolss.time.year", FT_UINT32, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0x0, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_time_month,
|
|
|
|
{ "Month", "spoolss.time.month", FT_UINT32, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0x0, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_time_dow,
|
|
|
|
{ "Day of week", "spoolss.time.dow", FT_UINT32, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0x0, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_time_day,
|
|
|
|
{ "Day", "spoolss.time.day", FT_UINT32, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0x0, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_time_hour,
|
|
|
|
{ "Hour", "spoolss.time.hour", FT_UINT32, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0x0, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_time_minute,
|
|
|
|
{ "Minute", "spoolss.time.minute", FT_UINT32, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0x0, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_time_second,
|
|
|
|
{ "Second", "spoolss.time.second", FT_UINT32, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0x0, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_time_msec,
|
|
|
|
{ "Millisecond", "spoolss.time.msec", FT_UINT32, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, 0x0, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
/* Userlevel */
|
|
|
|
|
|
|
|
{ &hf_userlevel_size,
|
|
|
|
{ "Size", "spoolss.userlevel.size",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_userlevel_client,
|
|
|
|
{ "Client", "spoolss.userlevel.client", FT_STRING,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_NONE, NULL, 0, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_userlevel_user,
|
|
|
|
{ "User", "spoolss.userlevel.user", FT_STRING,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_NONE, NULL, 0, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_userlevel_build,
|
|
|
|
{ "Build", "spoolss.userlevel.build",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_userlevel_major,
|
|
|
|
{ "Major", "spoolss.userlevel.major",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_userlevel_minor,
|
|
|
|
{ "Minor", "spoolss.userlevel.minor",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-11 03:22:59 +00:00
|
|
|
|
|
|
|
{ &hf_userlevel_processor,
|
|
|
|
{ "Processor", "spoolss.userlevel.processor",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
/* EnumprinterdataEx RPC */
|
|
|
|
|
|
|
|
{ &hf_enumprinterdataex_num_values,
|
|
|
|
{ "Num values", "spoolss.enumprinterdataex.num_values",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x0,
|
|
|
|
"Number of values returned", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_enumprinterdataex_name_offset,
|
|
|
|
{ "Name offset", "spoolss.enumprinterdataex.name_offset",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_enumprinterdataex_name_len,
|
|
|
|
{ "Name len", "spoolss.enumprinterdataex.name_len",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_enumprinterdataex_name,
|
|
|
|
{ "Name", "spoolss.enumprinterdataex.name",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_enumprinterdataex_val_type,
|
|
|
|
{ "Value type", "spoolss.enumprinterdataex.value_type",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_enumprinterdataex_val_offset,
|
|
|
|
{ "Value offset", "spoolss.enumprinterdataex.value_offset",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_enumprinterdataex_val_len,
|
|
|
|
{ "Value len", "spoolss.enumprinterdataex.value_len",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_enumprinterdataex_val_dword_high,
|
|
|
|
{ "DWORD value (high)",
|
|
|
|
"spoolss.enumprinterdataex.val_dword.high",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_enumprinterdataex_val_dword_low,
|
|
|
|
{ "DWORD value (low)",
|
|
|
|
"spoolss.enumprinterdataex.val_dword.low",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_enumprinterdataex_val_sz,
|
|
|
|
{ "SZ value", "spoolss.printerdata.val_sz",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
/* RouterReplyPrinter RPC */
|
|
|
|
|
|
|
|
{ &hf_routerreplyprinter_condition,
|
|
|
|
{ "Condition", "spoolss.routerreplyprinter.condition",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_routerreplyprinter_unknown1,
|
|
|
|
{ "Unknown1", "spoolss.routerreplyprinter.unknown1",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_routerreplyprinter_changeid,
|
|
|
|
{ "Change id", "spoolss.routerreplyprinter.changeid",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
/* EnumPrinterKey RPC */
|
|
|
|
|
|
|
|
{ &hf_keybuffer_size,
|
|
|
|
{ "Key Buffer size", "spoolss.keybuffer.size", FT_UINT32,
|
|
|
|
BASE_DEC, NULL, 0x0, "Size of buffer", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_keybuffer_data,
|
|
|
|
{ "Key Buffer data", "spoolss.keybuffer.data", FT_BYTES,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_NONE, NULL, 0x0, "Contents of buffer", HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
/* SetJob RPC */
|
|
|
|
|
|
|
|
{ &hf_setjob_cmd,
|
|
|
|
{ "Set job command", "spoolss.setjob.cmd", FT_UINT32,
|
|
|
|
BASE_DEC, VALS(setjob_commands), 0x0, "Printer data name",
|
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
/* EnumJobs RPC */
|
|
|
|
|
|
|
|
{ &hf_enumjobs_firstjob,
|
|
|
|
{ "First job", "spoolss.enumjobs.firstjob", FT_UINT32,
|
|
|
|
BASE_DEC, NULL, 0x0, "Index of first job to return",
|
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_enumjobs_numjobs,
|
|
|
|
{ "Num jobs", "spoolss.enumjobs.numjobs", FT_UINT32,
|
|
|
|
BASE_DEC, NULL, 0x0, "Number of jobs to return", HFILL }},
|
|
|
|
|
|
|
|
/* Security descriptor buffer */
|
|
|
|
|
|
|
|
{ &hf_secdescbuf_maxlen,
|
|
|
|
{ "Max len", "secdescbuf.max_len",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_secdescbuf_undoc,
|
|
|
|
{ "Undocumented", "secdescbuf.undoc",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_secdescbuf_len,
|
|
|
|
{ "Length", "secdescbuf.len",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
/* Spool printer info */
|
|
|
|
|
|
|
|
{ &hf_spool_printer_info_devmode_ptr,
|
|
|
|
{ "Devmode pointer", "spoolprinterinfo.devmode_ptr",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_spool_printer_info_secdesc_ptr,
|
|
|
|
{ "Secdesc pointer", "spoolprinterinfo.secdesc_ptr",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
/* WritePrinter RPC */
|
|
|
|
|
|
|
|
{ &hf_writeprinter_numwritten,
|
|
|
|
{ "Num written", "spoolss.writeprinter.numwritten",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, "Number of bytes written",
|
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
/* Setprinterdataex RPC */
|
|
|
|
|
|
|
|
{ &hf_setprinterdataex_max_len,
|
|
|
|
{ "Max len", "setprinterdataex.max_len",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_setprinterdataex_real_len,
|
|
|
|
{ "Real len", "setprinterdataex.real_len",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_setprinterdataex_data,
|
|
|
|
{ "Data", "setprinterdataex.data",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
/* Specific access rights */
|
|
|
|
|
|
|
|
{ &hf_access_required,
|
|
|
|
{ "Access required", "spoolss.access_required",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL,
|
2003-02-14 06:23:45 +00:00
|
|
|
HFILL }},
|
|
|
|
|
|
|
|
{ &hf_server_access_admin,
|
|
|
|
{ "Server admin", "spoolss.access_mask.server_admin",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SERVER_ACCESS_ADMINISTER, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_server_access_enum,
|
|
|
|
{ "Server enum", "spoolss.access_mask.server_enum",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
SERVER_ACCESS_ENUMERATE, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_access_admin,
|
|
|
|
{ "Printer admin", "spoolss.access_mask.printer_admin",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ACCESS_ADMINISTER, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_access_use,
|
|
|
|
{ "Printer use", "spoolss.access_mask.printer_use",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
PRINTER_ACCESS_USE, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_job_access_admin,
|
|
|
|
{ "Job admin", "spoolss.access_mask.job_admin",
|
2009-07-07 14:54:15 +00:00
|
|
|
FT_BOOLEAN, 32, TFS(&tfs_set_notset),
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
JOB_ACCESS_ADMINISTER, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
/* Printer information */
|
|
|
|
|
|
|
|
{ &hf_printer_cjobs,
|
|
|
|
{ "CJobs", "spoolss.printer.cjobs", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_total_jobs,
|
|
|
|
{ "Total jobs", "spoolss.printer.total_jobs", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_total_bytes,
|
|
|
|
{ "Total bytes", "spoolss.printer.total_bytes", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_global_counter,
|
|
|
|
{ "Global counter", "spoolss.printer.global_counter",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_total_pages,
|
|
|
|
{ "Total pages", "spoolss.printer.total_pages", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_major_version,
|
|
|
|
{ "Major version", "spoolss.printer.major_version",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_build_version,
|
|
|
|
{ "Build version", "spoolss.printer.build_version",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk7,
|
|
|
|
{ "Unknown 7", "spoolss.printer.unknown7", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk8,
|
|
|
|
{ "Unknown 8", "spoolss.printer.unknown8", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk9,
|
|
|
|
{ "Unknown 9", "spoolss.printer.unknown9", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_session_ctr,
|
|
|
|
{ "Session counter", "spoolss.printer.session_ctr",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, "Sessopm counter", HFILL }},
|
|
|
|
|
|
|
|
{ &hf_printer_unk11,
|
|
|
|
{ "Unknown 11", "spoolss.printer.unknown11", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_printer_errors,
|
|
|
|
{ "Printer errors", "spoolss.printer.printer_errors",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk13,
|
|
|
|
{ "Unknown 13", "spoolss.printer.unknown13", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk14,
|
|
|
|
{ "Unknown 14", "spoolss.printer.unknown14", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk15,
|
|
|
|
{ "Unknown 15", "spoolss.printer.unknown15", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk16,
|
|
|
|
{ "Unknown 16", "spoolss.printer.unknown16", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_changeid,
|
|
|
|
{ "Change id", "spoolss.printer.changeid", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk18,
|
|
|
|
{ "Unknown 18", "spoolss.printer.unknown18", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk20,
|
|
|
|
{ "Unknown 20", "spoolss.printer.unknown20", FT_UINT32,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_c_setprinter,
|
|
|
|
{ "Csetprinter", "spoolss.printer.c_setprinter",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk22,
|
|
|
|
{ "Unknown 22", "spoolss.printer.unknown22",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk23,
|
|
|
|
{ "Unknown 23", "spoolss.printer.unknown23",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk24,
|
|
|
|
{ "Unknown 24", "spoolss.printer.unknown24",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk25,
|
|
|
|
{ "Unknown 25", "spoolss.printer.unknown25",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk26,
|
|
|
|
{ "Unknown 26", "spoolss.printer.unknown26",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk27,
|
|
|
|
{ "Unknown 27", "spoolss.printer.unknown27",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk28,
|
|
|
|
{ "Unknown 28", "spoolss.printer.unknown28",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_unk29,
|
|
|
|
{ "Unknown 29", "spoolss.printer.unknown29",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_flags,
|
|
|
|
{ "Flags", "spoolss.printer.flags",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
2008-03-02 19:47:04 +00:00
|
|
|
{ &hf_printer_priority,
|
|
|
|
{ "Priority", "spoolss.printer.priority",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2008-03-02 19:47:04 +00:00
|
|
|
|
|
|
|
{ &hf_printer_default_priority,
|
|
|
|
{ "Default Priority", "spoolss.printer.default_priority",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2008-03-02 19:47:04 +00:00
|
|
|
|
|
|
|
{ &hf_printer_averageppm,
|
|
|
|
{ "Average PPM", "spoolss.printer.averageppm",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2008-03-02 19:47:04 +00:00
|
|
|
|
|
|
|
{ &hf_printer_jobs,
|
|
|
|
{ "Jobs", "spoolss.printer.jobs",
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
|
2008-03-02 19:47:04 +00:00
|
|
|
|
2003-02-14 06:23:45 +00:00
|
|
|
{ &hf_printer_guid,
|
|
|
|
{ "GUID", "spoolss.printer.guid", FT_STRING,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
BASE_NONE, NULL, 0, NULL, HFILL }},
|
2003-02-14 06:23:45 +00:00
|
|
|
|
|
|
|
{ &hf_printer_action,
|
|
|
|
{ "Action", "spoolss.printer.action", FT_UINT32, BASE_DEC,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
VALS(getprinter_action_vals), 0, NULL, HFILL }},
|
2002-05-10 02:41:48 +00:00
|
|
|
};
|
|
|
|
|
2001-11-12 08:58:45 +00:00
|
|
|
static gint *ett[] = {
|
2001-11-21 02:08:57 +00:00
|
|
|
&ett_dcerpc_spoolss,
|
2002-11-19 05:25:04 +00:00
|
|
|
&ett_PRINTER_DATATYPE,
|
2002-01-03 20:42:41 +00:00
|
|
|
&ett_DEVMODE_CTR,
|
|
|
|
&ett_DEVMODE,
|
2002-11-19 03:01:18 +00:00
|
|
|
&ett_DEVMODE_fields,
|
2002-11-19 05:25:04 +00:00
|
|
|
&ett_USER_LEVEL_CTR,
|
2002-01-03 20:42:41 +00:00
|
|
|
&ett_USER_LEVEL_1,
|
|
|
|
&ett_BUFFER,
|
2003-02-10 06:21:57 +00:00
|
|
|
&ett_PRINTER_INFO,
|
2002-01-07 19:55:48 +00:00
|
|
|
&ett_SPOOL_PRINTER_INFO_LEVEL,
|
2002-01-03 20:42:41 +00:00
|
|
|
&ett_PRINTER_INFO_0,
|
|
|
|
&ett_PRINTER_INFO_1,
|
|
|
|
&ett_PRINTER_INFO_2,
|
|
|
|
&ett_PRINTER_INFO_3,
|
2002-12-04 05:41:47 +00:00
|
|
|
&ett_PRINTER_INFO_7,
|
2002-01-03 20:42:41 +00:00
|
|
|
&ett_RELSTR,
|
2002-05-20 06:53:31 +00:00
|
|
|
&ett_RELSTR_ARRAY,
|
2002-03-26 04:29:17 +00:00
|
|
|
&ett_FORM_REL,
|
|
|
|
&ett_FORM_CTR,
|
|
|
|
&ett_FORM_1,
|
2002-04-24 03:08:49 +00:00
|
|
|
&ett_JOB_INFO_1,
|
2003-02-05 06:55:56 +00:00
|
|
|
&ett_JOB_INFO_2,
|
2002-05-01 05:28:56 +00:00
|
|
|
&ett_SEC_DESC_BUF,
|
2002-05-10 02:41:48 +00:00
|
|
|
&ett_SYSTEM_TIME,
|
2002-05-13 01:27:07 +00:00
|
|
|
&ett_DOC_INFO_1,
|
|
|
|
&ett_DOC_INFO,
|
|
|
|
&ett_DOC_INFO_CTR,
|
2002-05-20 00:36:04 +00:00
|
|
|
&ett_printerdata_value,
|
|
|
|
&ett_printerdata_data,
|
|
|
|
&ett_writeprinter_buffer,
|
2002-05-20 06:53:31 +00:00
|
|
|
&ett_DRIVER_INFO_1,
|
2007-04-26 06:00:48 +00:00
|
|
|
&ett_DRIVER_INFO_2,
|
2002-05-20 06:53:31 +00:00
|
|
|
&ett_DRIVER_INFO_3,
|
2007-04-26 06:00:48 +00:00
|
|
|
&ett_DRIVER_INFO_6,
|
|
|
|
&ett_DRIVER_INFO_101,
|
2002-06-05 04:15:30 +00:00
|
|
|
&ett_rffpcnex_flags,
|
|
|
|
&ett_notify_options_flags,
|
|
|
|
&ett_NOTIFY_INFO_DATA,
|
2002-06-05 07:15:47 +00:00
|
|
|
&ett_NOTIFY_OPTION,
|
2002-06-17 03:21:15 +00:00
|
|
|
&ett_printer_attributes,
|
2002-06-17 06:45:42 +00:00
|
|
|
&ett_job_status,
|
2002-08-27 07:38:36 +00:00
|
|
|
&ett_enumprinters_flags,
|
2003-01-10 05:01:48 +00:00
|
|
|
&ett_PRINTER_DATA_CTR,
|
|
|
|
&ett_printer_enumdataex_value,
|
2001-11-12 08:58:45 +00:00
|
|
|
};
|
|
|
|
|
2001-11-21 02:08:57 +00:00
|
|
|
proto_dcerpc_spoolss = proto_register_protocol(
|
2001-11-12 08:58:45 +00:00
|
|
|
"Microsoft Spool Subsystem", "SPOOLSS", "spoolss");
|
|
|
|
|
2002-05-10 02:41:48 +00:00
|
|
|
proto_register_field_array(proto_dcerpc_spoolss, hf, array_length(hf));
|
|
|
|
|
2001-11-12 08:58:45 +00:00
|
|
|
proto_register_subtree_array(ett, array_length(ett));
|
|
|
|
}
|
|
|
|
|
2002-01-03 20:42:41 +00:00
|
|
|
/* Protocol handoff */
|
|
|
|
|
|
|
|
static e_uuid_t uuid_dcerpc_spoolss = {
|
|
|
|
0x12345678, 0x1234, 0xabcd,
|
|
|
|
{ 0xef, 0x00, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab }
|
|
|
|
};
|
|
|
|
|
|
|
|
static guint16 ver_dcerpc_spoolss = 1;
|
|
|
|
|
2001-11-12 08:58:45 +00:00
|
|
|
void
|
2001-11-21 02:08:57 +00:00
|
|
|
proto_reg_handoff_dcerpc_spoolss(void)
|
2001-11-12 08:58:45 +00:00
|
|
|
{
|
2003-06-26 04:30:31 +00:00
|
|
|
|
2001-11-12 08:58:45 +00:00
|
|
|
/* Register protocol as dcerpc */
|
|
|
|
|
2002-08-28 21:04:11 +00:00
|
|
|
dcerpc_init_uuid(proto_dcerpc_spoolss, ett_dcerpc_spoolss,
|
|
|
|
&uuid_dcerpc_spoolss, ver_dcerpc_spoolss,
|
2003-02-14 06:23:45 +00:00
|
|
|
dcerpc_spoolss_dissectors, hf_opnum);
|
2001-11-12 08:58:45 +00:00
|
|
|
}
|