4 Protocol Examples
The following annotations describe several operations as used in common scenarios to illustrate the function of the Remote Desktop Protocol: XPS Print Virtual Channel Extension.
Printer setup sequence:
-
(1) Initialize Printer Request ChannelName = XPSRD,16,server to client 00000000 00 00 00 00 00 00 00 00 00 01 00 00 0d 00 00 00 ................ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 01 00 00 -> INIT_PRINTER_REQ = 0x00000100 0d 00 00 00 -> ClientPrinterId = 0x0000000d (2) Initialize Printer Response ChannelName = XPSRD,12,client to server 00000000 00 00 00 00 00 00 00 00 00 00 00 00 ............ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 00 00 00 -> Result = S_OK (3) Get All Dev Caps Request ChannelName = XPSRD,12,server to client 00000000 00 00 00 00 00 00 00 00 01 01 00 00 ............ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 01 01 00 00 -> GET_ALL_DEV_CAPS_REQ = 0x00000101 (4) Get All Dev Caps Response ChannelName = XPSRD,8564,client to server 00000000 00 00 00 00 00 00 00 00 24 00 00 00 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 24 00 00 00 -> numCaps = 0x00000024 ff ff ff ff ........$....... 00000010 00 00 00 00 00 00 00 00 ff ff ff ff -> TSDEVICE_CAPABILITIES: ReturnValue 00 00 00 00 -> TSDEVICE_CAPABILITIES: ErrorCode = ERROR_SUCCESS 00 00 -> TSDEVICE_CAPABILITIES: numBytes = 0 -> TSDEVICE_CAPABILITIES: Data(variable length=0) 00 00 -> TSDEVICE_CAPABILITIES: numBytes2 = 0 53 ff 81 03 00 00 00 00 ........S....... 00000020 00 00 00 00 53 ff 81 03 -> TSDEVICE_CAPABILITIES: ReturnValue = 0x0381ff53 00 00 00 00 -> TSDEVICE_CAPABILITIES: ErrorCode = ERROR_SUCCESS 00 00 -> TSDEVICE_CAPABILITIES: numBytes = 0 -> TSDEVICE_CAPABILITIES: Data(variable length=0) 00 00 -> TSDEVICE_CAPABILITIES: numBytes2 = 0 19 00 00 00 00 00 00 00 32 00 01 00 ............2... 00000030 05 00 06 00 07 00 08 00 09 00 0b 00 0c 00 0d 00 ................ 00000040 11 00 14 00 18 00 1b 00 1c 00 22 00 25 00 42 00 ..........".%.B. 00000050 52 00 81 00 84 00 87 00 94 00 5e 01 d7 01 ff 7f R.........^..... 00000060 32 00 19 00 00 00 -> TSDEVICE_CAPABILITIES: ReturnValue 00 00 00 00 -> TSDEVICE_CAPABILITIES: ErrorCode = ERROR_SUCCESS 32 00 -> TSDEVICE_CAPABILITIES: numBytes = 0x32 -> TSDEVICE_CAPABILITIES: Data (variable length=0x32) 32 00 -> TSDEVICE_CAPABILITIES: numBytes2 = 0x32 (skipped) 00002160 00 00 14 01 00 00 15 01 00 00 16 01 00 00 5c 00 ..............\. 00002170 00 00 00 00 .... 00 00 00 00 - Result = S_OK (5) Server Convert Devmode Request ChannelName = XPSRD,28,server to client 00000000 00 00 00 00 00 00 00 00 02 01 00 00 04 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 ............ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 02 01 00 00 -> CONVERT_DEVMODE_REQ = 0x102 04 00 00 00 -> CDM_DRIVER_DEFAULT = 0x4 00 00 00 00 -> cbDevmodeIn = 0 -> DevmodeIn (variable size=0) 00 00 00 00 -> cbDevmodeOut = 0 -> DevmodeOut (variable size=0) 00 00 00 00 -> cbProvided = 0 (6) Client Convert Devmode Response ChannelName = XPSRD,28,client to server 00000000 00 00 00 00 00 00 00 00 00 00 00 00 48 1f 00 00 ............H... 00000010 00 00 00 00 7a 00 00 00 00 00 00 00 ....z....... 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 00 00 00 -> cbOutputBufferSize = 0 -> OutputBuffer (variable size=0) 48 1f 00 00 -> cbNeeded = 0x1f48 00 00 00 00 -> ReturnValue 7a 00 00 00 -> ErrorCode = ERROR_INSUFFICIENT_BUFFER 00 00 00 00 -> Result = S_OK (7) Server Convert Devmode Request ChannelName = XPSRD,28,server to client 00000000 00 00 00 00 00 00 00 00 02 01 00 00 04 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 48 1f 00 00 ........H... 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 02 01 00 00 -> CONVERT_DEVMODE_REQ = 0x102 04 00 00 00 -> CDM_DRIVER_DEFAULT = 0x4 00 00 00 00 -> cbDevmodeIn = 0 -> DevmodeIn (variable size=0) 00 00 00 00 -> cbDevmodeOut = 0 -> DevmodeOut (variable size=0) 48 1f 00 00 -> cbProvided = 0x1f48 (8) Client Convert Devmode Response ChannelName = XPSRD,8036,client to server 00000000 00 00 00 00 00 00 00 00 48 1f 00 00 5c 00 5c 00 ........H...\.\. 00000010 43 00 53 00 52 00 7c 00 4d 00 53 00 50 00 52 00 C.S.R.|.M.S.P.R. 00000020 49 00 4e 00 54 00 34 00 34 00 5c 00 7b 00 44 00 I.N.T.4.4.\.{.D. 00000030 37 00 34 00 39 00 37 00 35 00 39 00 45 00 2d 00 7.4.9.7.5.9.E.-. (skipped) 48 1f 00 00 01 00 00 00 00 00 00 00 ....H........... 00001f60 00 00 00 00 .... 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 48 1f 00 00 -> cbOutputBufferSize = 0x1f48 -> OutputBuffer (variable size=0x1f48) 48 1f 00 00 -> cbNeeded = 0x1f48 01 00 00 00 -> ReturnValue 00 00 00 00 -> ErrorCode = ERROR_SUCCESS 00 00 00 00 -> Result = S_OK
Document Properties User Interface sequence:
-
(1) Initialize Printer Request ChannelName = XPSRD,16,server to client 00000000 00 00 00 00 00 00 00 00 00 01 00 00 0d 00 00 00 ................ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 01 00 00 -> INIT_PRINTER_REQ = 0x00000100 0d 00 00 00 -> ClientPrinterId = 0x0000000d (2) Initialize Printer Response ChannelName = XPSRD,12,client to server 00000000 00 00 00 00 00 00 00 00 00 00 00 00 ............ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 00 00 00 -> Result = S_OK (3) Server Document Properties Request ChannelName = XPSRD,32,server to client 00000000 00 00 00 00 00 00 00 00 05 01 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 05 01 00 00 -> DOC_PROPERTIES_REQ = 0x00000105 00 00 00 00 -> fMode = 0 00 00 00 00 00 00 00 00 -> hServerWindow = 0 00 00 00 00 -> cbDevmodeIn -> DevmodeIn 00 00 00 00 -> OutputDevModeSizeProvided (4) Client Document Properties Response ChannelName = XPSRD,24,client to server 00000000 00 00 00 00 00 00 00 00 48 1f 00 00 00 00 00 00 ........H....... 00000010 00 00 00 00 00 00 00 00 ........ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 48 1f 00 00 -> ReturnValue = 0x1f48 00 00 00 00 -> ErrorCode = ERROR_SUCCESS 00 00 00 00 -> cbOutDevModeSize = 0 -> OutDevMode (variable size=0) 00 00 00 00 -> Result = S_OK (5) Server Document Properties Request ChannelName = XPSRD,32,server to client 00000000 00 00 00 00 00 00 00 00 05 01 00 00 02 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 ................ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 05 01 00 00 -> DOC_PROPERTIES_REQ = 0x00000105 02 00 00 00 -> fMode = DM_OUT_BUFFER 00 00 00 00 00 00 00 00 -> hServerWindow = 0 00 00 00 00 -> cbDevmodeIn -> DevmodeIn 00 00 01 00 -> OutputDevModeSizeProvided = 0x100000 (6) Client Document Properties Response ChannelName = XPSRD,8032,client to server 00000000 00 00 00 00 00 00 00 00 01 00 00 00 7a 00 00 00 ............z... 00000010 48 1f 00 00 5c 00 5c 00 4d 00 53 00 50 00 52 00 H...\.\.M.S.P.R. 00000020 49 00 4e 00 54 00 34 00 34 00 5c 00 62 00 34 00 I.N.T.4.4.\.b.4. (skipped) 00001f50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 01 00 00 00 -> ReturnValue = 1 7a 00 00 00 -> ErrorCode = ERROR_INSUFFICIENT_BUFFER 48 1f 00 00 -> cbOutDevModeSize = 0x1f48 -> OutDevMode (variable size=0x1f48) 00 00 00 00 -> Result = S_OK (7) Server Async Document Properties Request ChannelName = XPSRD,8048,server to client 00000000 00 00 00 00 00 00 00 00 06 01 00 00 4e 00 00 00 ............N... 00000010 2c 02 06 00 00 00 00 00 48 1f 00 00 62 00 34 00 ,.......H...b.4. 00000020 33 00 2d 00 32 00 38 00 36 00 36 00 2d 00 61 00 3.-.2.8.6.6.-.a. 00000030 20 00 6f 00 6e 00 20 00 4d 00 53 00 50 00 52 00 .o.n. .M.S.P.R. (skipped) 00001f60 00 00 00 00 00 00 01 00 01 00 00 00 01 00 00 00 ................ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 06 01 00 00 -> ASYNC_DOC_PROPS_REQ = 0x106 4e 00 00 00 -> fMode = DM_IN_BUFFER | DM_OUT_BUFFER | DM_IN_PROMPT | DM_USER_DEFAULT 2c 02 06 00 00 00 00 00 -> hServerWindow = 0x6022c 48 1f 00 00 -> cbDevmodeIn = 0x1f48 -> DevmodeIn (variable size=0x1f48) 00 00 01 00 -> OutputDevModeSize = 0x100000 01 00 00 00 -> NumCallbacks = 1 01 00 00 00 -> Callback = 1 (8) Client Async Document Properties Response ChannelName = XPSRD,12,client to server 00000000 00 00 00 00 00 00 00 00 00 00 00 00 ............ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 00 00 00 -> Result = S_OK (9) Client Document Properties Callback Request ChannelName = XPSRD,8032,client to server 00000000 01 00 00 00 00 00 00 00 00 01 00 00 01 00 00 00 ................ 00000010 00 00 00 00 48 1f 00 00 5c 00 5c 00 4d 00 53 00 ....H...\.\.M.S. 00000020 50 00 52 00 49 00 4e 00 54 00 34 00 34 00 5c 00 P.R.I.N.T.4.4.\. (skipped) 00001f50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 01 00 00 00 -> InterfaceId (id of Callback) = 0x00000001 00 00 00 00 -> MessageId = 0x00000000 00 01 00 00 -> DOC_PROPS_CALLBACK_REQ = 0x100 01 00 00 00 -> ReturnValue = 1 00 00 00 00 -> ErrorCode = ERROR_SUCCESS 48 1f 00 00 -> cbDevmode = 0x1f48 -> Devmode (variable size=0x1f48) (10) Server Document Properties Callback Response ChannelName = XPSRD,12,server to client 00000000 01 00 00 00 00 00 00 00 00 00 00 00 ............ 01 00 00 00 -> InterfaceId (id of Callback) = 0x00000001 00 00 00 00 -> MessageId = 0x00000000 00 00 00 00 -> Reserved = 0x00000000 (11) Client to Server Interface release ChannelName = XPSRD,12,client to server 00000000 01 00 00 00 00 00 00 00 01 00 00 00 ............ 01 00 00 00 -> InterfaceId (id of Callback) = 0x00000001 00 00 00 00 -> MessageId = 0x00000000 01 00 00 00 -> RIMCALL_RELEASE = 0x00000001
Printer Properties User Interface sequence:
-
(1) Server Async Printer Properties Request ChannelName = XPSRD,32,server to client 00000000 00 00 00 00 00 00 00 00 07 01 00 00 01 00 00 00 ................ 00000010 16 01 21 00 00 00 00 00 01 00 00 00 01 00 00 00 ..!............. 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 07 01 00 00 -> ASYNC_PRINTER_PROPS_REQ = 0x107 01 00 00 00 -> Flags = XPSREDIR_PRINTER_PROPERTIES_Flags_NO_PERMISSION 16 01 21 00 00 00 00 00 -> hServerWindow = 0x210116 01 00 00 00 -> Reserved = 0x00000001 01 00 00 00 -> Callback = 0x00000001 (2) Client Async Printer Properties Response ChannelName = XPSRD,12,client to server 00000000 00 00 00 00 00 00 00 00 00 00 00 00 ............ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 00 00 00 -> Result = S_OK (3) Client Printer Properties Callback Request ChannelName = XPSRD,20,client to server 00000000 01 00 00 00 00 00 00 00 00 01 00 00 01 00 00 00 ................ 00000010 00 00 00 00 .... 01 00 00 00 -> InterfaceId (id of Callback) = 0x00000001 00 00 00 00 -> MessageId = 0x00000000 00 01 00 00 -> PRINTER_PROPS_CALLBACK_REQ = 0x100 01 00 00 00 -> ReturnValue = 1 00 00 00 00 -> ErrorCode = ERROR_SUCCESS (4) Server Printer Properties Callback Response ChannelName = XPSRD,12,server to client 00000000 01 00 00 00 00 00 00 00 00 00 00 00 ............ 01 00 00 00 -> InterfaceId (id of Callback) = 0x00000001 00 00 00 00 -> MessageId = 0x00000000 00 00 00 00 -> Reserved = 0x00000000 (5) Client to Server Interface release ChannelName = XPSRD,12,client to server 00000000 01 00 00 00 00 00 00 00 01 00 00 00 ............ 01 00 00 00 -> InterfaceId (id of Callback) = 0x00000001 00 00 00 00 -> MessageId = 0x00000000 01 00 00 00 -> RIMCALL_RELEASE = 0x00000001
Document Properties User Interface sequence (canceled):
-
(1) Server Async Document Properties Request ChannelName = XPSRD,8048,server to client 00000000 00 00 00 00 00 00 00 00 06 01 00 00 4e 00 00 00 ............N... 00000010 fa 01 07 00 00 00 00 00 48 1f 00 00 62 00 34 00 ........H...b.4. 00000020 33 00 2d 00 32 00 38 00 36 00 36 00 2d 00 61 00 3.-.2.8.6.6.-.a. 00000030 20 00 6f 00 6e 00 20 00 4d 00 53 00 50 00 52 00 .o.n. .M.S.P.R. (skipped) 00001f60 00 00 00 00 00 00 01 00 01 00 00 00 01 00 00 00 ................ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 06 01 00 00 -> ASYNC_DOC_PROPS_REQ = 0x106 4e 00 00 00 -> fMode = DM_IN_BUFFER | DM_OUT_BUFFER | DM_IN_PROMPT | DM_USER_DEFAULT fa 01 07 00 00 00 00 00 -> hServerWindow = 0x701fa 48 1f 00 00 -> cbDevmodeIn = 0x1f48 -> DevmodeIn (variable size=0x1f48) 00 00 00 01 00 -> OutputDevModeSize = 0x100000 01 00 00 00 -> NumCallbacks = 1 01 00 00 00 -> Callback = 1 (2) Client Async Document Properties Response ChannelName = XPSRD,12,client to server 00000000 00 00 00 00 00 00 00 00 00 00 00 00 ............ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 00 00 00 -> Result = S_OK (3) Server Cancel Async Document Properties Request ChannelName = XPSRD,12,server to client 00000000 00 00 00 00 00 00 00 00 09 01 00 00 ............ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 09 01 00 00 -> CANCEL_ASYNC_DOC_PROPS_REQ = 0x109 (4) Client Document Properties Callback Request ChannelName = XPSRD,8032,client to server 00000000 01 00 00 00 00 00 00 00 00 01 00 00 02 00 00 00 ................ 00000010 00 00 00 00 48 1f 00 00 00 00 00 00 00 00 00 00 ....H........... 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ (skipped) 00001f50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 01 00 00 00 -> InterfaceId (id of Callback) = 0x00000001 00 00 00 00 -> MessageId = 0x00000000 00 01 00 00 -> DOC_PROPS_CALLBACK_REQ = 0x100 02 00 00 00 -> ReturnValue = 2 00 00 00 00 -> ErrorCode = ERROR_SUCCESS 48 1f 00 00 -> cbDevmode = 0x1f48 -> Devmode (variable size=0x1f48) (5) Server Document Properties Callback Response ChannelName = XPSRD,12,server to client 00000000 01 00 00 00 00 00 00 00 00 00 00 00 ............ 01 00 00 00 -> InterfaceId (id of Callback) = 0x00000001 00 00 00 00 -> MessageId = 0x00000000 00 00 00 00 -> Result = S_OK (6) Client Cancel Async Document Properties Response ChannelName = XPSRD,12,client to server 00000000 00 00 00 00 00 00 00 00 00 00 00 00 ............ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 00 00 00 -> Result = S_OK (7) Client to Server Interface release ChannelName = XPSRD,12,client to server 00000000 01 00 00 00 00 00 00 00 01 00 00 00 ............ 01 00 00 00 -> InterfaceId (id of Callback) = 0x00000001 00 00 00 00 -> MessageId = 0x00000000 01 00 00 00 -> RIMCALL_RELEASE = 0x00000001
Printer Properties User Interface sequence (canceled):
-
(1) Server Async Printer Properties Request ChannelName = XPSRD,32,server to client 00000000 00 00 00 00 00 00 00 00 07 01 00 00 01 00 00 00 ................ 00000010 16 01 21 00 00 00 00 00 01 00 00 00 01 00 00 00 ..!............. 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 07 01 00 00 -> ASYNC_PRINTER_PROPS_REQ = 0x107 01 00 00 00 -> Flags = XPSREDIR_PRINTER_PROPERTIES_Flags_NO_PERMISSION 16 01 21 00 00 00 00 00 -> hServerWindow = 0x210116 01 00 00 00 -> NumCallbacks 01 00 00 00 -> Callback (2) Client Async Printer Properties Response ChannelName = XPSRD,12,client to server 00000000 00 00 00 00 00 00 00 00 00 00 00 00 ............ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 00 00 00 -> Result = S_OK (3) Server Cancel Async Printer Properties Request ChannelName = XPSRD,12,server to client 00000000 00 00 00 00 00 00 00 00 0a 01 00 00 ............ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 0a 01 00 00 -> CANCEL_ASYNC_PRINTER_PROPS_REQ = 0x10a (4) Client Printer Properties Callback Request ChannelName = XPSRD,20,client to server 00000000 01 00 00 00 00 00 00 00 00 01 00 00 01 00 00 00 ................ 00000010 00 00 00 00 .... 01 00 00 00 -> InterfaceId (id of Callback) = 0x00000001 00 00 00 00 -> MessageId = 0x00000000 00 01 00 00 -> PRINTER_PROPS_CALLBACK_REQ = 0x100 01 00 00 00 -> ReturnValue = 1 00 00 00 00 -> ERROR_SUCCESS (5) Server Printer Properties Callback Response ChannelName = XPSRD,12,server to client 00000000 01 00 00 00 00 00 00 00 00 00 00 00 ............ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 00 00 00 -> Result = S_OK (7) Client Cancel Async Printer Properties Response ChannelName = XPSRD,12,client to server 00000000 00 00 00 00 00 00 00 00 00 00 00 00 ............ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 00 00 00 -> Result = S_OK (8) Client to Server Interface release ChannelName = XPSRD,12,client to server 00000000 01 00 00 00 00 00 00 00 01 00 00 00 ............ 01 00 00 00 -> InterfaceId (id of Callback) = 0x00000001 00 00 00 00 -> MessageId = 0x00000000 01 00 00 00 -> RIMCALL_RELEASE = 0x00000001
Printing a document sequence:
-
(1) Server Document Properties Request ChannelName = XPSRD,32,server to client 00000000 00 00 00 00 00 00 00 00 05 01 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 05 01 00 00 -> DOC_PROPERTIES_REQ = 0x105 00 00 00 00 -> fMode = 0 00 00 00 00 00 00 00 -> hServerWindow = 0 00 00 00 00 -> cbDevmodeIn = 0 -> DevmodeIn (variable size=0) 00 00 00 00 -> OutputDevModeSizeProvided = 0 (2) Client Document Properties Response ChannelName = XPSRD,24,client to server 00000000 00 00 00 00 00 00 00 00 48 1f 00 00 00 00 00 00 ........H....... 00000010 00 00 00 00 00 00 00 00 ........ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 48 1f 00 00 -> ReturnValue = 0x1f48 00 00 00 00 -> ErrorCode = ERROR_SUCCESS 00 00 00 00 -> cbOutDevModeSize = 0 -> OutDevMode (variable size=0) 00 00 00 00 -> Result = S_OK (3) Server Get Supported Versions Request ChannelName = TSVCTKT,16,server to client 00000000 00 00 00 00 00 00 00 00 00 01 00 00 0d 00 00 00 ................ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 01 00 00 -> GET_SUPPORTED_VERSIONS_REQ = 0x100 0d 00 00 00 -> ClientPrinterId = 0xd (4) Client Get Supported Versions Response ChannelName = TSVCTKT,20,client to server 00000000 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 ................ 00000010 00 00 00 00 .... 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 01 00 00 00 -> NumVersions = 1 01 00 00 00 -> Versions (variable size=NumVersions * sizeof(UINT32) = 4) Versions[0] = 1 00 00 00 00 -> Result = S_OK (5) Server Bind Printer Request ChannelName = TSVCTKT,20,server to client 00000000 00 00 00 00 00 00 00 00 01 01 00 00 0d 00 00 00 ................ 00000010 01 00 00 00 .... 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 01 01 00 00 -> BIND_PRINTER_REQ = 0x101 0d 00 00 00 -> ClientPrinterId = 0xd 01 00 00 00 -> Version = 1 (6) Client Bind Printer Response ChannelName = TSVCTKT,24,client to server 00000000 00 00 00 00 00 00 00 00 00 00 00 00 0f f6 80 03 ................ 00000010 00 00 00 00 00 00 00 00 ........ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 00 00 00 -> Options = PTSHIM_DEFAULT 0f f6 80 03 -> DevModeFlags = 0x0380f60f = DM_MEDIATYPE|DM_ICMINTENT|DM_ICMMETHOD|DM_DUPLEX| DM_YRESOLUTION|DM_TTOPTION|DM_COLLATE| DM_DEFAULTSOURCE|DM_PRINTQUALITY|DM_ORIENTATION| DM_PAPERSIZE|DM_PAPERLENGTH|DM_PAPERWIDTH 00 00 00 00 -> NumNamespaces = 0 -> Namespaces (variable size=0) 00 00 00 00 -> Result = S_OK (7) Server Query Device Namespace Request ChannelName = TSVCTKT,12,server to client 00000000 00 00 00 00 00 00 00 00 02 01 00 00 ............ 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 02 01 00 00 -> QUERY_DEV_NS_REQ = 0x102 (8) Client Query Device Namespace Response ChannelName = TSVCTKT,83,client to server 00000000 00 00 00 00 00 00 00 00 00 68 00 74 00 74 00 70 .........h.t.t.p 00000010 00 3a 00 2f 00 2f 00 77 00 77 00 77 00 2e 00 68 .:././.w.w.w...h 00000020 00 70 00 2e 00 63 00 6f 00 6d 00 2f 00 70 00 72 .p...c.o.m./.p.r 00000030 00 69 00 6e 00 74 00 73 00 63 00 68 00 65 00 6d .i.n.t.s.c.h.e.m 00000040 00 61 00 2f 00 32 00 30 00 30 00 35 00 00 00 00 .a./.2.0.0.5.... 00000050 00 00 00 ... 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 -> is_null_flag = 0 (not null) -> DefaultNamespace(not null) = L"http://www.hp.com/printschema/2005" 00 00 00 00 -> Result = S_OK (9) Server Devmode to Print Ticket Request ChannelName = TSVCTKT,19502,server to client 00000000 00 00 00 00 00 00 00 00 04 01 00 00 48 1f 00 00 ............H... 00000010 62 00 34 00 33 00 2d 00 32 00 38 00 36 00 36 00 b.4.3.-.2.8.6.6. 00000020 2d 00 61 00 20 00 6f 00 6e 00 20 00 4d 00 53 00 -.a. .o.n. .M.S. 00000030 50 00 52 00 49 00 4e 00 54 00 34 00 34 00 20 00 P.R.I.N.T.4.4. . (skipped) 00001f50 00 00 00 00 00 00 00 00 d2 2c 00 00 3c 3f 78 6d .........,..<?xm 00001f60 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 l version="1.0" 00001f70 65 6e 63 6f 64 69 6e 67 3d 22 55 54 46 2d 38 22 encoding="UTF-8" 00001f80 3f 3e 0d 0a 3c 70 73 66 3a 50 72 69 6e 74 54 69 ?>..<psf:PrintTi (skipped) 00004c20 50 72 69 6e 74 54 69 63 6b 65 74 3e 0d 0a PrintTicket>.. 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 04 01 00 00 -> DEVMODE_TO_PRINT_TKT_REQ = 0x104 48 1f 00 00 -> cbDevmodeIn = 0x1f48 -> pDevmodeIn (variable size=0x1f48) (continuing at offset 0x00001f58) d2 2c 00 00 -> XML_DOCUMENT:cbXMLSize = 0x2cd2 -> XML_DOCUMENT:XMLDocument (variable size=0x2cd2) (10) Client Devmode to Print Ticket Response ChannelName = TSVCTKT,15431,client to server 00000000 00 00 00 00 00 00 00 00 00 36 3c 00 00 3c 3f 78 .........6<..<?x 00000010 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 ml version="1.0" 00000020 20 65 6e 63 6f 64 69 6e 67 3d 22 55 54 46 2d 38 encoding="UTF-8 00000030 22 3f 3e 0d 0a 3c 70 73 66 3a 50 72 69 6e 74 54 "?>..<psf:PrintT (skipped) 00003c30 2f 70 73 66 3a 50 72 69 6e 74 54 69 63 6b 65 74 /psf:PrintTicket 00003c40 3e 0d 0a 00 00 00 00 >...... 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 -> is_null_flag = 0 (not null) 36 3c 00 00 -> XML_DOCUMENT:cbXMLSize = 0x3c36 -> XML_DOCUMENT:XMLDocument (variable size=0x3c36) 00 00 00 00 -> Result = S_OK (11) Server Get Device Capability Request ChannelName = XPSRD,22,server to client 00000000 00 00 00 00 00 00 00 00 04 01 00 00 00 00 00 00 ................ 00000010 0b 00 00 00 00 00 ...... 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 04 01 00 00 -> GET_DEVICE_CAP_REQ = 0x104 00 00 00 00 -> cbDevmodeIn = 0 -> DevmodeIn (variable size=0) 0b 00 -> DeviceCap 00 00 00 00 -> InputBufferSize = 0 (12) Client Get Device Capability Response ChannelName = XPSRD,20,client to server 00000000 00 00 00 00 00 00 00 00 00 06 00 00 00 00 00 00 ................ 00000010 00 00 00 00 .... 00 00 00 00 -> InterfaceId = 0x00000000 00 00 00 00 -> MessageId = 0x00000000 00 06 00 00 -> ReturnValue = 0x600 00 00 00 00 -> cbOutputBufferSize = 0 -> OutputBuffer (variable size=0) 00 00 00 00 -> Result = S_OK