1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
module spool
struct BUFFER5 {
uint32 buf_len;
uint16 buffer[buf_len];
};
struct BUFFERP {
uint32 buf_len;
BUFFER5 *buf;
};
struct UNISTR2 {
uint32 max_len;
uint32 undoc;
uint32 str_len;
uint16 buffer[str_len];
};
struct LPWSTR {
UNISTR2 *str;
};
struct VERSION {
uint32 version;
uint32 build;
uint32 osversion;
};
struct NTTIME {
uint32 low;
uint32 high;
};
struct DWORD {
uint32 x;
};
struct PRINTER_DRIVER_INFO_LEVEL_3 {
DWORD cversion;
LPWSTR name;
LPWSTR environment;
LPWSTR driverpath;
LPWSTR datafile;
LPWSTR configfile;
LPWSTR helpfile;
LPWSTR monitorname;
LPWSTR defaultdatatype;
BUFFERP dependentfiles;
};
struct PRINTER_DRIVER_INFO_LEVEL_6 {
DWORD dummy1;
DWORD version;
LPWSTR name;
LPWSTR environment;
LPWSTR driverpath;
LPWSTR datafile;
LPWSTR configfile;
LPWSTR helpfile;
LPWSTR monitorname;
LPWSTR defaultdatatype;
BUFFERP dependentfiles;
BUFFERP previousnames;
NTTIME driverdate;
VERSION driverversion;
LPWSTR mfgname;
LPWSTR oemurl;
LPWSTR hardwareid;
LPWSTR provider;
};
struct PRINTER_DRIVER_INFO {
uint32 level;
union *info[level] {
case 3 PRINTER_DRIVER_INFO_LEVEL_3 info_3;
case 6 PRINTER_DRIVER_INFO_LEVEL_6 info_6;
}
};
struct R_GETPRINTERDATA {
uint32 type;
uint32 size;
uint8 *data;
uint32 needed;
uint32 status;
};
|