[1] | 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;
|
---|