1 | USING RPUPortSet
|
---|
2 |
|
---|
3 | The standard serial and parallel port drivers do not support the SplPdSet API.
|
---|
4 |
|
---|
5 | The PAR1284 port driver takes a data structure with the following format:
|
---|
6 |
|
---|
7 | ULONG signature; /* Must be 0x52464E49 ('INFR') */
|
---|
8 | ULONG ulVersion; /* Must be 0x00000001 */
|
---|
9 | ULONG flStatus; /* Status flags: */
|
---|
10 | /* 0x00000001 BIDI_Q_PORT set (bidi enabled)*/
|
---|
11 | /* 0x00000002 Set after 1st attempt at bidi */
|
---|
12 | /* 0x00000004 Port connected to print queue */
|
---|
13 | /* 0x00000008 Port already open */
|
---|
14 | /* 0x00000010 Port open in progress */
|
---|
15 | /* 0x00000020 SplPdOpen being processed */
|
---|
16 | /* 0x00000040 SplPdClose being processed */
|
---|
17 | /* 0x00000080 XlateCmd has more alerts left */
|
---|
18 | /* 0x00000100 New printer or powered off */
|
---|
19 | /* 0x00000200 Set when deviceId was checked */
|
---|
20 | /* after first good write to a */
|
---|
21 | /* unidirectional printer. */
|
---|
22 | /* 0x00000400 Set when last write was sent */
|
---|
23 | /* using ECP mode cmd channel. */
|
---|
24 | /* 0x00000800 Set when printer put in bidi */
|
---|
25 | /* mode and DeviceID received. */
|
---|
26 | /* 0x00001000 Set when CommStatChange alert */
|
---|
27 | /* was posted to spooler. */
|
---|
28 | /* Cleared after BIDI_Q_PORT */
|
---|
29 | /* 0x00002000 Set when CommStatChange alert */
|
---|
30 | /* should not be set */
|
---|
31 | /* 0x00004000 Set when port has a network */
|
---|
32 | /* connection */
|
---|
33 | ULONG flBidiCapabilities; /* PRTPORT.flBidiCapabilities _CAPS_ */
|
---|
34 | ULONG flBidiProtocol; /* PRTPORT.flBidiProtocol _TYPE_ */
|
---|
35 | ULONG flJob; /* PRTSW.flJob flags */
|
---|
36 | ULONG flDevice; /* PRTSW.flDevice flags */
|
---|
37 | ULONG ulModeSelected; /* Mode selected by user(see PARMODE_) */
|
---|
38 | ULONG ulCurrentMode; /* Current mode of port(see CURMODE_) */
|
---|
39 | BOOL fShareAccess; /* Share port with DOS/Windows */
|
---|
40 | ULONG ulPrintTimeOut; /* Seconds to continue to retry job */
|
---|
41 | /* write request in SplPdWrite(). */
|
---|
42 | /* Default: 45 seconds */
|
---|
43 | ULONG ulNoQueryTimeOut; /* Seconds from last query until */
|
---|
44 | /* port drops printer connection */
|
---|
45 | /* Default: 180 seconds */
|
---|
46 | ULONG ulNoJobTimeOut; /* Seconds from last job sent until */
|
---|
47 | /* port drops printer connection */
|
---|
48 | /* NOTE: Connection can be dropped */
|
---|
49 | /* sooner if PDR receives */
|
---|
50 | /* BIDI_NOTIFY_ENDJOBCONNECT */
|
---|
51 | /* This is used if we lose */
|
---|
52 | /* a job acknowledgement so */
|
---|
53 | /* that other Apps can use the */
|
---|
54 | /* infrared port. */
|
---|
55 | /* Default: 300 seconds */
|
---|
56 | /* */
|
---|
57 | PPTIMEOUTCHANNEL TimeOut; /* Read and Write timeouts */
|
---|
58 | /* */
|
---|
59 | /* */
|
---|
60 | /* The following ulpsz fields are */
|
---|
61 | /* offsets from the beginning of */
|
---|
62 | /* this PORTSETTINGS structure to */
|
---|
63 | /* the variable length strings. */
|
---|
64 | /* This allows us to pass the buffer */
|
---|
65 | /* intact to PrtQuery and PrtSet, */
|
---|
66 | /* even across the network. */
|
---|
67 | /* All strings are packed immediately */
|
---|
68 | /* after the fixed-length PORTSETTINGS */
|
---|
69 | /* structure. */
|
---|
70 | /* */
|
---|
71 | /* An offset of 0 means no string */
|
---|
72 | /* */
|
---|
73 | ULONG ulpszPortName; /* -> name of port info is for */
|
---|
74 | ULONG ulpszDeviceID; /* -> 1284 deviceID for printer on port */
|
---|
75 | } PORTSETTINGS, *PPORTSETTINGS;
|
---|
76 | #define PAR12_SIGNATURE
|
---|
77 |
|
---|
78 | typedef struct _PPTIMEOUTCHANNEL{
|
---|
79 | ULONG ulReadIdleTimeOut; // millisecs DD has to complete entire Read
|
---|
80 | ULONG ulReadIntTimeOut; // millisecs DD waits for Read interrupt
|
---|
81 | ULONG ulWriteIdleTimeOut; // millisecs DD has to complete entire Write
|
---|
82 | ULONG ulWriteIntTimeOut; // millisecs DD waits for Write interrupt
|
---|
83 | ULONG ulLogChannel; // 1=use data channel, 2=use address channel
|
---|
84 | } PPTIMEOUTCHANNEL, *PPPTIMEOUTCHANNEL;
|
---|
85 |
|
---|
86 |
|
---|
87 |
|
---|
88 |
|
---|
89 | Port settings structure for CUPS.PDR:
|
---|
90 |
|
---|
91 | typedef struct _PORTSETTINGS {
|
---|
92 | CHAR szHost[ 65 ]; // CUPS server hostname/IP
|
---|
93 | CHAR szQueue[ 65 ]; // CUPS printer queue name
|
---|
94 | } PORTSETTINGS, *PPORTSETTINGS;
|
---|
95 |
|
---|
96 |
|
---|
97 |
|
---|
98 | Port setting structure for SMB.PDR:
|
---|
99 |
|
---|
100 | /* szPortData contains all of the port parameters in a single buffer: */
|
---|
101 | /* host */
|
---|
102 | /* printer */
|
---|
103 | /* workgroup */
|
---|
104 | /* userid */
|
---|
105 | /* copies */
|
---|
106 | /* password */
|
---|
107 | /* All except 'password' are verbatim character strings; 'password' is */
|
---|
108 | /* a hexadecimal string. Fields are separated by '#'. All fields are */
|
---|
109 | /* required; those with unspecified values are left empty. */
|
---|
110 |
|
---|
111 | typedef struct _PORTSETTINGS {
|
---|
112 | CHAR szPortData[ 256 ];
|
---|
113 | } PORTSETTINGS, *PPORTSETTINGS;
|
---|