remoteread

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 30, 2024 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
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}
)
View Source
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)

func RemoteReadServerHandle

func RemoteReadServerHandle(ctx context.Context, o RemoteReadServer, opNum int, r ndr.Reader) (dcerpc.Operation, error)

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 (o *CancelReceiveRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CancelReceiveRequest) UnmarshalNDR

func (o *CancelReceiveRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CancelReceiveResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CancelReceiveResponse) UnmarshalNDR

func (o *CancelReceiveResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CloseCursorRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CloseCursorRequest) UnmarshalNDR

func (o *CloseCursorRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CloseCursorResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CloseCursorResponse) UnmarshalNDR

func (o *CloseCursorResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CloseQueueRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CloseQueueRequest) UnmarshalNDR

func (o *CloseQueueRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CloseQueueResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CloseQueueResponse) UnmarshalNDR

func (o *CloseQueueResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CreateCursorRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CreateCursorRequest) UnmarshalNDR

func (o *CreateCursorRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CreateCursorResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CreateCursorResponse) UnmarshalNDR

func (o *CreateCursorResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *EndReceiveRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*EndReceiveRequest) UnmarshalNDR

func (o *EndReceiveRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *EndReceiveResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*EndReceiveResponse) UnmarshalNDR

func (o *EndReceiveResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *GetServerPortRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*GetServerPortRequest) UnmarshalNDR

func (o *GetServerPortRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *GetServerPortResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*GetServerPortResponse) UnmarshalNDR

func (o *GetServerPortResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *MoveMessageRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*MoveMessageRequest) UnmarshalNDR

func (o *MoveMessageRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *MoveMessageResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*MoveMessageResponse) UnmarshalNDR

func (o *MoveMessageResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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"`
	// dwShareMode: Specifies whether the client needs exclusive access to the queue. MUST
	// 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 (o *OpenQueueForMoveRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenQueueForMoveRequest) UnmarshalNDR

func (o *OpenQueueForMoveRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *OpenQueueForMoveResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenQueueForMoveResponse) UnmarshalNDR

func (o *OpenQueueForMoveResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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"`
	// dwShareMode: Specifies whether the client needs exclusive access to the queue. The
	// 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 (o *OpenQueueRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenQueueRequest) UnmarshalNDR

func (o *OpenQueueRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *OpenQueueResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenQueueResponse) UnmarshalNDR

func (o *OpenQueueResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *PurgeQueueRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*PurgeQueueRequest) UnmarshalNDR

func (o *PurgeQueueRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *PurgeQueueResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*PurgeQueueResponse) UnmarshalNDR

func (o *PurgeQueueResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *QueueNoSerialize) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*QueueNoSerialize) UnmarshalNDR

func (o *QueueNoSerialize) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *QueueSerialize) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*QueueSerialize) UnmarshalNDR

func (o *QueueSerialize) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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

func NewRemoteReadClient(ctx context.Context, cc dcerpc.Conn, opts ...dcerpc.Option) (RemoteReadClient, error)

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 (o *SectionBuffer) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*SectionBuffer) UnmarshalNDR

func (o *SectionBuffer) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *StartReceiveRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*StartReceiveRequest) UnmarshalNDR

func (o *StartReceiveRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *StartReceiveResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*StartReceiveResponse) UnmarshalNDR

func (o *StartReceiveResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (*StartTransactionalReceiveResponse) MarshalNDR

func (*StartTransactionalReceiveResponse) UnmarshalNDR

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL