Documentation ¶
Index ¶
- Variables
- func NewRemoteReadServerHandle(o RemoteReadServer) dcerpc.ServerHandle
- func RegisterRemoteReadServer(conn dcerpc.Conn, o RemoteReadServer, opts ...dcerpc.Option)
- func RemoteReadServerHandle(ctx context.Context, o RemoteReadServer, opNum int, r ndr.Reader) (dcerpc.Operation, error)
- type CancelReceiveRequest
- type CancelReceiveResponse
- type CloseCursorRequest
- type CloseCursorResponse
- type CloseQueueRequest
- type CloseQueueResponse
- type CreateCursorRequest
- type CreateCursorResponse
- type EndReceiveRequest
- type EndReceiveResponse
- type EndTransactionalReceiveRequest
- type EndTransactionalReceiveResponse
- type EnlistRemoteTransactionRequest
- type EnlistRemoteTransactionResponse
- type GetServerPortRequest
- type GetServerPortResponse
- type MoveMessageRequest
- type MoveMessageResponse
- type OpenQueueForMoveRequest
- type OpenQueueForMoveResponse
- type OpenQueueRequest
- type OpenQueueResponse
- type PurgeQueueRequest
- type PurgeQueueResponse
- type QueueNoSerialize
- type QueueSerialize
- type RemoteReadClient
- type RemoteReadServer
- type SectionBuffer
- type SectionType
- type SetUserAcknowledgementClassRequest
- type SetUserAcknowledgementClassResponse
- type StartReceiveRequest
- type StartReceiveResponse
- type StartTransactionalReceiveRequest
- type StartTransactionalReceiveResponse
Constants ¶
This section is empty.
Variables ¶
var ( // Syntax UUID RemoteReadSyntaxUUID = &uuid.UUID{TimeLow: 0x1a9134dd, TimeMid: 0x7b39, TimeHiAndVersion: 0x45ba, ClockSeqHiAndReserved: 0xad, ClockSeqLow: 0x88, Node: [6]uint8{0x44, 0xd0, 0x1c, 0xa4, 0x7f, 0x28}} // Syntax ID RemoteReadSyntaxV1_0 = &dcerpc.SyntaxID{IfUUID: RemoteReadSyntaxUUID, IfVersionMajor: 1, IfVersionMinor: 0} )
var (
// import guard
GoPackage = "mqrr"
)
Functions ¶
func NewRemoteReadServerHandle ¶
func NewRemoteReadServerHandle(o RemoteReadServer) dcerpc.ServerHandle
func RegisterRemoteReadServer ¶
func RegisterRemoteReadServer(conn dcerpc.Conn, o RemoteReadServer, opts ...dcerpc.Option)
Types ¶
type CancelReceiveRequest ¶
type CancelReceiveRequest struct { // phContext: MUST be set by the client to the QUEUE_CONTEXT_HANDLE_NOSERIALIZE (section // 2.2.4.1) handle used in the corresponding call to the R_StartReceive method that // is to be canceled. The handle MUST have been returned by the server in the pphQueue // output parameter of a prior call to the R_OpenQueue (Opnum 2) (section 3.1.4.2) method // and MUST NOT have been previously closed through a call to the R_CloseQueue (Opnum // 3) (section 3.1.4.3) method. This value MUST NOT be NULL. Context *QueueNoSerialize `idl:"name:phContext" json:"context"` // dwRequestId: MUST be set by the client to the same value as the dwRequestId parameter // in the corresponding call to the R_StartReceive method or the R_StartTransactionalReceive // method. This parameter acts as an identifier to correlate an R_CancelReceive method // call to an R_StartReceive or an R_StartTransactionalReceive method call. RequestID uint32 `idl:"name:dwRequestId" json:"request_id"` }
CancelReceiveRequest structure represents the R_CancelReceive operation request
func (*CancelReceiveRequest) MarshalNDR ¶
func (*CancelReceiveRequest) UnmarshalNDR ¶
type CancelReceiveResponse ¶
type CancelReceiveResponse struct { // Return: The R_CancelReceive return value. Return int32 `idl:"name:Return" json:"return"` }
CancelReceiveResponse structure represents the R_CancelReceive operation response
func (*CancelReceiveResponse) MarshalNDR ¶
func (*CancelReceiveResponse) UnmarshalNDR ¶
type CloseCursorRequest ¶
type CloseCursorRequest struct { // phContext: MUST be set by the client to the QUEUE_CONTEXT_HANDLE_NOSERIALIZE (section // 2.2.4.1) handle with which the cursor was associated in a call to the R_CreateCursor // method. The handle MUST have been returned by the server in the pphQueue output parameter // of a prior call to the R_OpenQueue (Opnum 2) (section 3.1.4.2) method and MUST NOT // have been closed through a prior call to the R_CloseQueue (Opnum 3) (section 3.1.4.3) // method. This value MUST NOT be NULL. Context *QueueNoSerialize `idl:"name:phContext" json:"context"` // hCursor: MUST be set by the client to the handle of the cursor to be closed. The // handle MUST have been obtained by a prior call to the R_CreateCursor method and MUST // NOT have been closed through a prior call to the R_CloseCursor method. Cursor uint32 `idl:"name:hCursor" json:"cursor"` }
CloseCursorRequest structure represents the R_CloseCursor operation request
func (*CloseCursorRequest) MarshalNDR ¶
func (*CloseCursorRequest) UnmarshalNDR ¶
type CloseCursorResponse ¶
type CloseCursorResponse struct { // Return: The R_CloseCursor return value. Return int32 `idl:"name:Return" json:"return"` }
CloseCursorResponse structure represents the R_CloseCursor operation response
func (*CloseCursorResponse) MarshalNDR ¶
func (*CloseCursorResponse) UnmarshalNDR ¶
type CloseQueueRequest ¶
type CloseQueueRequest struct { // pphContext: MUST be set by the client to the QUEUE_CONTEXT_HANDLE_SERIALIZE handle // to be closed. The handle MUST have been returned by the server in the pphContext // parameter of a prior call to the R_OpenQueue method or the R_OpenQueueForMove method // and MUST NOT have been closed through a prior call to R_CloseQueue. This value MUST // NOT be NULL. If the server returns MQ_OK, it MUST set this value to NULL. Context *QueueSerialize `idl:"name:pphContext" json:"context"` }
CloseQueueRequest structure represents the R_CloseQueue operation request
func (*CloseQueueRequest) MarshalNDR ¶
func (*CloseQueueRequest) UnmarshalNDR ¶
type CloseQueueResponse ¶
type CloseQueueResponse struct { // pphContext: MUST be set by the client to the QUEUE_CONTEXT_HANDLE_SERIALIZE handle // to be closed. The handle MUST have been returned by the server in the pphContext // parameter of a prior call to the R_OpenQueue method or the R_OpenQueueForMove method // and MUST NOT have been closed through a prior call to R_CloseQueue. This value MUST // NOT be NULL. If the server returns MQ_OK, it MUST set this value to NULL. Context *QueueSerialize `idl:"name:pphContext" json:"context"` // Return: The R_CloseQueue return value. Return int32 `idl:"name:Return" json:"return"` }
CloseQueueResponse structure represents the R_CloseQueue operation response
func (*CloseQueueResponse) MarshalNDR ¶
func (*CloseQueueResponse) UnmarshalNDR ¶
type CreateCursorRequest ¶
type CreateCursorRequest struct { // phContext: MUST be set by the client to the QUEUE_CONTEXT_HANDLE_NOSERIALIZE (section // 2.2.4.1) handle with which to associate the cursor. The handle MUST have been returned // by the server in the pphQueue output parameter of a prior call to the R_OpenQueue // (Opnum 2) (section 3.1.4.2) method and MUST NOT have been closed through a prior // call to the R_CloseQueue (Opnum 3) (section 3.1.4.3) method. This value MUST NOT // be NULL. Context *QueueNoSerialize `idl:"name:phContext" json:"context"` }
CreateCursorRequest structure represents the R_CreateCursor operation request
func (*CreateCursorRequest) MarshalNDR ¶
func (*CreateCursorRequest) UnmarshalNDR ¶
type CreateCursorResponse ¶
type CreateCursorResponse struct { // phCursor: MUST be set by the server to a handle for the created cursor. Cursor uint32 `idl:"name:phCursor" json:"cursor"` // Return: The R_CreateCursor return value. Return int32 `idl:"name:Return" json:"return"` }
CreateCursorResponse structure represents the R_CreateCursor operation response
func (*CreateCursorResponse) MarshalNDR ¶
func (*CreateCursorResponse) UnmarshalNDR ¶
type EndReceiveRequest ¶
type EndReceiveRequest struct { // phContext: MUST be set by the client to the QUEUE_CONTEXT_HANDLE_NOSERIALIZE (section // 2.2.4.1) handle used in the corresponding call to the R_StartReceive method. The // handle MUST have been returned by the server in the pphQueue output parameter of // a prior call to the R_OpenQueue (Opnum 2) (section 3.1.4.2) method and MUST NOT have // been closed through a prior call to the R_CloseQueue (Opnum 3) (section 3.1.4.3) // method. This value MUST NOT be NULL. Context *QueueNoSerialize `idl:"name:phContext" json:"context"` // dwAck: MUST be set to an Acknowledgment (ACK) or a Negative Acknowledgment (NACK) // for the message packet received from the server in an R_StartReceive method request. // The following table lists possible values. // // +--------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +--------------------+----------------------------------------------------------------------------------+ // +--------------------+----------------------------------------------------------------------------------+ // | RR_ACK 0x00000002 | The client acknowledges that the message packet was received successfully. | // | | The server MUST remove the message from the queue and make it unavailable for | // | | subsequent consumption. | // +--------------------+----------------------------------------------------------------------------------+ // | RR_NACK 0x00000001 | The client acknowledges that the message packet was not received successfully. | // | | The server MUST keep the message in the queue and make it available for | // | | subsequent consumption. | // +--------------------+----------------------------------------------------------------------------------+ Ack uint32 `idl:"name:dwAck" json:"ack"` // dwRequestId: MUST be set by the client to the same value as the dwRequestId parameter // in the corresponding call to the R_StartReceive method. This parameter acts as an // identifier to correlate an R_EndReceive method call to an R_StartReceive method call. RequestID uint32 `idl:"name:dwRequestId" json:"request_id"` }
EndReceiveRequest structure represents the R_EndReceive operation request
func (*EndReceiveRequest) MarshalNDR ¶
func (*EndReceiveRequest) UnmarshalNDR ¶
type EndReceiveResponse ¶
type EndReceiveResponse struct { // Return: The R_EndReceive return value. Return int32 `idl:"name:Return" json:"return"` }
EndReceiveResponse structure represents the R_EndReceive operation response
func (*EndReceiveResponse) MarshalNDR ¶
func (*EndReceiveResponse) UnmarshalNDR ¶
type EndTransactionalReceiveRequest ¶
type EndTransactionalReceiveRequest struct { // phContext: MUST be set by the client to the QUEUE_CONTEXT_HANDLE_NOSERIALIZE structure // used in the corresponding call to the R_StartTransactionalReceive method. The handle // MUST have been returned by the server in the pphQueue output parameter of a prior // call to the R_OpenQueue (Opnum 2) (section 3.1.4.2) method and MUST NOT have been // closed through a prior call to the R_CloseQueue (Opnum 3) (section 3.1.4.3) method. // This value MUST NOT be NULL. Context *QueueNoSerialize `idl:"name:phContext" json:"context"` // dwAck: MUST be set to an Acknowledgment (ACK) or a Negative Acknowledgment (NACK) // for the message packet received from the server in an R_StartTransactionalReceive // method request. The following table lists possible values. // // +--------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +--------------------+----------------------------------------------------------------------------------+ // +--------------------+----------------------------------------------------------------------------------+ // | RR_ACK 0x00000002 | The client acknowledges that the message packet was received successfully. The | // | | server MUST NOT remove the packet from the queue. The server removes the packet | // | | from the queue when the transaction is committed. | // +--------------------+----------------------------------------------------------------------------------+ // | RR_NACK 0x00000001 | The client acknowledges that the message packet was not received successfully. | // | | The server MUST keep the message packet and make it available for subsequent | // | | consumption. | // +--------------------+----------------------------------------------------------------------------------+ Ack uint32 `idl:"name:dwAck" json:"ack"` // dwRequestId: MUST be set by the client to the same value as the dwRequestId parameter // in the corresponding call to the R_StartTransactionalReceive method. This parameter // acts as an identifier to correlate an R_EndTransactionalReceive method call to an // R_StartTransactionalReceive method call. RequestID uint32 `idl:"name:dwRequestId" json:"request_id"` }
EndTransactionalReceiveRequest structure represents the R_EndTransactionalReceive operation request
func (*EndTransactionalReceiveRequest) MarshalNDR ¶
func (*EndTransactionalReceiveRequest) UnmarshalNDR ¶
type EndTransactionalReceiveResponse ¶
type EndTransactionalReceiveResponse struct { // Return: The R_EndTransactionalReceive return value. Return int32 `idl:"name:Return" json:"return"` }
EndTransactionalReceiveResponse structure represents the R_EndTransactionalReceive operation response
func (*EndTransactionalReceiveResponse) MarshalNDR ¶
func (*EndTransactionalReceiveResponse) UnmarshalNDR ¶
type EnlistRemoteTransactionRequest ¶
type EnlistRemoteTransactionRequest struct { // pTransactionId: MUST be a pointer to a transaction identifier obtained as specified // in [MS-DTCO] section 3.3.4.1. This value MUST NOT be NULL. TransactionID *mqmq.TransactionUOW `idl:"name:pTransactionId" json:"transaction_id"` // cbPropagationToken: MUST be the size, in bytes, of the pbPropagationToken parameter. PropagationTokenLength uint32 `idl:"name:cbPropagationToken" json:"propagation_token_length"` // pbPropagationToken: MUST be a transaction propagation token, as specified in [MS-DTCO] // section 2.2.5.4, that represents the transaction identified by the pTransactionId // parameter. This parameter MUST NOT be NULL. PropagationToken []byte `idl:"name:pbPropagationToken;size_is:(cbPropagationToken)" json:"propagation_token"` // pQueueFormat: MUST be a pointer to a QUEUE_FORMAT ([MS-MQMQ] section 2.2.7) structure // that identifies the queue to be passed to the R_StartTransactionalReceive method. // SHOULD<28> be ignored by the server. QueueFormat *mqmq.QueueFormat `idl:"name:pQueueFormat" json:"queue_format"` }
EnlistRemoteTransactionRequest structure represents the R_QMEnlistRemoteTransaction operation request
func (*EnlistRemoteTransactionRequest) MarshalNDR ¶
func (*EnlistRemoteTransactionRequest) UnmarshalNDR ¶
type EnlistRemoteTransactionResponse ¶
type EnlistRemoteTransactionResponse struct { // Return: The R_QMEnlistRemoteTransaction return value. Return int32 `idl:"name:Return" json:"return"` }
EnlistRemoteTransactionResponse structure represents the R_QMEnlistRemoteTransaction operation response
func (*EnlistRemoteTransactionResponse) MarshalNDR ¶
func (*EnlistRemoteTransactionResponse) UnmarshalNDR ¶
type GetServerPortRequest ¶
type GetServerPortRequest struct { }
GetServerPortRequest structure represents the R_GetServerPort operation request
func (*GetServerPortRequest) MarshalNDR ¶
func (*GetServerPortRequest) UnmarshalNDR ¶
type GetServerPortResponse ¶
type GetServerPortResponse struct { // Return: The R_GetServerPort return value. Return uint32 `idl:"name:Return" json:"return"` }
GetServerPortResponse structure represents the R_GetServerPort operation response
func (*GetServerPortResponse) MarshalNDR ¶
func (*GetServerPortResponse) UnmarshalNDR ¶
type MoveMessageRequest ¶
type MoveMessageRequest struct { // phContextFrom: MUST be set by the client to a QUEUE_CONTEXT_HANDLE_NOSERIALIZE (section // 2.2.4.1) handle representing the source queue. The handle MUST have been returned // by the server in the pphQueue output parameter of a prior call to the R_OpenQueue // (Opnum 2) (section 3.1.4.2) method with the dwAccess parameter set to RECEIVE_ACCESS // and MUST NOT have been closed through a prior call to the R_CloseQueue (Opnum 3) // (section 3.1.4.3) method. This value MUST NOT be NULL. ContextFrom *QueueNoSerialize `idl:"name:phContextFrom" json:"context_from"` // ullContextTo: MUST be set by the client to a QUEUE_CONTEXT_HANDLE_NOSERIALIZE handle // representing the destination queue. The handle MUST have been returned by the server // in the pMoveContext output parameter of a prior call to the R_OpenQueueForMove (Opnum // 11) (section 3.1.4.11) method and MUST NOT have been closed through a prior call // to the R_CloseQueue method. This value MUST NOT be NULL. ContextTo uint64 `idl:"name:ullContextTo" json:"context_to"` // LookupId: MUST be set by the client to the lookup identifier of the message to be // moved. LookupID uint64 `idl:"name:LookupId" json:"lookup_id"` // pTransactionId: MUST be set by the client as a pointer to a transaction identifier // or to a zero value XACTUOW ([MS-MQMQ] section 2.2.18.1.8) structure. If the destination // queue is not a transactional queue, this value MUST be a pointer to a zero value // XACTUOW structure. If the value of the field is not zero, the transaction identifier // MUST have been registered with the server through a prior call to the R_QMEnlistRemoteTransaction // (Opnum 12) (section 3.1.4.12) method and MUST NOT be NULL. TransactionID *mqmq.TransactionUOW `idl:"name:pTransactionId" json:"transaction_id"` }
MoveMessageRequest structure represents the R_MoveMessage operation request
func (*MoveMessageRequest) MarshalNDR ¶
func (*MoveMessageRequest) UnmarshalNDR ¶
type MoveMessageResponse ¶
type MoveMessageResponse struct { // Return: The R_MoveMessage return value. Return int32 `idl:"name:Return" json:"return"` }
MoveMessageResponse structure represents the R_MoveMessage operation response
func (*MoveMessageResponse) MarshalNDR ¶
func (*MoveMessageResponse) UnmarshalNDR ¶
type OpenQueueForMoveRequest ¶
type OpenQueueForMoveRequest struct { // pQueueFormat: MUST be a pointer to a QUEUE_FORMAT ([MS-MQMQ] section 2.2.7) structure // that identifies the queue to open. This value MUST NOT be NULL. The value of the // m_qft member MUST be one of QUEUE_FORMAT_TYPE_PUBLIC, QUEUE_FORMAT_TYPE_PRIVATE, // QUEUE_FORMAT_TYPE_DIRECT, QUEUE_FORMAT_TYPE_MACHINE, or QUEUE_FORMAT_TYPE_SUBQUEUE. QueueFormat *mqmq.QueueFormat `idl:"name:pQueueFormat" json:"queue_format"` // dwAccess: Specifies the required type of access to the queue. MUST be set by the // client to MQ_MOVE_ACCESS (0x00000004). Access uint32 `idl:"name:dwAccess" json:"access"` // be set by the client to MQ_DENY_NONE (0x00000000), which permits multiple QUEUE_CONTEXT_HANDLE_SERIALIZE // handles to the queue to be opened concurrently. ShareMode uint32 `idl:"name:dwShareMode" json:"share_mode"` // pClientId: MUST be set by the client to a pointer to a valid GUID that uniquely identifies // the client. When the queue manager acts as the client, the queue manager sets this // value to the Identifier ADM attribute of the local QueueManager ADM element instance. // The server SHOULD ignore this parameter. This value MUST NOT be NULL. ClientID *dtyp.GUID `idl:"name:pClientId" json:"client_id"` // fNonRoutingServer: If the client is configured to operate in the role of an MSMQ // routing server, this parameter MUST be set to FALSE (0x00000000); otherwise, it MUST // be set to TRUE (0x00000001).<22> If the value of the fNonRoutingServer parameter // is FALSE (0x00000000), the server MUST ignore the pClientId parameter. // // +-------+------------+ // | | | // | NAME | VALUE | // | | | // +-------+------------+ // +-------+------------+ // | FALSE | 0x00000000 | // +-------+------------+ // | TRUE | 0x00000001 | // +-------+------------+ NonRoutingServer int32 `idl:"name:fNonRoutingServer" json:"non_routing_server"` // Major: MUST be set by the client to an implementation-specific Major Version number // of the client. SHOULD<23> be ignored by the server. Major uint8 `idl:"name:Major" json:"major"` // Minor: MUST be set by the client to an implementation-specific Minor Version number // of the client. SHOULD<24> be ignored by the server. Minor uint8 `idl:"name:Minor" json:"minor"` // BuildNumber: MUST be set by the client to an implementation-specific Build Number // of the client. SHOULD<25> be ignored by the server. BuildNumber uint16 `idl:"name:BuildNumber" json:"build_number"` // fWorkgroup: MUST be set to TRUE (0x00000001) by the client if the client machine // is not a member of a Windows domain; otherwise, it MUST be set to FALSE (0x00000000). // The RPC authentication level required by the server MAY be based on this value in // subsequent calls on the interface.<26> // // +-------+------------+ // | | | // | NAME | VALUE | // | | | // +-------+------------+ // +-------+------------+ // | FALSE | 0x00000000 | // +-------+------------+ // | TRUE | 0x00000001 | // +-------+------------+ Workgroup int32 `idl:"name:fWorkgroup" json:"workgroup"` }
OpenQueueForMoveRequest structure represents the R_OpenQueueForMove operation request
func (*OpenQueueForMoveRequest) MarshalNDR ¶
func (*OpenQueueForMoveRequest) UnmarshalNDR ¶
type OpenQueueForMoveResponse ¶
type OpenQueueForMoveResponse struct { // pMoveContext: The server MUST set this parameter to a pointer to a QUEUE_CONTEXT_HANDLE_SERIALIZE // handle and MUST set the value of this parameter to the same value as the contents // of the pphContext parameter. The server MUST set this value to a context that can // be used as the dwContextTo parameter in a subsequent call to the R_MoveMessage method. // Logically, it represents a reference to the QUEUE_CONTEXT_HANDLE_SERIALIZE handle // returned in the pphContext parameter. MoveContext uint64 `idl:"name:pMoveContext" json:"move_context"` // pphContext: MUST be set by the server to a QUEUE_CONTEXT_HANDLE_SERIALIZE handle. // A QUEUE_CONTEXT_HANDLE_SERIALIZE handle opened through a call to this method can // be closed through a subsequent call to the R_CloseQueue (Opnum 3) (section 3.1.4.3) // method. Context *QueueSerialize `idl:"name:pphContext" json:"context"` }
OpenQueueForMoveResponse structure represents the R_OpenQueueForMove operation response
func (*OpenQueueForMoveResponse) MarshalNDR ¶
func (*OpenQueueForMoveResponse) UnmarshalNDR ¶
type OpenQueueRequest ¶
type OpenQueueRequest struct { // pQueueFormat: MUST be a pointer to a QUEUE_FORMAT ([MS-MQMQ] section 2.2.7) structure // that identifies the queue to open. NULL is invalid for this parameter. The valid // values for the m_qft member are QUEUE_FORMAT_TYPE_PUBLIC, QUEUE_FORMAT_TYPE_PRIVATE, // QUEUE_FORMAT_TYPE_DIRECT, QUEUE_FORMAT_TYPE_MACHINE, and QUEUE_FORMAT_TYPE_SUBQUEUE. QueueFormat *mqmq.QueueFormat `idl:"name:pQueueFormat" json:"queue_format"` // dwAccess: Specifies the requested type of access to the queue. The required dwAccess // parameter value for each event is specified in each of the corresponding events. // If no requirement is listed, any dwAccess parameter value is accepted. // // +---------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +---------------------------+----------------------------------------------------------------------------------+ // +---------------------------+----------------------------------------------------------------------------------+ // | RECEIVE_ACCESS 0x00000001 | The returned QUEUE_CONTEXT_HANDLE_SERIALIZE handle can be used in the | // | | R_StartReceive or R_StartTransactionalReceive methods with the ulAction | // | | parameter set to either a Peek or Receive action type as defined in the table | // | | under the ulAction parameter in the R_StartReceive method. | // +---------------------------+----------------------------------------------------------------------------------+ // | PEEK_ACCESS 0x00000020 | The returned QUEUE_CONTEXT_HANDLE_SERIALIZE handle can be used in the | // | | R_StartReceive method with the ulAction parameter set only to a Peek action | // | | type as defined in the table under the ulAction parameter in the R_StartReceive | // | | method. | // +---------------------------+----------------------------------------------------------------------------------+ Access uint32 `idl:"name:dwAccess" json:"access"` // following values are valid for this parameter: // // +--------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +--------------------------+----------------------------------------------------------------------------------+ // +--------------------------+----------------------------------------------------------------------------------+ // | MQ_DENY_NONE 0x00000000 | Permits multiple QUEUE_CONTEXT_HANDLE_SERIALIZE handles to the queue to be | // | | opened concurrently. | // +--------------------------+----------------------------------------------------------------------------------+ // | MQ_DENY_SHARE 0x00000001 | Permits a single QUEUE_CONTEXT_HANDLE_SERIALIZE handle to the queue at a time, | // | | providing exclusive access to the queue. | // +--------------------------+----------------------------------------------------------------------------------+ ShareMode uint32 `idl:"name:dwShareMode" json:"share_mode"` // pClientId: MUST be set by the client to a pointer to a valid GUID that uniquely identifies // the client. When the queue manager acts as the client, the queue manager sets this // value to the Identifier ADM attribute of the local QueueManager ADM element instance. // The server SHOULD ignore this parameter. The server MAY<14> use this parameter to // impose a limit on the number of unique callers. NULL is invalid for this parameter. ClientID *dtyp.GUID `idl:"name:pClientId" json:"client_id"` // fNonRoutingServer: If the client is configured to operate in the role of an MSMQ // routing server, this parameter MUST be set to FALSE (0x00000000); otherwise, it MUST // be set to TRUE (0x00000001).<15> If the value of the fNonRoutingServer parameter // is FALSE (0x00000000), the server MUST ignore the pClientId parameter. // // +-------+------------+ // | | | // | NAME | VALUE | // | | | // +-------+------------+ // +-------+------------+ // | False | 0x00000000 | // +-------+------------+ // | True | 0x00000001 | // +-------+------------+ NonRoutingServer int32 `idl:"name:fNonRoutingServer" json:"non_routing_server"` // Major: MUST be set by the client to an implementation-specific Major Version number // of the client. SHOULD<16> be ignored by the server. Major uint8 `idl:"name:Major" json:"major"` // Minor: MUST be set by the client to an implementation-specific Minor Version number // of the client. SHOULD<17> be ignored by the server. Minor uint8 `idl:"name:Minor" json:"minor"` // BuildNumber: MUST be set by the client to an implementation-specific Build Number // of the client. SHOULD<18> be ignored by the server. BuildNumber uint16 `idl:"name:BuildNumber" json:"build_number"` // fWorkgroup: MUST be set to TRUE (0x00000001) by the client if the client machine // is not a member of a Windows domain; otherwise, it MUST be set to FALSE (0x00000000). // The RPC authentication level required by the server MAY<19> be based on this value // in subsequent calls on the interface. // // +-------+------------+ // | | | // | NAME | VALUE | // | | | // +-------+------------+ // +-------+------------+ // | False | 0x00000000 | // +-------+------------+ // | True | 0x00000001 | // +-------+------------+ Workgroup int32 `idl:"name:fWorkgroup" json:"workgroup"` }
OpenQueueRequest structure represents the R_OpenQueue operation request
func (*OpenQueueRequest) MarshalNDR ¶
func (*OpenQueueRequest) UnmarshalNDR ¶
type OpenQueueResponse ¶
type OpenQueueResponse struct { // pphContext: MUST be set by the server to a QUEUE_CONTEXT_HANDLE_SERIALIZE handle. Context *QueueSerialize `idl:"name:pphContext" json:"context"` }
OpenQueueResponse structure represents the R_OpenQueue operation response
func (*OpenQueueResponse) MarshalNDR ¶
func (*OpenQueueResponse) UnmarshalNDR ¶
type PurgeQueueRequest ¶
type PurgeQueueRequest struct { // phContext: MUST be set by the client to a QUEUE_CONTEXT_HANDLE_NOSERIALIZE (section // 2.2.4.1) handle of the queue to be purged. The handle MUST have been returned by // the server in the pphQueue output parameter of a prior call to the R_OpenQueue (Opnum // 2) (section 3.1.4.2) method with the dwAccess parameter set to RECEIVE_ACCESS and // MUST NOT have been closed through a prior call to the R_CloseQueue (Opnum 3) (section // 3.1.4.3) method. This value MUST NOT be NULL. Context *QueueNoSerialize `idl:"name:phContext" json:"context"` }
PurgeQueueRequest structure represents the R_PurgeQueue operation request
func (*PurgeQueueRequest) MarshalNDR ¶
func (*PurgeQueueRequest) UnmarshalNDR ¶
type PurgeQueueResponse ¶
type PurgeQueueResponse struct { // Return: The R_PurgeQueue return value. Return int32 `idl:"name:Return" json:"return"` }
PurgeQueueResponse structure represents the R_PurgeQueue operation response
func (*PurgeQueueResponse) MarshalNDR ¶
func (*PurgeQueueResponse) UnmarshalNDR ¶
type QueueNoSerialize ¶
type QueueNoSerialize dcetypes.ContextHandle
QueueNoSerialize structure represents QUEUE_CONTEXT_HANDLE_NOSERIALIZE RPC structure.
func (*QueueNoSerialize) ContextHandle ¶
func (o *QueueNoSerialize) ContextHandle() *dcetypes.ContextHandle
func (*QueueNoSerialize) MarshalNDR ¶
func (*QueueNoSerialize) UnmarshalNDR ¶
type QueueSerialize ¶
type QueueSerialize dcetypes.ContextHandle
QueueSerialize structure represents QUEUE_CONTEXT_HANDLE_SERIALIZE RPC structure.
func (*QueueSerialize) ContextHandle ¶
func (o *QueueSerialize) ContextHandle() *dcetypes.ContextHandle
func (*QueueSerialize) MarshalNDR ¶
func (*QueueSerialize) UnmarshalNDR ¶
type RemoteReadClient ¶
type RemoteReadClient interface { // The R_GetServerPort method returns the RPC endpoint port for the client to use in // subsequent method calls on the RemoteRead interface. // // Return Values: On success, this method MUST return a nonzero TCP port value for the // RPC interface. If an error occurs, the server MUST return 0x00000000. // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. // // As specified in section 3.1.3, this protocol configures a fixed listening endpoint // at an RPC port number that can vary. This method returns the RPC port number determined // at server initialization time. GetServerPort(context.Context, *GetServerPortRequest, ...dcerpc.CallOption) (*GetServerPortResponse, error) // The R_OpenQueue method opens a queue in preparation for subsequent operations against // it. This method MUST be called prior to calling any of the following operations: // // * R_CreateCursor (Opnum 4) (section 3.1.4.4) ( 142d17a9-7fb3-481a-8d07-2170fd22e5ec // ) // // * R_CloseCursor (Opnum 5) (section 3.1.4.5) ( dee84ebb-3d4a-4c26-ab11-3fa3b6e1acbe // ) // // * R_PurgeQueue (Opnum 6) (section 3.1.4.6) ( 9807ff2d-be58-456c-ac96-be23be8561f4 // ) // // * R_StartReceive (Opnum 7) (section 3.1.4.7) ( 1bd20827-f774-4279-ae8d-4898d6faf6e9 // ) // // * R_CancelReceive (Opnum 8) (section 3.1.4.8) ( 471d411a-2757-478e-b121-ef24ad0543a5 // ) // // * R_EndReceive (Opnum 9) (section 3.1.4.9) ( 7e10ff5b-2991-4d73-b712-f3916bf4e85d // ) // // * R_MoveMessage (Opnum 10) (section 3.1.4.10) ( 81c28eb5-5658-4089-b8ac-7edc5d629e28 // ) for the source queue only. // // * R_StartTransactionalReceive (Opnum 13) (section 3.1.4.13) ( c5296e0c-9e12-4fe8-a25d-56924982ac3e // ) // // * R_SetUserAcknowledgementClass (Opnum 14) (section 3.1.4.14) ( add5b3ed-7b02-48df-af90-a304ed0b9eea // ) // // * R_EndTransactionalReceive (Opnum 15) (section 3.1.4.15) ( f15f7fba-9259-4641-ab05-08a0485f5a8a // ) // // This method returns a QUEUE_CONTEXT_HANDLE_SERIALIZE (section 2.2.4.2) handle value, // which is required as input in the operations listed preceding. // // Return Values: The method has no return values. If the method fails, an RPC exception // is thrown. // // Exceptions Thrown: // // In addition to the exceptions thrown by the underlying RPC protocol, as specified // in [MS-RPCE], the method throws HRESULT failure codes as RPC exceptions. The client // MUST treat all thrown HRESULT codes identically. The client MUST disregard all output // parameter values when any failure HRESULT is thrown. OpenQueue(context.Context, *OpenQueueRequest, ...dcerpc.CallOption) (*OpenQueueResponse, error) // The R_CloseQueue method closes a QUEUE_CONTEXT_HANDLE_SERIALIZE (section 2.2.4.2) // handle that was previously opened by using a call to the R_OpenQueue (Opnum 2) (section // 3.1.4.2) method or the R_OpenQueueForMove (Opnum 11) (section 3.1.4.11) method. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. CloseQueue(context.Context, *CloseQueueRequest, ...dcerpc.CallOption) (*CloseQueueResponse, error) // The R_CreateCursor method creates a cursor and returns a handle to it. The handle // can be used in subsequent calls to the R_StartReceive (Opnum 7) (section 3.1.4.7) // method or the R_StartTransactionalReceive (Opnum 13) (section 3.1.4.13) method to // specify a relative location in the queue from which to receive a message. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure, and the client MUST treat all // failure HRESULTs identically. // // The client MUST disregard all out-parameter values when any failure HRESULT is returned. // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. CreateCursor(context.Context, *CreateCursorRequest, ...dcerpc.CallOption) (*CreateCursorResponse, error) // The R_CloseCursor method closes the handle for a previously created cursor. The client // MUST call this method to reclaim resources on the server allocated by the R_CreateCursor // (Opnum 4) (section 3.1.4.4) method. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT and the client MUST // treat all failure HRESULTs identically. // // Exceptions Thrown: // // No exceptions are thrown except those that are thrown by the underlying RPC protocol, // as specified in [MS-RPCE]. CloseCursor(context.Context, *CloseCursorRequest, ...dcerpc.CallOption) (*CloseCursorResponse, error) // The R_PurgeQueue method removes all messages from the queue. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. PurgeQueue(context.Context, *PurgeQueueRequest, ...dcerpc.CallOption) (*PurgeQueueResponse, error) // The R_StartReceive method peeks or receives a message from an open queue. // // If the R_StartReceive method is invoked with a Peek action type, as specified in // the ulAction parameter, the operation completes when the R_StartReceive method returns. // // If the R_StartReceive method is invoked with a Receive action type, as specified // in the ulAction parameter, the client MUST pair each call to the R_StartReceive method // with a call to the R_EndReceive (Opnum 9) (section 3.1.4.9) method to complete the // operation, or to the R_CancelReceive (Opnum 8) (section 3.1.4.8) method to cancel // the operation. The call to the R_EndReceive method or the R_CancelReceive method // is correlated to a call to the R_StartReceive method through matching dwRequestId // parameters. // // If the client specifies a nonzero ulTimeout parameter, and a message is not available // in the queue at the time of the call, the server waits up to the specified time-out // for a message to become available in the queue before responding to the call. The // client can call the R_CancelReceive method with a matching dwRequestId parameter // to cancel the pending R_StartReceive method request. // // The message to be returned can be specified in one of three ways: // // * LookupId: A nonzero LookupId parameter value specifies the unique identifier for // the message to be returned. The ulAction parameter further specifies whether the // message to be returned is the one identified by the LookupId parameter or the first // unlocked message immediately preceding or following it. For more details, see the // description of the ulAction parameter. // // * Cursor: A nonzero cursor ( b23ea276-dfad-4083-bc48-d0f8a40255fd#gt_aa5e9c2d-16c1-4301-8bfe-18a0913ed275 // ) handle specifies the cursor to be used to identify the message to be returned. // The cursor specifies a location in the queue. The ulAction parameter further specifies // whether the message to be returned is the one identified by the cursor or the first // unlocked message immediately following it. For more details, see the description // of the ulAction parameter. // // * First: if the LookupId parameter is set to zero and the hCursor parameter is set // to zero, the first unlocked message in the queue can be returned. The ulAction parameter // further specifies whether the first message is to be received or peeked. // // The ppPacketSections parameter is the address of one or more pointers to one or more // SectionBuffer (section 2.2.6) structures. The pSectionBuffer member of the first // SectionBuffer structure points to the beginning of the message packet. If more than // one SectionBuffer structure is present, the packet sections are concatenated in the // order in which they appear in the array to form the entire packet. The size of each // section is stored in the SectionSizeAlloc member of the SectionBuffer structure. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. The client MUST disregard all output parameter // values when any failure HRESULT is returned. For descriptions of the following error // codes, see [MS-MQMQ] section 2.4. For error codes not described in [MS-MQMQ], refer // to [MSDN-MQEIC]. // // +----------------------------------------------+-------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +----------------------------------------------+-------------+ // +----------------------------------------------+-------------+ // | 0x00000000 MQ_OK | | // +----------------------------------------------+-------------+ // | 0xC00E0007 MQ_ERROR_INVALID_HANDLE | | // +----------------------------------------------+-------------+ // | 0xC00E001B MQ_ERROR_IO_TIMEOUT | | // +----------------------------------------------+-------------+ // | 0xC00E0088 MQ_ERROR_MESSAGE_NOT_FOUND | | // +----------------------------------------------+-------------+ // | 0xC00E001D MQ_ERROR_MESSAGE_ALREADY_RECEIVED | | // +----------------------------------------------+-------------+ // | 0xC00E0008 MQ_ERROR_OPERATION_CANCELLED | | // +----------------------------------------------+-------------+ // | 0xC00E0006 MQ_ERROR_INVALID_PARAMETER | | // +----------------------------------------------+-------------+ // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. StartReceive(context.Context, *StartReceiveRequest, ...dcerpc.CallOption) (*StartReceiveResponse, error) // The R_CancelReceive method cancels a pending call to the R_StartReceive (Opnum 7) // (section 3.1.4.7) method or the R_StartTransactionalReceive (Opnum 13) (section 3.1.4.13) // method. Each of those methods takes a time-out parameter that can cause the server // to not return a response until a message becomes available or the time-out expires. // The R_CancelReceive method provides a way for the client to cancel a blocked request. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. CancelReceive(context.Context, *CancelReceiveRequest, ...dcerpc.CallOption) (*CancelReceiveResponse, error) // The client MUST invoke the R_EndReceive method to advise the server that the message // packet returned by the R_StartReceive (Opnum 7) (section 3.1.4.7) method has been // received. // // The combination of the R_StartReceive method and the positive acknowledgment of the // R_EndReceive method ensures that a message packet is not lost in transit from the // server to the client due to a network outage during the call sequence. // // Note that a call to the R_StartTransactionalReceive (Opnum 13) (section 3.1.4.13) // method is ended through a corresponding call to the R_EndTransactionalReceive (Opnum // 15) (section 3.1.4.15) method, not through a call to this method. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol [MS-RPCE]. EndReceive(context.Context, *EndReceiveRequest, ...dcerpc.CallOption) (*EndReceiveResponse, error) // The R_MoveMessage method moves a message from one queue to another.<20> The source // and destination queues MUST be related as follows: // // * The source is a queue, and the destination is a subqueue ( b23ea276-dfad-4083-bc48-d0f8a40255fd#gt_328fe8aa-d006-44dd-8cc8-dba7c862aaf8 // ) of the source queue, or // // * The destination is a queue, and the source is a subqueue of the destination queue, // or // // * The source and destination are two subqueues of the same queue. // // HRESULT R_MoveMessage( // // [in] handle_t hBind, // // [in] QUEUE_CONTEXT_HANDLE_NOSERIALIZE phContextFrom, // // [in] ULONGLONG ullContextTo, // // [in] ULONGLONG LookupId, // // * ); // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client treat // all failure HRESULTs identically. // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. // // The R_MoveMessage method provides both transactional and non-transactional operations. // When using a transaction identifier, this method provisionally moves a message from // the source queue to the destination queue, pending notification of the transaction // outcome. See section 3.1.6. The non-transactional operation moves a message from // the source queue to the destination queue without enlisting in a transaction. MoveMessage(context.Context, *MoveMessageRequest, ...dcerpc.CallOption) (*MoveMessageResponse, error) // The R_OpenQueueForMove method opens the queue and returns a QUEUE_CONTEXT_HANDLE_SERIALIZE // (section 2.2.4.2) handle that can subsequently be used as the ullContextTo (destination // queue) parameter of a call to the R_MoveMessage (Opnum 10) (section 3.1.4.10) method. // This method MUST be called before the R_MoveMessage method.<21> // // Return Values: The method has no return values. If the method fails, an RPC exception // is thrown. // // Exceptions Thrown: // // In addition to the exceptions thrown by the underlying RPC protocol [MS-RPCE], the // method throws HRESULT failure codes as RPC exceptions. The client MUST treat all // thrown HRESULT codes identically. // // The client MUST disregard all out-parameter values when any failure HRESULT is thrown. OpenQueueForMove(context.Context, *OpenQueueForMoveRequest, ...dcerpc.CallOption) (*OpenQueueForMoveResponse, error) // The R_QMEnlistRemoteTransaction method propagates a distributed atomic transaction // context to the server. The server MUST enlist in the transaction context. The client // MUST call this method prior to the R_StartTransactionalReceive (Opnum 13) (section // 3.1.4.13) method or the R_MoveMessage (Opnum 10) (section 3.1.4.10) method calls.<27> // Subsequent calls to the R_StartTransactionalReceive method and the R_MoveMessage // method that use the same transaction identifier are coordinated such that either // all occur or none occurs, depending on whether the transaction outcome is Commit // or Rollback. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. // // MQ_OK (0x00000000) // // Exceptions Thrown: // // No exceptions are thrown except those that are thrown by the underlying RPC protocol, // as specified in [MS-RPCE]. EnlistRemoteTransaction(context.Context, *EnlistRemoteTransactionRequest, ...dcerpc.CallOption) (*EnlistRemoteTransactionResponse, error) // The R_StartTransactionalReceive method peeks or receives a message from the opened // queue.<29> If a transaction identifier is provided, a message is received inside // the specified transaction. // // If the R_StartTransactionalReceive method is invoked with a Peek action type, as // specified in the ulAction parameter, the operation completes when the R_StartTransactionalReceive // method returns. // // If the R_StartTransactionalReceive method is invoked with a Receive action type, // as specified in the ulAction parameter, the client MUST pair each call to the R_StartTransactionalReceive // method with a call to the R_EndTransactionalReceive (Opnum 15) (section 3.1.4.15) // method to complete the operation or to the R_CancelReceive (Opnum 8) (section 3.1.4.8) // method to cancel the operation. The call to the R_EndTransactionalReceive method // or the R_CancelReceive method is correlated to a call to the R_StartTransactionalReceive // method through matching dwRequestId parameters. // // If the client specifies a nonzero ulTimeout parameter and a message is not available // in the queue at the time of the call, the server waits up to the specified time-out // for a message to become available in the queue before responding to the call. The // client can call the R_CancelReceive method with a matching dwRequestId parameter // to cancel the pending R_StartTransactionalReceive method request. // // The message to be returned can be specified in one of three ways: // // * LookupId: A nonzero LookupId parameter value that specifies the unique identifier // for the message to be returned. The ulAction parameter further specifies whether // the message to be returned is the one identified by the LookupId parameter or the // first unlocked message immediately preceding or following it. For more details, see // the description of the ulAction parameter. // // * Cursor: A nonzero cursor ( b23ea276-dfad-4083-bc48-d0f8a40255fd#gt_aa5e9c2d-16c1-4301-8bfe-18a0913ed275 // ) handle that specifies the cursor to be used to identify the message to be returned. // The cursor specifies a location in the queue. The ulAction parameter further specifies // whether the message to be returned is the one identified by the cursor or the first // unlocked message immediately following it. For more details, see the description // of the ulAction parameter. // // * First: If the LookupId parameter is set to 0x0000000000000000 and hCursor is set // to 0x00000000, the first unlocked message in the queue can be returned. For more // details, see the description of the ulAction parameter. // // The ppPacketSections parameter is the address of one or more pointers to one or more // SectionBuffer (section 2.2.6) structures. The pSectionBuffer member of the first // SectionBuffer structure points to the beginning of the message packet. If more than // one SectionBuffer structure is present, the packet sections are concatenated in the // order in which they appear in the array to form the entire packet. The size of each // section is stored in the SectionSizeAlloc member of the SectionBuffer structure. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. The client MUST disregard all output parameter // values when any failure HRESULT is returned. // // +-----------------------------------------+-------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------------+-------------+ // +-----------------------------------------+-------------+ // | 0x00000000 MQ_OK | | // +-----------------------------------------+-------------+ // | 0xC00E0007 MQ_ERROR_INVALID_HANDLE | | // +-----------------------------------------+-------------+ // | 0xC00E0088 MQ_ERROR_MESSAGE_NOT_FOUND | | // +-----------------------------------------+-------------+ // | 0xC00E001B MQ_ERROR_IO_TIMEOUT | | // +-----------------------------------------+-------------+ // | 0xC00E0050 MQ_ERROR_TRANSACTION_USAGE | | // +-----------------------------------------+-------------+ // | 0xC00E0008 MQ_ERROR_OPERATION_CANCELLED | | // +-----------------------------------------+-------------+ // | 0xC00E0006 MQ_ERROR_INVALID_PARAMETER | | // +-----------------------------------------+-------------+ // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. StartTransactionalReceive(context.Context, *StartTransactionalReceiveRequest, ...dcerpc.CallOption) (*StartTransactionalReceiveResponse, error) // The R_SetUserAcknowledgementClass method sets the acknowledgment class property of // a message in the queue. This allows marking the message as rejected.<30> This method // MUST be called subsequent to calls to R_StartTransactionalReceive and R_EndTransactionalReceive // (Opnum 15) (section 3.1.4.15) and before the transaction is committed or aborted. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. // // MQ_OK (0x00000000) // // MQ_ERROR_INVALID_HANDLE (0xC00E0007) // // MQ_ERROR_TRANSACTION_USAGE (0xC00E0050) // // MQ_ERROR_MESSAGE_NOT_FOUND (0xC00E0088) // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. SetUserAcknowledgementClass(context.Context, *SetUserAcknowledgementClassRequest, ...dcerpc.CallOption) (*SetUserAcknowledgementClassResponse, error) // The client MUST invoke the R_EndTransactionalReceive method to advise the server // that the message packet returned by the R_StartTransactionalReceive (Opnum 13) (section // 3.1.4.13) method has been received by the client.<31> // // The combination of the R_StartTransactionalReceive method and the positive acknowledgment // of the R_EndTransactionalReceive method ensures that a message packet is not lost // in transit from the server to the client due to a network outage during the call // sequence. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. EndTransactionalReceive(context.Context, *EndTransactionalReceiveRequest, ...dcerpc.CallOption) (*EndTransactionalReceiveResponse, error) // AlterContext alters the client context. AlterContext(context.Context, ...dcerpc.Option) error }
RemoteRead interface.
func NewRemoteReadClient ¶
type RemoteReadServer ¶
type RemoteReadServer interface { // The R_GetServerPort method returns the RPC endpoint port for the client to use in // subsequent method calls on the RemoteRead interface. // // Return Values: On success, this method MUST return a nonzero TCP port value for the // RPC interface. If an error occurs, the server MUST return 0x00000000. // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. // // As specified in section 3.1.3, this protocol configures a fixed listening endpoint // at an RPC port number that can vary. This method returns the RPC port number determined // at server initialization time. GetServerPort(context.Context, *GetServerPortRequest) (*GetServerPortResponse, error) // The R_OpenQueue method opens a queue in preparation for subsequent operations against // it. This method MUST be called prior to calling any of the following operations: // // * R_CreateCursor (Opnum 4) (section 3.1.4.4) ( 142d17a9-7fb3-481a-8d07-2170fd22e5ec // ) // // * R_CloseCursor (Opnum 5) (section 3.1.4.5) ( dee84ebb-3d4a-4c26-ab11-3fa3b6e1acbe // ) // // * R_PurgeQueue (Opnum 6) (section 3.1.4.6) ( 9807ff2d-be58-456c-ac96-be23be8561f4 // ) // // * R_StartReceive (Opnum 7) (section 3.1.4.7) ( 1bd20827-f774-4279-ae8d-4898d6faf6e9 // ) // // * R_CancelReceive (Opnum 8) (section 3.1.4.8) ( 471d411a-2757-478e-b121-ef24ad0543a5 // ) // // * R_EndReceive (Opnum 9) (section 3.1.4.9) ( 7e10ff5b-2991-4d73-b712-f3916bf4e85d // ) // // * R_MoveMessage (Opnum 10) (section 3.1.4.10) ( 81c28eb5-5658-4089-b8ac-7edc5d629e28 // ) for the source queue only. // // * R_StartTransactionalReceive (Opnum 13) (section 3.1.4.13) ( c5296e0c-9e12-4fe8-a25d-56924982ac3e // ) // // * R_SetUserAcknowledgementClass (Opnum 14) (section 3.1.4.14) ( add5b3ed-7b02-48df-af90-a304ed0b9eea // ) // // * R_EndTransactionalReceive (Opnum 15) (section 3.1.4.15) ( f15f7fba-9259-4641-ab05-08a0485f5a8a // ) // // This method returns a QUEUE_CONTEXT_HANDLE_SERIALIZE (section 2.2.4.2) handle value, // which is required as input in the operations listed preceding. // // Return Values: The method has no return values. If the method fails, an RPC exception // is thrown. // // Exceptions Thrown: // // In addition to the exceptions thrown by the underlying RPC protocol, as specified // in [MS-RPCE], the method throws HRESULT failure codes as RPC exceptions. The client // MUST treat all thrown HRESULT codes identically. The client MUST disregard all output // parameter values when any failure HRESULT is thrown. OpenQueue(context.Context, *OpenQueueRequest) (*OpenQueueResponse, error) // The R_CloseQueue method closes a QUEUE_CONTEXT_HANDLE_SERIALIZE (section 2.2.4.2) // handle that was previously opened by using a call to the R_OpenQueue (Opnum 2) (section // 3.1.4.2) method or the R_OpenQueueForMove (Opnum 11) (section 3.1.4.11) method. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. CloseQueue(context.Context, *CloseQueueRequest) (*CloseQueueResponse, error) // The R_CreateCursor method creates a cursor and returns a handle to it. The handle // can be used in subsequent calls to the R_StartReceive (Opnum 7) (section 3.1.4.7) // method or the R_StartTransactionalReceive (Opnum 13) (section 3.1.4.13) method to // specify a relative location in the queue from which to receive a message. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure, and the client MUST treat all // failure HRESULTs identically. // // The client MUST disregard all out-parameter values when any failure HRESULT is returned. // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. CreateCursor(context.Context, *CreateCursorRequest) (*CreateCursorResponse, error) // The R_CloseCursor method closes the handle for a previously created cursor. The client // MUST call this method to reclaim resources on the server allocated by the R_CreateCursor // (Opnum 4) (section 3.1.4.4) method. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT and the client MUST // treat all failure HRESULTs identically. // // Exceptions Thrown: // // No exceptions are thrown except those that are thrown by the underlying RPC protocol, // as specified in [MS-RPCE]. CloseCursor(context.Context, *CloseCursorRequest) (*CloseCursorResponse, error) // The R_PurgeQueue method removes all messages from the queue. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. PurgeQueue(context.Context, *PurgeQueueRequest) (*PurgeQueueResponse, error) // The R_StartReceive method peeks or receives a message from an open queue. // // If the R_StartReceive method is invoked with a Peek action type, as specified in // the ulAction parameter, the operation completes when the R_StartReceive method returns. // // If the R_StartReceive method is invoked with a Receive action type, as specified // in the ulAction parameter, the client MUST pair each call to the R_StartReceive method // with a call to the R_EndReceive (Opnum 9) (section 3.1.4.9) method to complete the // operation, or to the R_CancelReceive (Opnum 8) (section 3.1.4.8) method to cancel // the operation. The call to the R_EndReceive method or the R_CancelReceive method // is correlated to a call to the R_StartReceive method through matching dwRequestId // parameters. // // If the client specifies a nonzero ulTimeout parameter, and a message is not available // in the queue at the time of the call, the server waits up to the specified time-out // for a message to become available in the queue before responding to the call. The // client can call the R_CancelReceive method with a matching dwRequestId parameter // to cancel the pending R_StartReceive method request. // // The message to be returned can be specified in one of three ways: // // * LookupId: A nonzero LookupId parameter value specifies the unique identifier for // the message to be returned. The ulAction parameter further specifies whether the // message to be returned is the one identified by the LookupId parameter or the first // unlocked message immediately preceding or following it. For more details, see the // description of the ulAction parameter. // // * Cursor: A nonzero cursor ( b23ea276-dfad-4083-bc48-d0f8a40255fd#gt_aa5e9c2d-16c1-4301-8bfe-18a0913ed275 // ) handle specifies the cursor to be used to identify the message to be returned. // The cursor specifies a location in the queue. The ulAction parameter further specifies // whether the message to be returned is the one identified by the cursor or the first // unlocked message immediately following it. For more details, see the description // of the ulAction parameter. // // * First: if the LookupId parameter is set to zero and the hCursor parameter is set // to zero, the first unlocked message in the queue can be returned. The ulAction parameter // further specifies whether the first message is to be received or peeked. // // The ppPacketSections parameter is the address of one or more pointers to one or more // SectionBuffer (section 2.2.6) structures. The pSectionBuffer member of the first // SectionBuffer structure points to the beginning of the message packet. If more than // one SectionBuffer structure is present, the packet sections are concatenated in the // order in which they appear in the array to form the entire packet. The size of each // section is stored in the SectionSizeAlloc member of the SectionBuffer structure. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. The client MUST disregard all output parameter // values when any failure HRESULT is returned. For descriptions of the following error // codes, see [MS-MQMQ] section 2.4. For error codes not described in [MS-MQMQ], refer // to [MSDN-MQEIC]. // // +----------------------------------------------+-------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +----------------------------------------------+-------------+ // +----------------------------------------------+-------------+ // | 0x00000000 MQ_OK | | // +----------------------------------------------+-------------+ // | 0xC00E0007 MQ_ERROR_INVALID_HANDLE | | // +----------------------------------------------+-------------+ // | 0xC00E001B MQ_ERROR_IO_TIMEOUT | | // +----------------------------------------------+-------------+ // | 0xC00E0088 MQ_ERROR_MESSAGE_NOT_FOUND | | // +----------------------------------------------+-------------+ // | 0xC00E001D MQ_ERROR_MESSAGE_ALREADY_RECEIVED | | // +----------------------------------------------+-------------+ // | 0xC00E0008 MQ_ERROR_OPERATION_CANCELLED | | // +----------------------------------------------+-------------+ // | 0xC00E0006 MQ_ERROR_INVALID_PARAMETER | | // +----------------------------------------------+-------------+ // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. StartReceive(context.Context, *StartReceiveRequest) (*StartReceiveResponse, error) // The R_CancelReceive method cancels a pending call to the R_StartReceive (Opnum 7) // (section 3.1.4.7) method or the R_StartTransactionalReceive (Opnum 13) (section 3.1.4.13) // method. Each of those methods takes a time-out parameter that can cause the server // to not return a response until a message becomes available or the time-out expires. // The R_CancelReceive method provides a way for the client to cancel a blocked request. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. CancelReceive(context.Context, *CancelReceiveRequest) (*CancelReceiveResponse, error) // The client MUST invoke the R_EndReceive method to advise the server that the message // packet returned by the R_StartReceive (Opnum 7) (section 3.1.4.7) method has been // received. // // The combination of the R_StartReceive method and the positive acknowledgment of the // R_EndReceive method ensures that a message packet is not lost in transit from the // server to the client due to a network outage during the call sequence. // // Note that a call to the R_StartTransactionalReceive (Opnum 13) (section 3.1.4.13) // method is ended through a corresponding call to the R_EndTransactionalReceive (Opnum // 15) (section 3.1.4.15) method, not through a call to this method. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol [MS-RPCE]. EndReceive(context.Context, *EndReceiveRequest) (*EndReceiveResponse, error) // The R_MoveMessage method moves a message from one queue to another.<20> The source // and destination queues MUST be related as follows: // // * The source is a queue, and the destination is a subqueue ( b23ea276-dfad-4083-bc48-d0f8a40255fd#gt_328fe8aa-d006-44dd-8cc8-dba7c862aaf8 // ) of the source queue, or // // * The destination is a queue, and the source is a subqueue of the destination queue, // or // // * The source and destination are two subqueues of the same queue. // // HRESULT R_MoveMessage( // // [in] handle_t hBind, // // [in] QUEUE_CONTEXT_HANDLE_NOSERIALIZE phContextFrom, // // [in] ULONGLONG ullContextTo, // // [in] ULONGLONG LookupId, // // * ); // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client treat // all failure HRESULTs identically. // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. // // The R_MoveMessage method provides both transactional and non-transactional operations. // When using a transaction identifier, this method provisionally moves a message from // the source queue to the destination queue, pending notification of the transaction // outcome. See section 3.1.6. The non-transactional operation moves a message from // the source queue to the destination queue without enlisting in a transaction. MoveMessage(context.Context, *MoveMessageRequest) (*MoveMessageResponse, error) // The R_OpenQueueForMove method opens the queue and returns a QUEUE_CONTEXT_HANDLE_SERIALIZE // (section 2.2.4.2) handle that can subsequently be used as the ullContextTo (destination // queue) parameter of a call to the R_MoveMessage (Opnum 10) (section 3.1.4.10) method. // This method MUST be called before the R_MoveMessage method.<21> // // Return Values: The method has no return values. If the method fails, an RPC exception // is thrown. // // Exceptions Thrown: // // In addition to the exceptions thrown by the underlying RPC protocol [MS-RPCE], the // method throws HRESULT failure codes as RPC exceptions. The client MUST treat all // thrown HRESULT codes identically. // // The client MUST disregard all out-parameter values when any failure HRESULT is thrown. OpenQueueForMove(context.Context, *OpenQueueForMoveRequest) (*OpenQueueForMoveResponse, error) // The R_QMEnlistRemoteTransaction method propagates a distributed atomic transaction // context to the server. The server MUST enlist in the transaction context. The client // MUST call this method prior to the R_StartTransactionalReceive (Opnum 13) (section // 3.1.4.13) method or the R_MoveMessage (Opnum 10) (section 3.1.4.10) method calls.<27> // Subsequent calls to the R_StartTransactionalReceive method and the R_MoveMessage // method that use the same transaction identifier are coordinated such that either // all occur or none occurs, depending on whether the transaction outcome is Commit // or Rollback. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. // // MQ_OK (0x00000000) // // Exceptions Thrown: // // No exceptions are thrown except those that are thrown by the underlying RPC protocol, // as specified in [MS-RPCE]. EnlistRemoteTransaction(context.Context, *EnlistRemoteTransactionRequest) (*EnlistRemoteTransactionResponse, error) // The R_StartTransactionalReceive method peeks or receives a message from the opened // queue.<29> If a transaction identifier is provided, a message is received inside // the specified transaction. // // If the R_StartTransactionalReceive method is invoked with a Peek action type, as // specified in the ulAction parameter, the operation completes when the R_StartTransactionalReceive // method returns. // // If the R_StartTransactionalReceive method is invoked with a Receive action type, // as specified in the ulAction parameter, the client MUST pair each call to the R_StartTransactionalReceive // method with a call to the R_EndTransactionalReceive (Opnum 15) (section 3.1.4.15) // method to complete the operation or to the R_CancelReceive (Opnum 8) (section 3.1.4.8) // method to cancel the operation. The call to the R_EndTransactionalReceive method // or the R_CancelReceive method is correlated to a call to the R_StartTransactionalReceive // method through matching dwRequestId parameters. // // If the client specifies a nonzero ulTimeout parameter and a message is not available // in the queue at the time of the call, the server waits up to the specified time-out // for a message to become available in the queue before responding to the call. The // client can call the R_CancelReceive method with a matching dwRequestId parameter // to cancel the pending R_StartTransactionalReceive method request. // // The message to be returned can be specified in one of three ways: // // * LookupId: A nonzero LookupId parameter value that specifies the unique identifier // for the message to be returned. The ulAction parameter further specifies whether // the message to be returned is the one identified by the LookupId parameter or the // first unlocked message immediately preceding or following it. For more details, see // the description of the ulAction parameter. // // * Cursor: A nonzero cursor ( b23ea276-dfad-4083-bc48-d0f8a40255fd#gt_aa5e9c2d-16c1-4301-8bfe-18a0913ed275 // ) handle that specifies the cursor to be used to identify the message to be returned. // The cursor specifies a location in the queue. The ulAction parameter further specifies // whether the message to be returned is the one identified by the cursor or the first // unlocked message immediately following it. For more details, see the description // of the ulAction parameter. // // * First: If the LookupId parameter is set to 0x0000000000000000 and hCursor is set // to 0x00000000, the first unlocked message in the queue can be returned. For more // details, see the description of the ulAction parameter. // // The ppPacketSections parameter is the address of one or more pointers to one or more // SectionBuffer (section 2.2.6) structures. The pSectionBuffer member of the first // SectionBuffer structure points to the beginning of the message packet. If more than // one SectionBuffer structure is present, the packet sections are concatenated in the // order in which they appear in the array to form the entire packet. The size of each // section is stored in the SectionSizeAlloc member of the SectionBuffer structure. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. The client MUST disregard all output parameter // values when any failure HRESULT is returned. // // +-----------------------------------------+-------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------------+-------------+ // +-----------------------------------------+-------------+ // | 0x00000000 MQ_OK | | // +-----------------------------------------+-------------+ // | 0xC00E0007 MQ_ERROR_INVALID_HANDLE | | // +-----------------------------------------+-------------+ // | 0xC00E0088 MQ_ERROR_MESSAGE_NOT_FOUND | | // +-----------------------------------------+-------------+ // | 0xC00E001B MQ_ERROR_IO_TIMEOUT | | // +-----------------------------------------+-------------+ // | 0xC00E0050 MQ_ERROR_TRANSACTION_USAGE | | // +-----------------------------------------+-------------+ // | 0xC00E0008 MQ_ERROR_OPERATION_CANCELLED | | // +-----------------------------------------+-------------+ // | 0xC00E0006 MQ_ERROR_INVALID_PARAMETER | | // +-----------------------------------------+-------------+ // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. StartTransactionalReceive(context.Context, *StartTransactionalReceiveRequest) (*StartTransactionalReceiveResponse, error) // The R_SetUserAcknowledgementClass method sets the acknowledgment class property of // a message in the queue. This allows marking the message as rejected.<30> This method // MUST be called subsequent to calls to R_StartTransactionalReceive and R_EndTransactionalReceive // (Opnum 15) (section 3.1.4.15) and before the transaction is committed or aborted. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. // // MQ_OK (0x00000000) // // MQ_ERROR_INVALID_HANDLE (0xC00E0007) // // MQ_ERROR_TRANSACTION_USAGE (0xC00E0050) // // MQ_ERROR_MESSAGE_NOT_FOUND (0xC00E0088) // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. SetUserAcknowledgementClass(context.Context, *SetUserAcknowledgementClassRequest) (*SetUserAcknowledgementClassResponse, error) // The client MUST invoke the R_EndTransactionalReceive method to advise the server // that the message packet returned by the R_StartTransactionalReceive (Opnum 13) (section // 3.1.4.13) method has been received by the client.<31> // // The combination of the R_StartTransactionalReceive method and the positive acknowledgment // of the R_EndTransactionalReceive method ensures that a message packet is not lost // in transit from the server to the client due to a network outage during the call // sequence. // // Return Values: On success, this method MUST return MQ_OK (0x00000000). // // If an error occurs, the server MUST return a failure HRESULT, and the client MUST // treat all failure HRESULTs identically. // // Exceptions Thrown: // // No exceptions are thrown except those thrown by the underlying RPC protocol, as specified // in [MS-RPCE]. EndTransactionalReceive(context.Context, *EndTransactionalReceiveRequest) (*EndTransactionalReceiveResponse, error) }
RemoteRead server interface.
type SectionBuffer ¶
type SectionBuffer struct { // SectionBufferType: MUST specify a type for the SectionBuffer structure that indicates // whether the pSectionBuffer member contains the whole Message Packet or MUST indicate // which section is contained. The SectionType (section 2.2.7) enumeration lists possible // values. More details are specified in 2.2.7. SectionBufferType SectionType `idl:"name:SectionBufferType" json:"section_buffer_type"` // SectionSizeAlloc: MUST specify the original size (in bytes) of the part of the Message // Packet that this SectionBuffer represents. When the SectionBuffer represents the // first section of the message, this field specifies the size that the SectionBuffer // would have been if the entire message body property were included. The difference // between the values of the SectionSizeAlloc member and the SectionSize member represents // the size of the message body that was not transferred. // // If the SectionBufferType member value is stFullPacket, stBinarySecondSection, or // stSrmpSecondSection, then the SectionSizeAlloc member value MUST be equal to the // SectionSize member value. SectionSizeAlloc uint32 `idl:"name:SectionSizeAlloc" json:"section_size_alloc"` // SectionSize: MUST be the size (in bytes) of the buffer pointed to by the pSectionBuffer // member. The SectionSize member specifies the size of the part of the Message Packet // contained in the pSectionBuffer member. SectionSize uint32 `idl:"name:SectionSize" json:"section_size"` // pSectionBuffer: MUST be a pointer to an array of bytes containing a section of the // Message Packet. SectionBuffer []byte `idl:"name:pSectionBuffer;size_is:(SectionSize);pointer:unique" json:"section_buffer"` }
SectionBuffer structure represents SectionBuffer RPC structure.
A SectionBuffer represents a fragment or section of a Message Packet (section 2.2.5). Operations R_StartReceive (Opnum 7) (section 3.1.4.7) and R_StartTransactionalReceive (Opnum 13) (section 3.1.4.13) fragment a Message Packet into an array of one or more SectionBuffer structures. The client concatenates these fragments to reconstruct a valid Message Packet. There can be up to two sections per message. A Message Packet is split into two sections only when a subset of the distinguished message body property is returned. The first section always contains the message body property up to the size requested.
func (*SectionBuffer) MarshalNDR ¶
func (*SectionBuffer) UnmarshalNDR ¶
type SectionType ¶
type SectionType uint16
SectionType type represents SectionType RPC enumeration.
The SectionType enumeration defines the available SectionBuffer (section 2.2.6) types.
var ( // stFullPacket: The pSectionBuffer member of the SectionBuffer structure contains // a complete Message Packet Structure (section 2.2.5). The UserMessage (section 2.2.5.1) // is either that specified in section 2.2.5.1.1 or in section 2.2.5.1.2. SectionTypeFullPacket SectionType = 0 // stBinaryFirstSection: The pSectionBuffer member of the SectionBuffer structure // contains the first section of the Binary Message (section 2.2.5.1.1) packet up to, // but not beyond, the MessagePropertiesHeader ([MS-MQMQ] section 2.2.19.3) in the UserMessage. SectionTypeBinaryFirstSection SectionType = 1 // stBinarySecondSection: The pSectionBuffer member of the SectionBuffer structure // contains the second section of the Binary Message packet from beyond the end of the // MessagePropertiesHeader in the UserMessage to the end of the packet. SectionTypeBinarySecondSection SectionType = 2 // stSrmpFirstSection: The pSectionBuffer member of the SectionBuffer structure contains // the first section of the SRMP Message packet up to, but not beyond, the CompoundMessageHeader // (section 2.2.5.1.2.2) in the UserMessage. SectionTypeSrmpFirstSection SectionType = 3 // stSrmpSecondSection: The pSectionBuffer member of the SectionBuffer structure contains // the second section of the SRMP Message packet from beyond the end of the CompoundMessageHeader // in the UserMessage to the end of the packet. SectionTypeSrmpSecondSection SectionType = 4 )
func (SectionType) String ¶
func (o SectionType) String() string
type SetUserAcknowledgementClassRequest ¶
type SetUserAcknowledgementClassRequest struct { // phContext: MUST be set by the client to a QUEUE_CONTEXT_HANDLE_NOSERIALIZE handle // representing the queue containing the message on which to set the acknowledgment // class. The handle MUST have been returned by the server in the pphQueue output parameter // of a prior call to the R_OpenQueue (Opnum 2) (section 3.1.4.2) method with the dwAccess // parameter set to MQ_RECEIVE_ACCESS and MUST NOT have been closed through a prior // call to the R_CloseQueue (Opnum 3) (section 3.1.4.3) method. This value MUST NOT // be NULL. Context *QueueNoSerialize `idl:"name:phContext" json:"context"` // LookupId: MUST be set by the client to the lookup identifier of the message on which // to set the acknowledgment class. LookupID uint64 `idl:"name:LookupId" json:"lookup_id"` // usClass: The acknowledgment class to set. It MUST be set by the client to one of // the following values. // // +------------------------------------------+-------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------------------------------------+-------------------------------------------------------+ // +------------------------------------------+-------------------------------------------------------+ // | 0x0000 | No-op. No change is made to the acknowledgment class. | // +------------------------------------------+-------------------------------------------------------+ // | MQMSG_CLASS_NACK_RECEIVE_REJECTED 0xC004 | Marks the message as rejected. | // +------------------------------------------+-------------------------------------------------------+ Class uint16 `idl:"name:usClass" json:"class"` }
SetUserAcknowledgementClassRequest structure represents the R_SetUserAcknowledgementClass operation request
func (*SetUserAcknowledgementClassRequest) MarshalNDR ¶
func (*SetUserAcknowledgementClassRequest) UnmarshalNDR ¶
type SetUserAcknowledgementClassResponse ¶
type SetUserAcknowledgementClassResponse struct { // Return: The R_SetUserAcknowledgementClass return value. Return int32 `idl:"name:Return" json:"return"` }
SetUserAcknowledgementClassResponse structure represents the R_SetUserAcknowledgementClass operation response
func (*SetUserAcknowledgementClassResponse) MarshalNDR ¶
func (*SetUserAcknowledgementClassResponse) UnmarshalNDR ¶
type StartReceiveRequest ¶
type StartReceiveRequest struct { // phContext: MUST be set by the client to a QUEUE_CONTEXT_HANDLE_NOSERIALIZE (section // 2.2.4.1) handle of the queue from which to read a message. The handle MUST have been // returned by the server in the pphQueue output parameter of a prior call to the R_OpenQueue // (Opnum 2) (section 3.1.4.2) method and MUST NOT have been closed through a call prior // to the R_CloseQueue (Opnum 3) (section 3.1.4.3) method. This value MUST NOT be NULL. Context *QueueNoSerialize `idl:"name:phContext" json:"context"` // LookupId: If nonzero, specifies the lookup identifier of the message to be acted // on. // // * ulTimeout set to 0x00000000. // // * hCursor set to 0x00000000. // // * ulAction set to one of the following: // // * MQ_LOOKUP_PEEK_PREV // // * MQ_LOOKUP_PEEK_CURRENT // // * MQ_LOOKUP_PEEK_NEXT // // * MQ_LOOKUP_RECEIVE_PREV // // * MQ_LOOKUP_RECEIVE_CURRENT // // * MQ_LOOKUP_RECEIVE_NEXT // // If the client sets the LookupId parameter to 0x0000000000000000, all of the preceding // values of the ulAction parameter are invalid. LookupID uint64 `idl:"name:LookupId" json:"lookup_id"` // hCursor: If nonzero, specifies a handle to a cursor that MUST have been obtained // from a prior call to the R_CreateCursor (Opnum 4) (section 3.1.4.4) method. The handle // MUST NOT have been closed through a prior call to the R_CloseCursor (Opnum 5) (section // 3.1.4.5) method. // // * LookupId set to 0x0000000000000000 // // * ulAction set to one of the following: // // * MQ_ACTION_RECEIVE // // * MQ_ACTION_PEEK_CURRENT // // * MQ_ACTION_PEEK_NEXT Cursor uint32 `idl:"name:hCursor" json:"cursor"` // ulAction: Specifies the action to perform on the message. The following table lists // possible actions. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | TYPE / | | // | VALUE | MEANING | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_ACTION_RECEIVE 0x00000000 | If the hCursor parameter is nonzero, read and remove the message for the current | // | | cursor location, and advance the cursor to the next position. If the hCursor | // | | parameter is 0x00000000, read and remove the message from the front of the | // | | queue. The valid values for other parameters are as follows: LookupId set to | // | | 0x0000000000000000. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_ACTION_PEEK_CURRENT 0x80000000 | If the hCursor parameter is nonzero, read the message at the current cursor | // | | location, but do not remove it from the queue. If the hCursor parameter is | // | | 0x00000000, read the message at the front of the queue, but do not remove it | // | | from the queue. The valid values for other parameters are as follows: LookupId | // | | set to 0x0000000000000000. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_ACTION_PEEK_NEXT 0x80000001 | If the hCursor parameter is nonzero, advance the cursor to the next position | // | | and read the message, but do not remove it from the queue. The valid values for | // | | other parameters are as follows: LookupId set to 0x0000000000000000. hCursor set | // | | to a nonzero cursor handle obtained from the R_CreateCursor method. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_LOOKUP_PEEK_CURRENT 0x40000010 | Read the message specified by the LookupId parameter, but do not remove it from | // | | the queue. The valid values for other parameters are as follows: LookupId set to | // | | a nonzero value. hCursor set to 0x00000000. ulTimeout set to 0x00000000. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_LOOKUP_PEEK_NEXT 0x40000011 | Read the message following the message specified by the LookupId parameter, but | // | | do not remove it. The valid values for other parameters are as follows: LookupId | // | | set to a nonzero value. hCursor set to 0x00000000. ulTimeout set to 0x00000000. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_LOOKUP_PEEK_PREV 0x40000012 | Read the message preceding the message specified by the LookupId parameter, but | // | | do not remove it from the queue. The valid values for other parameters are as | // | | follows: LookupId set to a nonzero value. hCursor set to 0x00000000. ulTimeout | // | | set to 0x00000000. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_LOOKUP_RECEIVE_CURRENT 0x40000020 | Read the message specified by the LookupId parameter, and remove it from the | // | | queue. The valid values for other parameters are as follows: LookupId set to a | // | | nonzero value. hCursor set to 0x00000000. ulTimeout set to 0x00000000. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_LOOKUP_RECEIVE_NEXT 0x40000021 | Read the message following the message specified by the LookupId parameter, and | // | | remove it from the queue. The valid values for other parameters are as follows: | // | | LookupId set to a nonzero value. hCursor set to 0x00000000. ulTimeout set to | // | | 0x00000000. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_LOOKUP_RECEIVE_PREV 0x40000022 | Read the message preceding the message specified by the LookupId parameter, and | // | | remove it from the queue. The valid values for other parameters are as follows: | // | | LookupId set to 0x0000000000000000. hCursor set to 0x00000000. ulTimeout set to | // | | 0x00000000. | // +--------------------------------------+----------------------------------------------------------------------------------+ // // If the hCursor parameter is 0x00000000 and the LookupId parameter is 0x0000000000000000, // the valid values for the ulAction parameter are as follows: // // * MQ_ACTION_RECEIVE // // * MQ_ACTION_PEEK_CURRENT Action uint32 `idl:"name:ulAction" json:"action"` // ulTimeout: Specifies the time-out, in milliseconds, to wait for a message to become // available in the queue. The valid value for this parameter is 0x00000000 if the LookupId // parameter value is nonzero or if the action is not MQ_ACTION_RECEIVE, MQ_ACTION_PEEK_CURRENT, // or MQ_ACTION_PEEK_NEXT. Timeout uint32 `idl:"name:ulTimeout" json:"timeout"` // dwRequestId: MUST be set by the client to a unique correlation identifier for the // receive request. This value MUST be used in a subsequent call to the R_EndReceive // method or the R_CancelReceive method to correlate that call with the call to the // R_StartReceive method. The value MUST NOT be used in another R_StartReceive method // call on the same QUEUE_CONTEXT_HANDLE_NOSERIALIZE handle until a call to either the // R_EndReceive method or the R_CancelReceive method with the same dwRequestId parameter // value has been completed. RequestID uint32 `idl:"name:dwRequestId" json:"request_id"` // dwMaxBodySize: MUST be set by the client to the maximum size, in bytes, of the message // body to be returned. The server SHOULD ignore this parameter when the message is // not a Binary Message (section 2.2.5.1.1). MaxBodySize uint32 `idl:"name:dwMaxBodySize" json:"max_body_size"` // dwMaxCompoundMessageSize: MUST be set by the client to the maximum size, in bytes, // of the CompoundMessageHeader (section 2.2.5.1.2.2). The server SHOULD ignore this // parameter when the message is not an SRMP Message (section 2.2.5.1.2). MaxCompoundMessageSize uint32 `idl:"name:dwMaxCompoundMessageSize" json:"max_compound_message_size"` }
StartReceiveRequest structure represents the R_StartReceive operation request
func (*StartReceiveRequest) MarshalNDR ¶
func (*StartReceiveRequest) UnmarshalNDR ¶
type StartReceiveResponse ¶
type StartReceiveResponse struct { // pdwArriveTime: The server MUST set this value to the time that the message was added // to the queue ([MS-MQDMPR] section 3.1.7.3.1), expressed as the number of seconds // elapsed since midnight 00:00:00.0, January 1, 1970 UTC. ArriveTime uint32 `idl:"name:pdwArriveTime" json:"arrive_time"` // pSequenceId: The server MUST set this parameter to the least significant 7 bytes // of the Message.LookupIdentifier of the message that is received by this request. SequenceID uint64 `idl:"name:pSequenceId" json:"sequence_id"` // pdwNumberOfSections: The server MUST set this parameter to the number of entries // in the array pointed to by the ppPacketSections parameter. NumberOfSections uint32 `idl:"name:pdwNumberOfSections" json:"number_of_sections"` // ppPacketSections: The server MUST set this parameter to an array of pointers to SectionBuffer // structures. The server MUST fill this array in the following manner: // // * Create two local variables of type DWORD ( ../ms-dtyp/262627d8-3418-4627-9218-4ffe110850b2 // ) called maxMessageSize and actualMessageSize. Assign the following values to these // variables: // // If the message is a Binary Message (section 2.2.5.1.1): // // * maxMessageSize := dwMaxBodySize // // * actualMessageSize := message packet body size // // If the message is an SRMP Message (section 2.2.5.1.2): // // * maxMessageSize := dwMaxCompoundMessageSize // // * actualMessageSize := size in bytes of *CompoundMessageHeader* // // * If the value of maxMessageSize is greater than or equal to actualMessageSize , // the ppPacketSections parameter MUST contain a single entry as follows: // // * SectionType (section 2.2.7) ( f325738c-eca9-4450-b09c-cfe8ade87d81 ) MUST be set // to stFullPacket (0x00000000). // // * The *SectionSize* and *SectionSizeAlloc* elements MUST be set to the message packet // size. // // * The *pSectionBuffer* member MUST contain the entire message packet. // // * If the value of maxMessageSize is less than actualMessageSize , the array MUST // contain a first entry as follows: // // * *SectionType* MUST be set to one of the following: // // * stBinaryFirstSection if the message packet is a binary packet. // // * stSrmpFirstSection if the message packet is an SRMP packet. // // * The *pSectionBuffer* member MUST contain the message packet headers ( b23ea276-dfad-4083-bc48-d0f8a40255fd#gt_65255b08-c9d4-46d3-adca-3a296d43ae4f // ) concatenated with the first maxMessageSize bytes of the message body. // // * The *SectionSizeAlloc* member MUST be set to the message packet header size plus // actualMessageSize. // // * The *SectionSize* member MUST be set to the size of the *pSectionBuffer* member. // // * If the value of maxMessageSize is less than actualMessageSize and the message packet // trailers ( b23ea276-dfad-4083-bc48-d0f8a40255fd#gt_8ae0387f-5b71-4be9-a326-fd130e7bef81 // ) are not empty, the array MUST contain a second entry as follows: // // * *SectionType* MUST be set to one of the following: // // * stBinarySecondSection if the message packet is a binary packet. // // * stSrmpSecondSection if the message packet is an SRMP packet. // // * The *pSectionBuffer* member MUST contain the message packet trailers. // // * The *SectionSize* member and the *SectionSizeAlloc* member MUST be equal and set // to the message packet trailers size. // // * For the first entry in this array, the *pSectionBuffer* member points to a Message // Packet Structure (section 2.2.5) ( f9e71595-339a-4cc4-8341-371e0a4cb232 ). Within // this structure, set *UserMessage.BaseHeader.TimeToReachQueue* to *UserHeader.SentTime* // + *UserMessage.BaseHeader.TimeToReachQueue*. PacketSections []*SectionBuffer `idl:"name:ppPacketSections;size_is:(, pdwNumberOfSections)" json:"packet_sections"` // Return: The R_StartReceive return value. Return int32 `idl:"name:Return" json:"return"` }
StartReceiveResponse structure represents the R_StartReceive operation response
func (*StartReceiveResponse) MarshalNDR ¶
func (*StartReceiveResponse) UnmarshalNDR ¶
type StartTransactionalReceiveRequest ¶
type StartTransactionalReceiveRequest struct { // phContext: MUST be set by the client to a QUEUE_CONTEXT_HANDLE_NOSERIALIZE (section // 2.2.4.1) handle of the queue from which to read a message. The handle MUST have been // returned by the server in the pphQueue output parameter of a prior call to the R_OpenQueue // (Opnum 2) (section 3.1.4.2) method with the dwAccess parameter set to RECEIVE_ACCESS // and MUST NOT have been closed through a prior call to the R_CloseQueue (Opnum 3) // (section 3.1.4.3) method. NULL is invalid for this parameter. Context *QueueNoSerialize `idl:"name:phContext" json:"context"` // LookupId: If nonzero, specifies the lookup identifier of the message to be acted // on. // // * ulTimeout set to 0x00000000 // // * hCursor set to 0x00000000 // // * ulAction set to one of the following: // // * MQ_LOOKUP_PEEK_PREV ( pTransactionId set to NULL) // // * MQ_LOOKUP_PEEK_CURRENT ( pTransactionId set to NULL) // // * MQ_LOOKUP_PEEK_NEXT ( pTransactionId set to NULL) // // * MQ_LOOKUP_RECEIVE_PREV // // * MQ_LOOKUP_RECEIVE_CURRENT // // * MQ_LOOKUP_RECEIVE_NEXT // // If the client sets the LookupId parameter to 0x0000000000000000, all of the preceding // values of the ulAction parameter are invalid. LookupID uint64 `idl:"name:LookupId" json:"lookup_id"` // hCursor: If nonzero, specifies a handle to a cursor that MUST have been obtained // from a prior call to the R_CreateCursor (Opnum 4) (section 3.1.4.4) method. The handle // MUST NOT have been closed through a prior call to the R_CloseCursor (Opnum 5) (section // 3.1.4.5) method. // // * LookupId set to 0x0000000000000000. // // * ulAction set to one of the following: // // * MQ_ACTION_RECEIVE // // * MQ_ACTION_PEEK_CURRENT ( pTransactionId set to NULL) // // * MQ_ACTION_PEEK_NEXT ( pTransactionId set to NULL) Cursor uint32 `idl:"name:hCursor" json:"cursor"` // ulAction: Specifies the action to perform on the message. The following table lists // possible actions. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | TYPE / | | // | VALUE | MEANING | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_ACTION_RECEIVE 0x00000000 | If the hCursor parameter is nonzero, read and remove the message at the | // | | current cursor location from the queue, and advance the cursor. If the hCursor | // | | parameter is 0x00000000, read and remove the message from the front of the | // | | queue. The valid values for other parameters are as follows: LookupId set to | // | | 0x0000000000000000. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_ACTION_PEEK_CURRENT 0x80000000 | If the hCursor parameter is nonzero, read the message at the current cursor | // | | location, but do not remove it from the queue. If the hCursor parameter is | // | | 0x00000000, read the message at the front of the queue, but do not remove it | // | | from the queue. The valid values for other parameters are as follows: LookupId | // | | set to 0x0000000000000000. pTransactionId set to NULL. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_ACTION_PEEK_NEXT 0x80000001 | If the hCursor parameter is nonzero, advance the cursor to the next position, | // | | and read the message, but do not remove it from the queue. The valid values | // | | for other parameters are as follows: LookupId set to 0x0000000000000000. | // | | hCursor set to a nonzero cursor handle obtained from the R_CreateCursor method. | // | | pTransactionId set to NULL. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_LOOKUP_PEEK_CURRENT 0x40000010 | Read the message specified by the LookupId parameter, but do not remove it from | // | | the queue. The valid values for other parameters are as follows: LookupId set | // | | to a nonzero value. hCursor set to 0x00000000. ulTimeout set to 0x00000000. | // | | pTransactionId set to NULL. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_LOOKUP_PEEK_NEXT 0x40000011 | Read the message following the message specified by the LookupId parameter, but | // | | do not remove it. The valid values for other parameters are as follows: LookupId | // | | set to a nonzero value. hCursor set to 0x00000000. ulTimeout set to 0x00000000. | // | | pTransactionId set to NULL. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_LOOKUP_PEEK_PREV 0x40000012 | Read the message preceding the message specified by the LookupId parameter, but | // | | do not remove it from the queue. The valid values for other parameters are as | // | | follows: LookupId set to a nonzero value. hCursor set to 0x00000000. ulTimeout | // | | set to 0x00000000. pTransactionId set to NULL. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_LOOKUP_RECEIVE_CURRENT 0x40000020 | Read the message specified by the LookupId parameter, and remove it from the | // | | queue. The valid values for other parameters are as follows: LookupId set to a | // | | nonzero value. hCursor set to 0x00000000. ulTimeout set to 0x00000000. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_LOOKUP_RECEIVE_NEXT 0x40000021 | Read the message following the message specified by the LookupId parameter, and | // | | remove it from the queue. The valid values for other parameters are as follows: | // | | LookupId set to a nonzero value. hCursor set to 0x00000000. ulTimeout set to | // | | 0x00000000. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | MQ_LOOKUP_RECEIVE_PREV 0x40000022 | Read the message preceding the message specified by the LookupId parameter, and | // | | remove it from the queue. The valid values for other parameters are as follows: | // | | LookupId set to a nonzero value. hCursor set to 0x00000000. ulTimeout set to | // | | 0x00000000. | // +--------------------------------------+----------------------------------------------------------------------------------+ // // * MQ_ACTION_RECEIVE // // * MQ_ACTION_PEEK_CURRENT ( pTransactionId set to NULL) Action uint32 `idl:"name:ulAction" json:"action"` // ulTimeout: Specifies the time-out, in milliseconds, to wait for a message to become // available in the queue. The valid value for this parameter is 0x00000000 if the LookupId // parameter value is nonzero or if the action is not MQ_ACTION_RECEIVE, MQ_ACTION_PEEK_CURRENT, // or MQ_ACTION_PEEK_NEXT. Timeout uint32 `idl:"name:ulTimeout" json:"timeout"` // dwRequestId: MUST be set by the client to a unique correlation identifier for the // receive request. This value MUST be used in a subsequent call to the R_EndTransactionalReceive // method or the R_CancelReceive method to correlate that call with the call to the // R_StartTransactionalReceive method. The value MUST NOT be used in another R_StartTransactionalReceive // method call on the same QUEUE_CONTEXT_HANDLE_NOSERIALIZE handle until a call to either // the R_EndTransactionalReceive method or the R_CancelReceive method with the same // dwRequestId parameter value has been completed. RequestID uint32 `idl:"name:dwRequestId" json:"request_id"` // dwMaxBodySize: MUST be set by the client to the maximum size, in bytes, of the message // body to be returned. The server SHOULD ignore this parameter when the message is // not a Binary Message (section 2.2.5.1.1). MaxBodySize uint32 `idl:"name:dwMaxBodySize" json:"max_body_size"` // dwMaxCompoundMessageSize: MUST be set by the client to the maximum size, in bytes, // of the CompoundMessageHeader (section 2.2.5.1.2.2). The server SHOULD ignore this // parameter when the message is not an SRMP Message (section 2.2.5.1.2). MaxCompoundMessageSize uint32 `idl:"name:dwMaxCompoundMessageSize" json:"max_compound_message_size"` // pTransactionId: Set to NULL or set by the client to a transaction identifier that // was registered with the server through a prior call to the R_QMEnlistRemoteTransaction // (Opnum 12) (section 3.1.4.12) method. TransactionID *mqmq.TransactionUOW `idl:"name:pTransactionId" json:"transaction_id"` }
StartTransactionalReceiveRequest structure represents the R_StartTransactionalReceive operation request
func (*StartTransactionalReceiveRequest) MarshalNDR ¶
func (*StartTransactionalReceiveRequest) UnmarshalNDR ¶
type StartTransactionalReceiveResponse ¶
type StartTransactionalReceiveResponse struct { // pdwArriveTime: The server MUST set this value to the time that the message was added // to the queue ([MS-MQDMPR] section 3.1.7.3.1), expressed as the number of seconds // elapsed since midnight 00:00:00.0, January 1, 1970 UTC. ArriveTime uint32 `idl:"name:pdwArriveTime" json:"arrive_time"` // pSequenceId: The server MUST set this parameter to the lower 7 bytes of the Message.LookupIdentifier // of the message that is received by this request. SequenceID uint64 `idl:"name:pSequenceId" json:"sequence_id"` // pdwNumberOfSections: MUST be set by the server to the number of entries in the array // that are pointed to by the ppPacketSections parameter. NumberOfSections uint32 `idl:"name:pdwNumberOfSections" json:"number_of_sections"` // ppPacketSections: MUST be set by the server to an array of pointers to SectionBuffer // (section 2.2.6) structures. The server MUST fill this array in the following manner: // // * Create two local variables of type DWORD ( ../ms-dtyp/262627d8-3418-4627-9218-4ffe110850b2 // ) called maxMessageSize and actualMessageSize. Assign the following values to these // variables: // // If the message is a *Binary Message:* // // * maxMessageSize := dwMaxBodySize // // * actualMessageSize := message packet body size // // If the message is an *SRMP Message:* // // * maxMessageSize := dwMaxCompoundMessageSize // // * actualMessageSize := size in bytes of *CompoundMessageHeader* // // * If the value of maxMessageSize is greater than or equal to actualMessageSize , // the ppPacketSections parameter MUST contain a single entry as follows: // // * The *SectionBufferType* member MUST be set to stFullPacket (0x00000000). // // * The *SectionSize* and *SectionSizeAlloc* members MUST be set to the message packet // size. // // * The *pSectionBuffer* member MUST contain the entire message packet. // // * If the value of maxMessageSize is less than actualMessageSize , the array MUST // contain a first entry as follows: // // The *SectionBufferType* member MUST be set to one of the following: // // * stBinaryFirstSection if the message packet is a binary packet. // // * stSrmpFirstSection if the message packet is an SRMP packet. // // * The *pSectionBuffer* member MUST contain the message packet headers ( b23ea276-dfad-4083-bc48-d0f8a40255fd#gt_65255b08-c9d4-46d3-adca-3a296d43ae4f // ) concatenated with the first maxMessageSize bytes of the message body. // // * The *SectionSizeAlloc* member MUST be set to the message packet headers plus actualMessageSize. // // * The *SectionSize* member MUST be set to the size of the *pSectionBuffer* member. // // * If the value of maxMessageSize is less than actualMessageSize and the message packet // trailers ( b23ea276-dfad-4083-bc48-d0f8a40255fd#gt_8ae0387f-5b71-4be9-a326-fd130e7bef81 // ) are not empty, the array MUST contain a second entry as follows: // // The *SectionBufferType* member MUST be set to one of the following: // // * stBinarySecondSection if the message packet is a binary packet. // // * stSrmpSecondSection if the message packet is an SRMP packet. // // * The *pSectionBuffer* member MUST contain the message packet trailers. // // * The *SectionSize* and the *SectionSizeAlloc* members MUST be equal and MUST be // set to the message packet trailers size. // // * For the first entry in this array, the *pSectionBuffer* member points to a Message // Packet Structure (section 2.2.5) ( f9e71595-339a-4cc4-8341-371e0a4cb232 ). Within // this structure, set *UserMessage.BaseHeader.TimeToReachQueue* to *UserHeader.SentTime* // + *UserMessage.BaseHeader.TimeToReachQueue*. PacketSections []*SectionBuffer `idl:"name:ppPacketSections;size_is:(, pdwNumberOfSections)" json:"packet_sections"` // Return: The R_StartTransactionalReceive return value. Return int32 `idl:"name:Return" json:"return"` }
StartTransactionalReceiveResponse structure represents the R_StartTransactionalReceive operation response