3.2.4 Message Processing Events and Sequencing Rules

The operation of the protocol is initiated and subsequently driven by the following higher-layer triggered events:

  • An MSMQ application creates a local private queue.

  • An MSMQ application deletes a local private queue.

  • An MSMQ application updates the security configuration of a local private queue.

  • An MSMQ application retrieves the security configuration of a local private queue.

  • An MSMQ application updates the properties of a local private queue.

  • An MSMQ application retrieves the properties of a local private queue.

  • An MSMQ application opens a queue.

  • An MSMQ application creates a cursor.

  • An MSMQ application purges a queue.

  • An MSMQ application sends a message.

  • An MSMQ application peeks a message.

  • An MSMQ application receives a message.

  • An MSMQ application sends or receives a message in the context of an external transaction.

  • An MSMQ application sends or receives messages in the context of an internal transaction.

  • An MSMQ application peeks a message using a cursor.

  • An MSMQ application requests a format name for a queue path name.

  • An MSMQ application requests a format name for a queue context handle.

  • An MSMQ application closes a queue handle.

  • An MSMQ application closes a cursor.

Prior to performing any operations over this protocol, the client MUST first construct an RPC binding handle to the server, as specified in [C706] section 2.3. The client can call the R_QMGetRTQMServerPort method using the RPC handle described above. This method returns an RPC port number with which subsequent method calls to this interface can be invoked. The client can construct a new RPC binding handle using the RPC port number acquired from R_QMGetRTQMServerPort and use the new binding handle for subsequent method invocations.

The client MUST call the R_QMQueryQMRegistryInternal method to retrieve various string values from the supporting server as specified in section 3.1.4.23. The strings returned by this call are required as input to other methods.