emsmdb

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: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// Syntax UUID
	EmsmdbSyntaxUUID = &uuid.UUID{TimeLow: 0xa4f1db00, TimeMid: 0xca47, TimeHiAndVersion: 0x1067, ClockSeqHiAndReserved: 0xb3, ClockSeqLow: 0x1f, Node: [6]uint8{0x0, 0xdd, 0x1, 0x6, 0x62, 0xda}}
	// Syntax ID
	EmsmdbSyntaxV0_81 = &dcerpc.SyntaxID{IfUUID: EmsmdbSyntaxUUID, IfVersionMajor: 0, IfVersionMinor: 81}
)
View Source
var (
	// import guard
	GoPackage = "oxcrpc"
)

Functions

func EmsmdbServerHandle

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

func NewEmsmdbServerHandle

func NewEmsmdbServerHandle(o EmsmdbServer) dcerpc.ServerHandle

func RegisterEmsmdbServer

func RegisterEmsmdbServer(conn dcerpc.Conn, o EmsmdbServer, opts ...dcerpc.Option)

Types

type DoAsyncConnectExRequest

type DoAsyncConnectExRequest struct {
	// cxh: A session context handle. The client MUST pass a valid session context handle
	// that was created by calling the EcDoConnectEx method. The server uses the session
	// context handle to identify the Session Context to use for this call.
	Session *oxcrpc.Session `idl:"name:cxh" json:"session"`
}

DoAsyncConnectExRequest structure represents the EcDoAsyncConnectEx operation request

func (*DoAsyncConnectExRequest) MarshalNDR

func (o *DoAsyncConnectExRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*DoAsyncConnectExRequest) UnmarshalNDR

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

type DoAsyncConnectExResponse

type DoAsyncConnectExResponse struct {
	// pacxh: An asynchronous context handle. On success, the server returns an asynchronous
	// context handle that is associated with the Session Context passed in the cxh parameter.
	// On failure, the returned value is NULL. The asynchronous context handle can be used
	// to make a call to the EcDoAsyncWaitEx method on the AsyncEMSMDB interface.
	AsyncSession *oxcrpc.AsyncSession `idl:"name:pacxh;pointer:ref" json:"async_session"`
	// Return: The EcDoAsyncConnectEx return value.
	Return int32 `idl:"name:Return" json:"return"`
}

DoAsyncConnectExResponse structure represents the EcDoAsyncConnectEx operation response

func (*DoAsyncConnectExResponse) MarshalNDR

func (o *DoAsyncConnectExResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*DoAsyncConnectExResponse) UnmarshalNDR

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

type DoConnectExRequest

type DoConnectExRequest struct {
	// szUserDN: The DN of the user who is calling the EcDoConnectEx method in a directory
	// service. The value of the szUserDN parameter is similar to the following: "/o=First
	// Organization/ou=First Administrative Group/cn=recipients/cn=janedow".
	UserDN string `idl:"name:szUserDN;string" json:"user_dn"`
	// ulFlags: A flag value that designates the type of connection being established. On
	// input, this parameter contains connection bits that MUST be set; all flag values
	// not in the following table are reserved connection flags.
	//
	//	+------------+----------------------------------------------------------------------------------+
	//	|            |                                                                                  |
	//	|   VALUE    |                                     MEANING                                      |
	//	|            |                                                                                  |
	//	+------------+----------------------------------------------------------------------------------+
	//	+------------+----------------------------------------------------------------------------------+
	//	| 0x00000000 | Requests connection without administrator privilege.                             |
	//	+------------+----------------------------------------------------------------------------------+
	//	| 0x00000001 | Requests administrator behavior, which causes the server to check that the user  |
	//	|            | has administrator privilege.                                                     |
	//	+------------+----------------------------------------------------------------------------------+
	//	| 0x00008000 | If this flag is not passed and the client version (as specified by the           |
	//	|            | rgwClientVersion parameter) is less than 12.00.0000.000 and no public folders    |
	//	|            | are configured within the messaging system, the server MUST fail the connection  |
	//	|            | attempt with error code ecClientVerDisallowed. The AUX_EXORGINFO auxiliary       |
	//	|            | block structure, specified in section 2.2.2.2.17, informs the client of the      |
	//	|            | presence of public folders within the organization. The use of the AUX_EXORGINFO |
	//	|            | auxiliary block structure is further defined in section 3.1.4.1.2.1. If this     |
	//	|            | flag is passed and the client version (as specified by the rgwClientVersion      |
	//	|            | parameter) is less than 12.00.0000.000, the server MUST NOT fail the connection  |
	//	|            | attempt due to public folders not being configured within the messaging system.  |
	//	|            | If the client version (as specified by the rgwClientVersion parameter) is        |
	//	|            | greater than or equal to 12.00.0000.000, the server MUST NOT fail the connection |
	//	|            | attempt due to public folders not being configured within the messaging system   |
	//	|            | (regardless of whether or not this flag is passed).                              |
	//	+------------+----------------------------------------------------------------------------------+
	Flags uint32 `idl:"name:ulFlags" json:"flags"`
	// ulConMod: A client-derived 32-bit hash value of the DN passed in the szUserDN parameter.
	// The server determines which public folder replica to use when accessing public folder
	// information when more than one replica of a folder exists. The hash can be used to
	// distribute client access across replicas in a deterministic way for load balancing.
	UserDNHash uint32 `idl:"name:ulConMod" json:"user_dn_hash"`
	// cbLimit: MUST be set to zero when sent and MUST be ignored when received.
	LimitLength uint32 `idl:"name:cbLimit" json:"limit_length"`
	// ulCpid: The code page in which text data is sent. If the Unicode format is not requested
	// by the client on subsequent calls that use this Session Context, the ulCpid parameter
	// sets the code page to be used in subsequent calls.
	CodePageID uint32 `idl:"name:ulCpid" json:"code_page_id"`
	// ulLcidString: The local ID for everything other than sorting.
	LocalIDString uint32 `idl:"name:ulLcidString" json:"local_id_string"`
	// ulLcidSort: The local ID for sorting.
	LocalIDSort uint32 `idl:"name:ulLcidSort" json:"local_id_sort"`
	// ulIcxrLink: A value used to link the Session Context created by this call with a
	// currently existing Session Context on the server. To request Session Context linking,
	// the client MUST pass the value of 0xFFFFFFFF. To link to an existing Session Context,
	// this value is the session index value returned in the piCxr parameter from a previous
	// call to the EcDoConnectEx method. In addition to passing the session index in the
	// ulIcxrLink parameter, the client sets the pulTimeStamp parameter to the value that
	// was returned in the pulTimeStamp parameter from the previous call to the EcDoConnectEx
	// method. These two values MUST be used by the server to identify an active session
	// with the same session index and session creation time stamp. If a session is found,
	// the server MUST link the Session Context created by this call with the one found.<8>
	//
	// A server allows Session Context linking for the following reasons:
	//
	// *
	//
	// To consume a single Client Access License (CAL) ( c5869b4a-c0d3-4ceb-80f4-c47a250ddf3d#gt_0e48e7fc-c851-4692-9b39-8bfa227f4aba
	// ) for all the connections made from a single client computer. This gives a client
	// the ability to open multiple independent connections using more than one Session
	// Context on the server but be seen to the server as only consuming a single CAL. <9>
	// ( f2038fa2-e1b4-4b77-8e29-08c865c1cb3a#Appendix_A_9 )
	//
	// *
	//
	// To get pending notification information for other sessions on the same client computer.
	// For details, see [MS-OXCNOTIF] ( ../ms-oxcnotif/7c7d1653-5dfb-42f1-9410-fc4e48e10731
	// ).
	//
	// Note that the ulIcxrLink parameter is defined as a 32-bit value. Other than passing
	// 0xFFFFFFFF for no Session Context linking, the server only uses the low-order 16
	// bits as the session index. This value is the value returned in the piCxr parameter
	// from a previous call to the EcDoConnectEx method, which is the session index and
	// defined as a 16-bit value.
	RemoteSessionLink uint32 `idl:"name:ulIcxrLink" json:"remote_session_link"`
	// usFCanConvertCodePages: This parameter is reserved. The client MUST pass a value
	// of 0x0001.
	CanConvertCodePages uint16 `idl:"name:usFCanConvertCodePages" json:"can_convert_code_pages"`
	// rgwClientVersion: The client protocol version that the server uses to determine what
	// protocol functionality the client supports. For more details about how version numbers
	// are interpreted from the wire data, see section 3.2.4.1.3.
	ClientVersion []uint16 `idl:"name:rgwClientVersion" json:"client_version"`
	// pulTimeStamp: The creation time of the newly created Session Context. On input, a
	// value used with the ulIcxrLink parameter to link the Session Context created by this
	// call with an existing Session Context. If the ulIcxrLink parameter is not set to
	// 0xFFFFFFFF, the client MUST pass in the value of the pulTimeStamp parameter returned
	// from the server on a previous call to the EcDoConnectEx method. For more details,
	// see the ulIcxrLink and piCxr parameter descriptions earlier in this section. If the
	// server supports Session Context linking, the server verifies that there is a Session
	// Context state with the unique identifier in the ulIcxrLink parameter, and the Session
	// Context state has a creation time stamp equal to the value passed in this parameter.
	// If so, the server MUST link the Session Context created by this call with the one
	// found. If no such Session Context state is found, the server does not fail the EcDoConnectEx
	// method call but simply does not link the Session Contexts.<11>
	//
	// On output, the server has to return a time stamp in which the new Session Context
	// was created. The server saves the Session Context creation time stamp within the
	// Session Context state for later use if a client attempts to link Session Contexts.
	Timestamp uint32 `idl:"name:pulTimeStamp" json:"timestamp"`
	// rgbAuxIn: An auxiliary payload buffer prefixed by an RPC_HEADER_EXT structure, as
	// specified in section 2.2.2.1. Information stored in this structure determines how
	// to interpret the data that follows the structure. The length of the auxiliary payload
	// buffer that includes the RPC_HEADER_EXT structure is contained in the cbAuxIn parameter.
	//
	// For details about how to access the embedded auxiliary payload buffer, see section
	// 3.1.4.1.1. For details about how to interpret the auxiliary payload data, see section
	// 3.1.4.1.2.
	AuxIn []byte `idl:"name:rgbAuxIn;size_is:(cbAuxIn)" json:"aux_in"`
	// cbAuxIn: The length of the rgbAuxIn parameter. If this value on input is larger than
	// 0x00001008 bytes in size, the server SHOULD<12> fail with the RPC status code RPC_X_BAD_STUB_DATA
	// (0x000006F7). If this value is greater than 0x00000000 and less than 0x00000008,
	// the server SHOULD<13> fail with ecRpcFailed (0x80040115). For more information on
	// returning RPC status codes, see [C706].
	AuxInLength uint32 `idl:"name:cbAuxIn" json:"aux_in_length"`
	// pcbAuxOut: The length of the rgbAuxOut parameter. If this value on input is larger
	// than 0x00001008, the server MUST fail with the RPC status code RPC_X_BAD_STUB_DATA
	// (0x000006F7).
	//
	// On output, this parameter contains the size of the data to be returned in the rgbAuxOut
	// parameter.
	AuxOutLength uint32 `idl:"name:pcbAuxOut" json:"aux_out_length"`
}

DoConnectExRequest structure represents the EcDoConnectEx operation request

func (*DoConnectExRequest) MarshalNDR

func (o *DoConnectExRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*DoConnectExRequest) UnmarshalNDR

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

type DoConnectExResponse

type DoConnectExResponse struct {
	// pcxh: A session context handle for the client. On success, the server MUST return
	// a unique value to be used as a session context handle.
	//
	// On failure, the server MUST return a zero value as the session context handle.
	Session *oxcrpc.Session `idl:"name:pcxh;pointer:ref" json:"session"`
	// pcmsPollsMax: An implementation-dependent value that specifies the number of milliseconds
	// that a client waits between polling the server for event information. If the client
	// or server does not support making asynchronous RPCs for notifications as specified
	// in section 3.3.4.1, or the client is unable to receive notifications via UDP datagrams,
	// as specified in [MS-OXCNOTIF] section 3.2.5.4 and [MS-OXCNOTIF] section 3.2.5.5.2,
	// the client can poll the server to determine whether any events are pending for the
	// client.
	PollsMax uint32 `idl:"name:pcmsPollsMax" json:"polls_max"`
	// pcRetry: An implementation-dependent value that specifies the number of times a client
	// retries future RPCs using the session context handle returned in this call. This
	// is for client RPCs that fail with RPC status code RPC_S_SERVER_TOO_BUSY (0x000006BB).
	// This is a suggested retry count for the client and is not to be enforced by the server.
	// For more details about circumstances under which the RPC_S_SERVER_TOO_BUSY status
	// code is returned, see [MS-OXCROPS] section 3.2.4.2. For more details about how the
	// client handles the RPC_S_SERVER_TOO_BUSY status code, see section 3.2.4.4.
	RetryCount uint32 `idl:"name:pcRetry" json:"retry_count"`
	// pcmsRetryDelay: An implementation-dependent value that specifies the number of milliseconds
	// a client waits before retrying a failed RPC. If any future RPC to the server using
	// the session context handle returned in this call fails with RPC status code RPC_S_SERVER_TOO_BUSY
	// (0x000006BB), the client waits the number of milliseconds specified in this output
	// parameter before retrying the call. The number of times a client retries is returned
	// in the pcRetry parameter. This is a suggested delay for the client and is not to
	// be enforced by the server.
	RetryDelay    uint32 `idl:"name:pcmsRetryDelay" json:"retry_delay"`
	RemoteSession uint16 `idl:"name:picxr" json:"remote_session"`
	// szDNPrefix: An implementation-dependent value that specifies a DN prefix that is
	// used to build message recipients. An empty value indicates that there is nothing
	// to prepend to recipient entries on messages.
	DNPrefix string `idl:"name:szDNPrefix;string" json:"dn_prefix"`
	// szDisplayName: The display name of the user associated with the szUserDN parameter.
	DisplayName string `idl:"name:szDisplayName;string" json:"display_name"`
	// rgwServerVersion: The server protocol version that the client uses to determine what
	// protocol functionality the server supports. For details about how version numbers
	// are interpreted from the wire data, see section 3.1.4.1.3.
	ServerVersion []uint16 `idl:"name:rgwServerVersion" json:"server_version"`
	// rgwBestVersion: The minimum client protocol version that the server supports. This
	// information is useful if the call to the EcDoConnectEx method fails with return code
	// ecVersionMismatch. On success, the server returns the value passed in the rgwClientVersion
	// parameter by the client. The server cannot perform any client protocol version negotiation.
	// The server can either return the minimum client protocol version required to access
	// the server and fail the call with ecVersionMismatch (0x80040110) or allow the client
	// and return the value passed by the client in the rgwClientVersion parameter. The
	// server implementation sets the minimum client protocol version that is supported
	// by the server. For details about how version numbers are interpreted from the wire
	// data, see section 3.1.4.1.3.1.
	BestVersion []uint16 `idl:"name:rgwBestVersion" json:"best_version"`
	// pulTimeStamp: The creation time of the newly created Session Context. On input, a
	// value used with the ulIcxrLink parameter to link the Session Context created by this
	// call with an existing Session Context. If the ulIcxrLink parameter is not set to
	// 0xFFFFFFFF, the client MUST pass in the value of the pulTimeStamp parameter returned
	// from the server on a previous call to the EcDoConnectEx method. For more details,
	// see the ulIcxrLink and piCxr parameter descriptions earlier in this section. If the
	// server supports Session Context linking, the server verifies that there is a Session
	// Context state with the unique identifier in the ulIcxrLink parameter, and the Session
	// Context state has a creation time stamp equal to the value passed in this parameter.
	// If so, the server MUST link the Session Context created by this call with the one
	// found. If no such Session Context state is found, the server does not fail the EcDoConnectEx
	// method call but simply does not link the Session Contexts.<11>
	//
	// On output, the server has to return a time stamp in which the new Session Context
	// was created. The server saves the Session Context creation time stamp within the
	// Session Context state for later use if a client attempts to link Session Contexts.
	Timestamp uint32 `idl:"name:pulTimeStamp" json:"timestamp"`
	// rgbAuxOut: An auxiliary payload buffer prefixed by an RPC_HEADER_EXT structure (section
	// 2.2.2.1). On output, the server can return auxiliary payload data to the client in
	// this parameter. The server MUST include an RPC_HEADER_EXT structure before the auxiliary
	// payload data.
	//
	// For details about how to access the embedded auxiliary payload buffer, see section
	// 3.1.4.1.1. For details about how to interpret the auxiliary payload data, see section
	// 3.1.4.1.2.
	AuxOut []byte `idl:"name:rgbAuxOut;size_is:(pcbAuxOut);length_is:(pcbAuxOut)" json:"aux_out"`
	// pcbAuxOut: The length of the rgbAuxOut parameter. If this value on input is larger
	// than 0x00001008, the server MUST fail with the RPC status code RPC_X_BAD_STUB_DATA
	// (0x000006F7).
	//
	// On output, this parameter contains the size of the data to be returned in the rgbAuxOut
	// parameter.
	AuxOutLength uint32 `idl:"name:pcbAuxOut" json:"aux_out_length"`
	// Return: The EcDoConnectEx return value.
	Return int32 `idl:"name:Return" json:"return"`
}

DoConnectExResponse structure represents the EcDoConnectEx operation response

func (*DoConnectExResponse) MarshalNDR

func (o *DoConnectExResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*DoConnectExResponse) UnmarshalNDR

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

type DoDisconnectRequest

type DoDisconnectRequest struct {
	// pcxh: A session context handle. On input, this parameter is the session context handle
	// of the Session Context that the client is disconnecting. On output, the server MUST
	// set the pcxh parameter to a zero value. Setting the value to zero instructs the RPC
	// layer of the server to destroy the RPC context handle.
	Session *oxcrpc.Session `idl:"name:pcxh;pointer:ref" json:"session"`
}

DoDisconnectRequest structure represents the EcDoDisconnect operation request

func (*DoDisconnectRequest) MarshalNDR

func (o *DoDisconnectRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*DoDisconnectRequest) UnmarshalNDR

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

type DoDisconnectResponse

type DoDisconnectResponse struct {
	// pcxh: A session context handle. On input, this parameter is the session context handle
	// of the Session Context that the client is disconnecting. On output, the server MUST
	// set the pcxh parameter to a zero value. Setting the value to zero instructs the RPC
	// layer of the server to destroy the RPC context handle.
	Session *oxcrpc.Session `idl:"name:pcxh;pointer:ref" json:"session"`
	// Return: The EcDoDisconnect return value.
	Return int32 `idl:"name:Return" json:"return"`
}

DoDisconnectResponse structure represents the EcDoDisconnect operation response

func (*DoDisconnectResponse) MarshalNDR

func (o *DoDisconnectResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*DoDisconnectResponse) UnmarshalNDR

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

type DoRPCExt2Request

type DoRPCExt2Request struct {
	// pcxh: A session context handle. On input, the client MUST pass a valid session context
	// handle that was created by calling the EcDoConnectEx method. The server uses the
	// session context handle to identify the Session Context to use for this call. On output,
	// the server MUST return the same session context handle on success.
	//
	// The server can destroy the session context handle by returning a zero session context
	// handle. Reasons for destroying the session context handle are implementation-dependent;
	// following are examples of why the server might destroy the session context handle:
	//
	// * The server determines that the ROP request ( c5869b4a-c0d3-4ceb-80f4-c47a250ddf3d#gt_edeadb0f-6571-49b7-8cce-5dc77b0793d6
	// ) payload in the rgbIn buffer is malformed or length parameters are not valid.
	//
	// * The session context handle that was passed in is not valid.
	//
	// * An attempt was made to access a mailbox ( c5869b4a-c0d3-4ceb-80f4-c47a250ddf3d#gt_d3ad0e15-adc9-4174-bacf-d929b57278b3
	// ) that is in the process of being moved.
	//
	// * An administrator has blocked a client that has an active connection.
	Session *oxcrpc.Session `idl:"name:pcxh;pointer:ref" json:"session"`
	// pulFlags: The flags that describe the server output characteristics. On input, this
	// parameter contains flags that tell the server how to build the rgbOut parameter.
	//
	//	+---------------+------------+----------------------------------------------------------------------------------+
	//	|     FLAG      |            |                                                                                  |
	//	|     NAME      |   VALUE    |                                     MEANING                                      |
	//	|               |            |                                                                                  |
	//	+---------------+------------+----------------------------------------------------------------------------------+
	//	+---------------+------------+----------------------------------------------------------------------------------+
	//	| NoCompression | 0x00000001 | The server MUST NOT compress ROP response payload (rgbOut) or auxiliary payload  |
	//	|               |            | (rgbAuxOut). For details about server behavior when this flag is absent, see     |
	//	|               |            | section 3.1.4.2.1.1.                                                             |
	//	+---------------+------------+----------------------------------------------------------------------------------+
	//	| NoXorMagic    | 0x00000002 | The server MUST NOT obfuscate the ROP response payload (rgbOut) or auxiliary     |
	//	|               |            | payload (rgbAuxOut). For details about server behavior when this flag is absent, |
	//	|               |            | see section 3.1.4.2.1.1.                                                         |
	//	+---------------+------------+----------------------------------------------------------------------------------+
	//	| Chain         | 0x00000004 | The client allows chaining of ROP response payloads.                             |
	//	+---------------+------------+----------------------------------------------------------------------------------+
	//
	// For details about how to use these flags, see section 3.1.4.2.1.1.
	//
	// On output, the server SHOULD<17> set this parameter to 0x00000000. The output flags
	// not in the table are reserved for future use.
	Flags uint32 `idl:"name:pulFlags" json:"flags"`
	// rgbIn: The ROP request payload. The ROP request payload is prefixed with an RPC_HEADER_EXT
	// header, as specified in section 2.2.2.1. Information stored in this header determines
	// how to interpret the data following the header. For details about how to access the
	// embedded ROP request payload, see section 3.1.4.2.1. The length of the ROP request
	// payload including the RPC_HEADER_EXT header is contained in the cbIn parameter.
	//
	// For more information about ROP buffers, see [MS-OXCROPS].
	In []byte `idl:"name:rgbIn;size_is:(cbIn)" json:"in"`
	// cbIn: The length of the ROP request payload. On input, this parameter contains the
	// length of the ROP request payload passed in the rgbIn parameter. The ROP request
	// payload includes the size of the ROPs plus the size of the RPC_HEADER_EXT structure.
	// The server SHOULD<18> fail with the RPC status code of RPC_X_BAD_STUB_DATA (0x000006F7)
	// if the request buffer is larger than 0x00040000 bytes in size. For more information
	// on returning RPC status codes, see [C706]. If the request buffer is smaller than
	// the size of the RPC_HEADER_EXT structure (0x00000008 bytes), the server SHOULD<19>
	// fail with error code ecRpcFailed (0x80040115).
	InLength uint32 `idl:"name:cbIn" json:"in_length"`
	// pcbOut: The maximum size of the rgbOut parameter. On input, this parameter contains
	// the maximum size of the rgbOut parameter. If the value in the pcbOut parameter on
	// input is less than 0x00000008, the server SHOULD<20> fail with error code ecRpcFailed
	// (0x80040115). If the value in the pcbOut parameter on input is larger than 0x00040000,
	// the server MUST fail with the RPC status code of RPC_X_BAD_STUB_DATA (0x000006F7).
	// If the server indicates it supports a larger ROP response payload through the ULTRA_LARGE_PACKED_DOWNLOAD_BUFFERS
	// flag being present in the Flags field of the AUX_SERVER_CAPABILITIES (section 2.2.2.2.19)
	// auxiliary block returned in rgbAuxOut field of the EcDoConnectEx method (section
	// 3.1.4.1), then the server MUST fail only if pcbOut is larger than 0x00100000.
	//
	// On output, this parameter contains the size of the ROP response payload, including
	// the size of the RPC_HEADER_EXT header in the rgbOut parameter. The server returns
	// 0x00000000 on failure because there is no ROP response payload. The client ignores
	// any data returned on failure.
	OutLength uint32 `idl:"name:pcbOut" json:"out_length"`
	// rgbAuxIn: The auxiliary payload buffer. The auxiliary payload buffer is prefixed
	// by an RPC_HEADER_EXT structure. Information stored in this header determines how
	// to interpret the data following the header. The length of the auxiliary payload buffer
	// including the RPC_HEADER_EXT header is contained in the cbAuxIn parameter.
	//
	// For details about how to access the embedded auxiliary payload buffer, see section
	// 3.1.4.2.1. For details about how to interpret the auxiliary payload data, see section
	// 3.1.4.2.2.
	AuxIn []byte `idl:"name:rgbAuxIn;size_is:(cbAuxIn)" json:"aux_in"`
	// cbAuxIn: The length of the auxiliary payload buffer. On input, this parameter contains
	// the length of the auxiliary payload buffer passed in the rgbAuxIn parameter. If the
	// request buffer value is larger than 0x00001008 bytes in size, the server SHOULD<21>
	// fail with the RPC status code RPC_X_BAD_STUB_DATA (0x000006F7).<22>
	AuxInLength uint32 `idl:"name:cbAuxIn" json:"aux_in_length"`
	// pcbAuxOut: The maximum length of the auxiliary payload buffer. On input, this parameter
	// contains the maximum length of the rgbAuxOut parameter. If this value on input is
	// larger than 0x00001008, the server MUST fail with the RPC status code RPC_X_BAD_STUB_DATA
	// (0x000006F7).
	//
	// On output, this parameter contains the size of the data to be returned in the rgbAuxOut
	// parameter.
	AuxOutLength uint32 `idl:"name:pcbAuxOut" json:"aux_out_length"`
}

DoRPCExt2Request structure represents the EcDoRpcExt2 operation request

func (*DoRPCExt2Request) MarshalNDR

func (o *DoRPCExt2Request) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*DoRPCExt2Request) UnmarshalNDR

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

type DoRPCExt2Response

type DoRPCExt2Response struct {
	// pcxh: A session context handle. On input, the client MUST pass a valid session context
	// handle that was created by calling the EcDoConnectEx method. The server uses the
	// session context handle to identify the Session Context to use for this call. On output,
	// the server MUST return the same session context handle on success.
	//
	// The server can destroy the session context handle by returning a zero session context
	// handle. Reasons for destroying the session context handle are implementation-dependent;
	// following are examples of why the server might destroy the session context handle:
	//
	// * The server determines that the ROP request ( c5869b4a-c0d3-4ceb-80f4-c47a250ddf3d#gt_edeadb0f-6571-49b7-8cce-5dc77b0793d6
	// ) payload in the rgbIn buffer is malformed or length parameters are not valid.
	//
	// * The session context handle that was passed in is not valid.
	//
	// * An attempt was made to access a mailbox ( c5869b4a-c0d3-4ceb-80f4-c47a250ddf3d#gt_d3ad0e15-adc9-4174-bacf-d929b57278b3
	// ) that is in the process of being moved.
	//
	// * An administrator has blocked a client that has an active connection.
	Session *oxcrpc.Session `idl:"name:pcxh;pointer:ref" json:"session"`
	// pulFlags: The flags that describe the server output characteristics. On input, this
	// parameter contains flags that tell the server how to build the rgbOut parameter.
	//
	//	+---------------+------------+----------------------------------------------------------------------------------+
	//	|     FLAG      |            |                                                                                  |
	//	|     NAME      |   VALUE    |                                     MEANING                                      |
	//	|               |            |                                                                                  |
	//	+---------------+------------+----------------------------------------------------------------------------------+
	//	+---------------+------------+----------------------------------------------------------------------------------+
	//	| NoCompression | 0x00000001 | The server MUST NOT compress ROP response payload (rgbOut) or auxiliary payload  |
	//	|               |            | (rgbAuxOut). For details about server behavior when this flag is absent, see     |
	//	|               |            | section 3.1.4.2.1.1.                                                             |
	//	+---------------+------------+----------------------------------------------------------------------------------+
	//	| NoXorMagic    | 0x00000002 | The server MUST NOT obfuscate the ROP response payload (rgbOut) or auxiliary     |
	//	|               |            | payload (rgbAuxOut). For details about server behavior when this flag is absent, |
	//	|               |            | see section 3.1.4.2.1.1.                                                         |
	//	+---------------+------------+----------------------------------------------------------------------------------+
	//	| Chain         | 0x00000004 | The client allows chaining of ROP response payloads.                             |
	//	+---------------+------------+----------------------------------------------------------------------------------+
	//
	// For details about how to use these flags, see section 3.1.4.2.1.1.
	//
	// On output, the server SHOULD<17> set this parameter to 0x00000000. The output flags
	// not in the table are reserved for future use.
	Flags uint32 `idl:"name:pulFlags" json:"flags"`
	// rgbOut: The ROP response payload. The size of the payload is specified in the pcbOut
	// parameter. Like the ROP request payload, the ROP response payload is also prefixed
	// by a RPC_HEADER_EXT header. For details about how to format the ROP response payload,
	// see section 3.1.4.2.1. The size of the ROP response payload plus the RPC_HEADER_EXT
	// header is returned in the pcbOut parameter.
	Out []byte `idl:"name:rgbOut;size_is:(pcbOut);length_is:(pcbOut)" json:"out"`
	// pcbOut: The maximum size of the rgbOut parameter. On input, this parameter contains
	// the maximum size of the rgbOut parameter. If the value in the pcbOut parameter on
	// input is less than 0x00000008, the server SHOULD<20> fail with error code ecRpcFailed
	// (0x80040115). If the value in the pcbOut parameter on input is larger than 0x00040000,
	// the server MUST fail with the RPC status code of RPC_X_BAD_STUB_DATA (0x000006F7).
	// If the server indicates it supports a larger ROP response payload through the ULTRA_LARGE_PACKED_DOWNLOAD_BUFFERS
	// flag being present in the Flags field of the AUX_SERVER_CAPABILITIES (section 2.2.2.2.19)
	// auxiliary block returned in rgbAuxOut field of the EcDoConnectEx method (section
	// 3.1.4.1), then the server MUST fail only if pcbOut is larger than 0x00100000.
	//
	// On output, this parameter contains the size of the ROP response payload, including
	// the size of the RPC_HEADER_EXT header in the rgbOut parameter. The server returns
	// 0x00000000 on failure because there is no ROP response payload. The client ignores
	// any data returned on failure.
	OutLength uint32 `idl:"name:pcbOut" json:"out_length"`
	// rgbAuxOut: The auxiliary payload buffer. On output, the server MAY<23> return auxiliary
	// payload data to the client. The server MUST include a RPC_HEADER_EXT header before
	// the auxiliary payload data.
	AuxOut []byte `idl:"name:rgbAuxOut;size_is:(pcbAuxOut);length_is:(pcbAuxOut)" json:"aux_out"`
	// pcbAuxOut: The maximum length of the auxiliary payload buffer. On input, this parameter
	// contains the maximum length of the rgbAuxOut parameter. If this value on input is
	// larger than 0x00001008, the server MUST fail with the RPC status code RPC_X_BAD_STUB_DATA
	// (0x000006F7).
	//
	// On output, this parameter contains the size of the data to be returned in the rgbAuxOut
	// parameter.
	AuxOutLength uint32 `idl:"name:pcbAuxOut" json:"aux_out_length"`
	// pulTransTime: The time it took to execute this method. On output, the server stores
	// the number of milliseconds the call took to execute. This is the total elapsed time
	// from when the call is dispatched on the server to the point in which the server returns
	// the call. This is diagnostic information the client can use to determine the cause
	// of a slow response time from the server. The client can monitor the total elapsed
	// time across the RPC method call and, using this output parameter, can determine whether
	// time was spent transmitting the request/response on the network or processing it
	// on the server.
	TransTime uint32 `idl:"name:pulTransTime" json:"trans_time"`
	// Return: The EcDoRpcExt2 return value.
	Return int32 `idl:"name:Return" json:"return"`
}

DoRPCExt2Response structure represents the EcDoRpcExt2 operation response

func (*DoRPCExt2Response) MarshalNDR

func (o *DoRPCExt2Response) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*DoRPCExt2Response) UnmarshalNDR

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

type DummyRPCRequest

type DummyRPCRequest struct {
}

DummyRPCRequest structure represents the EcDummyRpc operation request

func (*DummyRPCRequest) MarshalNDR

func (o *DummyRPCRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*DummyRPCRequest) UnmarshalNDR

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

type DummyRPCResponse

type DummyRPCResponse struct {
	// Return: The EcDummyRpc return value.
	Return int32 `idl:"name:Return" json:"return"`
}

DummyRPCResponse structure represents the EcDummyRpc operation response

func (*DummyRPCResponse) MarshalNDR

func (o *DummyRPCResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*DummyRPCResponse) UnmarshalNDR

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

type EmsmdbClient

type EmsmdbClient interface {

	// The EcDoDisconnect method closes a Session Context with the server. The server destroys
	// the Session Context and releases all associated server state, objects, and resources
	// that are associated with the Session Context. This call requires an active session
	// context handle from the EcDoConnectEx method, as specified in section 3.1.4.1.
	//
	// Return Values: If the method succeeds, the return value is 0. If the method fails,
	// the return value is an implementation-specific error code.
	//
	// Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying
	// RPC protocol as specified in [MS-RPCE].
	DoDisconnect(context.Context, *DoDisconnectRequest, ...dcerpc.CallOption) (*DoDisconnectResponse, error)

	// The EcRRegisterPushNotification method registers a callback address with the server
	// for a Session Context. The server MAY<26> support the EcRRegisterPushNotification
	// method.
	//
	// The callback address is used to notify the client of pending events on the server.
	// This call requires an active session context handle from the EcDoConnectEx method,
	// as specified in section 3.1.4.1. The server MUST store the callback address and the
	// opaque context data in the Session Context. To notify the client of pending events,
	// the server sends a packet containing just the opaque context data to the callback
	// address. The callback address specifies which network transport is to be used to
	// send the data packet.
	//
	// For more information about notification handling, see [MS-OXCNOTIF].
	//
	// Return Values: If the method succeeds, the return value is 0. If the method fails,
	// the return value is an implementation-specific error code or one of the protocol-defined
	// error codes listed in the following table.
	//
	//	+-----------------+------------+------------------------------------------------------+
	//	|   ERROR CODE    |            |                                                      |
	//	|      NAME       |   VALUE    |                       MEANING                        |
	//	|                 |            |                                                      |
	//	+-----------------+------------+------------------------------------------------------+
	//	+-----------------+------------+------------------------------------------------------+
	//	| ecInvalidParam  | 0x80070057 | A parameter passed was not valid for the call.       |
	//	+-----------------+------------+------------------------------------------------------+
	//	| ecNotSupported  | 0x80040102 | The callback address is not supported on the server. |
	//	+-----------------+------------+------------------------------------------------------+
	//	| ecTooBig        | 0x80040305 | Opaque context data is too large.                    |
	//	+-----------------+------------+------------------------------------------------------+
	//
	// Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying
	// RPC protocol as specified in [MS-RPCE].
	RegisterPushNotification(context.Context, *RegisterPushNotificationRequest, ...dcerpc.CallOption) (*RegisterPushNotificationResponse, error)

	// The EcDummyRpc method returns a SUCCESS. A client can use it to determine whether
	// it can communicate with the server.
	//
	// Return Values: The function MUST succeed and return 0.
	//
	// Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying
	// RPC protocol as specified in [MS-RPCE].
	DummyRPC(context.Context, *DummyRPCRequest, ...dcerpc.CallOption) (*DummyRPCResponse, error)

	// The EcDoConnectEx method establishes a new Session Context with the server. The Session
	// Context is persisted on the server until the client disconnects by using the EcDoDisconnect
	// method, as specified in section 3.1.4.3. The EcDoConnectEx method returns a session
	// context handle to be used by a client in subsequent calls.
	//
	// Return Values: If the method succeeds, the return value is 0. If the method fails,
	// the return value is an implementation-specific error code or one of the protocol-defined
	// error codes listed in the following table.
	//
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	|      ERROR CODE       |            |                                                                                  |
	//	|         NAME          |   VALUE    |                                     MEANING                                      |
	//	|                       |            |                                                                                  |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecAccessDenied<14>    | 0x80070005 | The authentication context associated with the binding handle does not have      |
	//	|                       |            | enough privilege or the szUserDN parameter is empty.                             |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecNotEncrypted        | 0x00000970 | The server is configured to require encryption and the authentication for        |
	//	|                       |            | the binding handle contained in the hBinding parameter is not set with           |
	//	|                       |            | RPC_C_AUTHN_LEVEL_PKT_PRIVACY. For more information about setting the            |
	//	|                       |            | authentication and authorization, see [MSDN-RpcBindingSetAuthInfoEx]. The client |
	//	|                       |            | attempts the call again with new binding handle that is encrypted.               |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecClientVerDisallowed | 0x000004DF | 1. The server requires encryption, but the client is not encrypted and the       |
	//	|                       |            | client does not support receiving error code ecNotEncrypted being returned by    |
	//	|                       |            | the server. For details about which client versions do not support receiving     |
	//	|                       |            | error code ecNotEncrypted, see section 3.1.4.1.3 and section 3.2.4.1.3. 2. The   |
	//	|                       |            | client version has been blocked by the administrator.                            |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecLoginFailure        | 0x80040111 | Server is unable to log in user to the mailbox or public folder database.        |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecUnknownUser         | 0x000003EB | The server does not recognize the szUserDN parameter as a valid enabled mailbox. |
	//	|                       |            | For more details, see [MS-OXCSTOR] section 3.1.4.1.                              |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecLoginPerm           | 0x000003F2 | The connection is requested for administrative access, but the authentication    |
	//	|                       |            | context associated with the binding handle does not have enough privilege.       |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecVersionMismatch     | 0x80040110 | The client and server versions are not compatible. The client protocol version   |
	//	|                       |            | is earlier than that required by the server.                                     |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecCachedModeRequired  | 0x000004E1 | The server requires the client to be running in cache mode. For details about    |
	//	|                       |            | which client versions understand this error code, see section 3.2.4.1.3.         |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecRpcHttpDisallowed   | 0x000004E0 | The server requires the client to not be connected via RPC over HTTP. For        |
	//	|                       |            | details about which client versions understand this error code, see section      |
	//	|                       |            | 3.1.4.1.3.                                                                       |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecProtocolDisabled    | 0x000007D8 | The server disallows the user to access the server via this protocol interface.  |
	//	|                       |            | This could be done if the user is only capable of accessing their mailbox        |
	//	|                       |            | information through a different means (for example, Webmail, POP, or IMAP).      |
	//	|                       |            | For details about which client versions understand this error code, see section  |
	//	|                       |            | 3.1.4.1.3.                                                                       |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//
	// Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying
	// RPC protocol, as specified in [MS-RPCE].
	DoConnectEx(context.Context, *DoConnectExRequest, ...dcerpc.CallOption) (*DoConnectExResponse, error)

	// The EcDoRpcExt2 method passes generic ROP commands to the server for processing within
	// a Session Context. Each call can contain multiple ROP commands. The server returns
	// the results of each ROP command to the client. This call requires an active session
	// context handle returned from the EcDoConnectEx method.
	//
	// Return Values: If the method succeeds, the return value is 0. If the method fails,
	// the return value is an implementation-specific error code or the protocol-defined
	// error code listed in the following table.
	//
	//	+-----------------+------------+----------------------------------------------------------------------------------+
	//	|   ERROR CODE    |            |                                                                                  |
	//	|      NAME       |   VALUE    |                                     MEANING                                      |
	//	|                 |            |                                                                                  |
	//	+-----------------+------------+----------------------------------------------------------------------------------+
	//	+-----------------+------------+----------------------------------------------------------------------------------+
	//	| ecRpcFormat     | 0x000004B6 | The format of the request was found to be invalid. This is a generic error that  |
	//	|                 |            | means the length was found to be invalid or the content was found to be invalid. |
	//	+-----------------+------------+----------------------------------------------------------------------------------+
	//
	// Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying
	// RPC protocol as specified in [MS-RPCE].
	DoRPCExt2(context.Context, *DoRPCExt2Request, ...dcerpc.CallOption) (*DoRPCExt2Response, error)

	// The EcDoAsyncConnectEx method binds a session context handle returned from the EcDoConnectEx
	// method, as specified in section 3.1.4.1, to a new asynchronous context handle that
	// can be used in calls to the EcDoAsyncWaitEx method in the AsyncEMSMDB interface,
	// as specified in section 3.3.4.1. This call requires that an active session context
	// handle be returned from the EcDoConnectEx method.
	//
	// This method is part of notification handling. For more information about notifications,
	// see [MS-OXCNOTIF].
	//
	// Return Values: If the method succeeds, the return value is 0. If the method fails,
	// the return value is an implementation-specific error code or the protocol-defined
	// error code listed in the following table.
	//
	//	+-----------------+------------+----------------------------------------------------------------------------------+
	//	|   ERROR CODE    |            |                                                                                  |
	//	|      NAME       |   VALUE    |                                     MEANING                                      |
	//	|                 |            |                                                                                  |
	//	+-----------------+------------+----------------------------------------------------------------------------------+
	//	+-----------------+------------+----------------------------------------------------------------------------------+
	//	| ecRejected<25>  | 0x000007EE | Server has asynchronous RPC notifications disabled. Client either polls          |
	//	|                 |            | for notifications or calls the EcRRegisterPushNotifications method (section      |
	//	|                 |            | 3.1.4.5).                                                                        |
	//	+-----------------+------------+----------------------------------------------------------------------------------+
	//
	// Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying
	// RPC protocol as specified in [MS-RPCE].
	DoAsyncConnectEx(context.Context, *DoAsyncConnectExRequest, ...dcerpc.CallOption) (*DoAsyncConnectExResponse, error)

	// AlterContext alters the client context.
	AlterContext(context.Context, ...dcerpc.Option) error
}

emsmdb interface.

func NewEmsmdbClient

func NewEmsmdbClient(ctx context.Context, cc dcerpc.Conn, opts ...dcerpc.Option) (EmsmdbClient, error)

type EmsmdbServer

type EmsmdbServer interface {

	// The EcDoDisconnect method closes a Session Context with the server. The server destroys
	// the Session Context and releases all associated server state, objects, and resources
	// that are associated with the Session Context. This call requires an active session
	// context handle from the EcDoConnectEx method, as specified in section 3.1.4.1.
	//
	// Return Values: If the method succeeds, the return value is 0. If the method fails,
	// the return value is an implementation-specific error code.
	//
	// Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying
	// RPC protocol as specified in [MS-RPCE].
	DoDisconnect(context.Context, *DoDisconnectRequest) (*DoDisconnectResponse, error)

	// The EcRRegisterPushNotification method registers a callback address with the server
	// for a Session Context. The server MAY<26> support the EcRRegisterPushNotification
	// method.
	//
	// The callback address is used to notify the client of pending events on the server.
	// This call requires an active session context handle from the EcDoConnectEx method,
	// as specified in section 3.1.4.1. The server MUST store the callback address and the
	// opaque context data in the Session Context. To notify the client of pending events,
	// the server sends a packet containing just the opaque context data to the callback
	// address. The callback address specifies which network transport is to be used to
	// send the data packet.
	//
	// For more information about notification handling, see [MS-OXCNOTIF].
	//
	// Return Values: If the method succeeds, the return value is 0. If the method fails,
	// the return value is an implementation-specific error code or one of the protocol-defined
	// error codes listed in the following table.
	//
	//	+-----------------+------------+------------------------------------------------------+
	//	|   ERROR CODE    |            |                                                      |
	//	|      NAME       |   VALUE    |                       MEANING                        |
	//	|                 |            |                                                      |
	//	+-----------------+------------+------------------------------------------------------+
	//	+-----------------+------------+------------------------------------------------------+
	//	| ecInvalidParam  | 0x80070057 | A parameter passed was not valid for the call.       |
	//	+-----------------+------------+------------------------------------------------------+
	//	| ecNotSupported  | 0x80040102 | The callback address is not supported on the server. |
	//	+-----------------+------------+------------------------------------------------------+
	//	| ecTooBig        | 0x80040305 | Opaque context data is too large.                    |
	//	+-----------------+------------+------------------------------------------------------+
	//
	// Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying
	// RPC protocol as specified in [MS-RPCE].
	RegisterPushNotification(context.Context, *RegisterPushNotificationRequest) (*RegisterPushNotificationResponse, error)

	// The EcDummyRpc method returns a SUCCESS. A client can use it to determine whether
	// it can communicate with the server.
	//
	// Return Values: The function MUST succeed and return 0.
	//
	// Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying
	// RPC protocol as specified in [MS-RPCE].
	DummyRPC(context.Context, *DummyRPCRequest) (*DummyRPCResponse, error)

	// The EcDoConnectEx method establishes a new Session Context with the server. The Session
	// Context is persisted on the server until the client disconnects by using the EcDoDisconnect
	// method, as specified in section 3.1.4.3. The EcDoConnectEx method returns a session
	// context handle to be used by a client in subsequent calls.
	//
	// Return Values: If the method succeeds, the return value is 0. If the method fails,
	// the return value is an implementation-specific error code or one of the protocol-defined
	// error codes listed in the following table.
	//
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	|      ERROR CODE       |            |                                                                                  |
	//	|         NAME          |   VALUE    |                                     MEANING                                      |
	//	|                       |            |                                                                                  |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecAccessDenied<14>    | 0x80070005 | The authentication context associated with the binding handle does not have      |
	//	|                       |            | enough privilege or the szUserDN parameter is empty.                             |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecNotEncrypted        | 0x00000970 | The server is configured to require encryption and the authentication for        |
	//	|                       |            | the binding handle contained in the hBinding parameter is not set with           |
	//	|                       |            | RPC_C_AUTHN_LEVEL_PKT_PRIVACY. For more information about setting the            |
	//	|                       |            | authentication and authorization, see [MSDN-RpcBindingSetAuthInfoEx]. The client |
	//	|                       |            | attempts the call again with new binding handle that is encrypted.               |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecClientVerDisallowed | 0x000004DF | 1. The server requires encryption, but the client is not encrypted and the       |
	//	|                       |            | client does not support receiving error code ecNotEncrypted being returned by    |
	//	|                       |            | the server. For details about which client versions do not support receiving     |
	//	|                       |            | error code ecNotEncrypted, see section 3.1.4.1.3 and section 3.2.4.1.3. 2. The   |
	//	|                       |            | client version has been blocked by the administrator.                            |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecLoginFailure        | 0x80040111 | Server is unable to log in user to the mailbox or public folder database.        |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecUnknownUser         | 0x000003EB | The server does not recognize the szUserDN parameter as a valid enabled mailbox. |
	//	|                       |            | For more details, see [MS-OXCSTOR] section 3.1.4.1.                              |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecLoginPerm           | 0x000003F2 | The connection is requested for administrative access, but the authentication    |
	//	|                       |            | context associated with the binding handle does not have enough privilege.       |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecVersionMismatch     | 0x80040110 | The client and server versions are not compatible. The client protocol version   |
	//	|                       |            | is earlier than that required by the server.                                     |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecCachedModeRequired  | 0x000004E1 | The server requires the client to be running in cache mode. For details about    |
	//	|                       |            | which client versions understand this error code, see section 3.2.4.1.3.         |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecRpcHttpDisallowed   | 0x000004E0 | The server requires the client to not be connected via RPC over HTTP. For        |
	//	|                       |            | details about which client versions understand this error code, see section      |
	//	|                       |            | 3.1.4.1.3.                                                                       |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//	| ecProtocolDisabled    | 0x000007D8 | The server disallows the user to access the server via this protocol interface.  |
	//	|                       |            | This could be done if the user is only capable of accessing their mailbox        |
	//	|                       |            | information through a different means (for example, Webmail, POP, or IMAP).      |
	//	|                       |            | For details about which client versions understand this error code, see section  |
	//	|                       |            | 3.1.4.1.3.                                                                       |
	//	+-----------------------+------------+----------------------------------------------------------------------------------+
	//
	// Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying
	// RPC protocol, as specified in [MS-RPCE].
	DoConnectEx(context.Context, *DoConnectExRequest) (*DoConnectExResponse, error)

	// The EcDoRpcExt2 method passes generic ROP commands to the server for processing within
	// a Session Context. Each call can contain multiple ROP commands. The server returns
	// the results of each ROP command to the client. This call requires an active session
	// context handle returned from the EcDoConnectEx method.
	//
	// Return Values: If the method succeeds, the return value is 0. If the method fails,
	// the return value is an implementation-specific error code or the protocol-defined
	// error code listed in the following table.
	//
	//	+-----------------+------------+----------------------------------------------------------------------------------+
	//	|   ERROR CODE    |            |                                                                                  |
	//	|      NAME       |   VALUE    |                                     MEANING                                      |
	//	|                 |            |                                                                                  |
	//	+-----------------+------------+----------------------------------------------------------------------------------+
	//	+-----------------+------------+----------------------------------------------------------------------------------+
	//	| ecRpcFormat     | 0x000004B6 | The format of the request was found to be invalid. This is a generic error that  |
	//	|                 |            | means the length was found to be invalid or the content was found to be invalid. |
	//	+-----------------+------------+----------------------------------------------------------------------------------+
	//
	// Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying
	// RPC protocol as specified in [MS-RPCE].
	DoRPCExt2(context.Context, *DoRPCExt2Request) (*DoRPCExt2Response, error)

	// The EcDoAsyncConnectEx method binds a session context handle returned from the EcDoConnectEx
	// method, as specified in section 3.1.4.1, to a new asynchronous context handle that
	// can be used in calls to the EcDoAsyncWaitEx method in the AsyncEMSMDB interface,
	// as specified in section 3.3.4.1. This call requires that an active session context
	// handle be returned from the EcDoConnectEx method.
	//
	// This method is part of notification handling. For more information about notifications,
	// see [MS-OXCNOTIF].
	//
	// Return Values: If the method succeeds, the return value is 0. If the method fails,
	// the return value is an implementation-specific error code or the protocol-defined
	// error code listed in the following table.
	//
	//	+-----------------+------------+----------------------------------------------------------------------------------+
	//	|   ERROR CODE    |            |                                                                                  |
	//	|      NAME       |   VALUE    |                                     MEANING                                      |
	//	|                 |            |                                                                                  |
	//	+-----------------+------------+----------------------------------------------------------------------------------+
	//	+-----------------+------------+----------------------------------------------------------------------------------+
	//	| ecRejected<25>  | 0x000007EE | Server has asynchronous RPC notifications disabled. Client either polls          |
	//	|                 |            | for notifications or calls the EcRRegisterPushNotifications method (section      |
	//	|                 |            | 3.1.4.5).                                                                        |
	//	+-----------------+------------+----------------------------------------------------------------------------------+
	//
	// Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying
	// RPC protocol as specified in [MS-RPCE].
	DoAsyncConnectEx(context.Context, *DoAsyncConnectExRequest) (*DoAsyncConnectExResponse, error)
}

emsmdb server interface.

type RegisterPushNotificationRequest

type RegisterPushNotificationRequest struct {
	// pcxh: A session context handle. On input, the client MUST pass a valid session context
	// handle that was created by calling the EcDoConnectEx method. The server uses the
	// session context handle to identify the Session Context to use for this call. On output,
	// the server MUST return the same session context handle on success.
	//
	// The server can destroy the session context handle by returning a zero for the pcxh
	// parameter. Reasons for destroying the session context handle are implementation-dependent;
	// following are examples of why the server might destroy the session context handle:
	//
	// * The session context handle that was passed in is not valid.
	//
	// * An attempt was made to access a mailbox ( c5869b4a-c0d3-4ceb-80f4-c47a250ddf3d#gt_d3ad0e15-adc9-4174-bacf-d929b57278b3
	// ) that is in the process of being moved.
	Session *oxcrpc.Session `idl:"name:pcxh;pointer:ref" json:"session"`
	// iRpc: The server MUST ignore this value. The client MUST pass a value of 0x00000000.
	RPC uint32 `idl:"name:iRpc" json:"rpc"`
	// rgbContext: Opaque client-generated context data that is sent back to the client
	// at the callback address, passed in the rgbCallbackAddress parameter, when the server
	// notifies the client of pending event information. The server MUST save this data
	// within the Session Context and use it when sending a notification to the client.
	Context []byte `idl:"name:rgbContext;size_is:(cbContext)" json:"context"`
	// cbContext: The size of the opaque client context data that is passed in the rgbContext
	// parameter. If the value of this parameter is larger than 0x00000010, the server MUST
	// fail this call with error code ecTooBig.
	ContextLength uint16 `idl:"name:cbContext" json:"context_length"`
	// grbitAdviseBits: This parameter MUST be set to 0xFFFFFFFF.
	AdviseBits uint32 `idl:"name:grbitAdviseBits" json:"advise_bits"`
	// rgbCallbackAddress: The callback address for the server to use to notify the client
	// of a pending event. The size of this data is in the cbCallbackAddress parameter.
	//
	// The data contained in this parameter follows the format of a sockaddr structure.
	// For information about the sockaddr structure, see [MSDN-SOCKADDR].
	//
	// The server supports the address families AF_INET and AF_INET6 for a callback address
	// that corresponds to the protocol sequence types that are specified in section 2.1.
	//
	// If an address family is requested that is not supported, the server MUST return error
	// code ecInvalidParam. If the address family is supported but the communications stack
	// of the server does not support the address type, the server MUST return error code
	// ecNotSupported.
	CallbackAddress []byte `idl:"name:rgbCallbackAddress;size_is:(cbCallbackAddress)" json:"callback_address"`
	// cbCallbackAddress: The length of the callback address in the rgbCallbackAddress parameter.
	// The size of this parameter depends on the address family being used. If this size
	// does not correspond to the size of the sockaddr structure based on address family,
	// the server MUST return error code ecInvalidParam.
	CallbackAddressLength uint16 `idl:"name:cbCallbackAddress" json:"callback_address_length"`
}

RegisterPushNotificationRequest structure represents the EcRRegisterPushNotification operation request

func (*RegisterPushNotificationRequest) MarshalNDR

func (*RegisterPushNotificationRequest) UnmarshalNDR

type RegisterPushNotificationResponse

type RegisterPushNotificationResponse struct {
	// pcxh: A session context handle. On input, the client MUST pass a valid session context
	// handle that was created by calling the EcDoConnectEx method. The server uses the
	// session context handle to identify the Session Context to use for this call. On output,
	// the server MUST return the same session context handle on success.
	//
	// The server can destroy the session context handle by returning a zero for the pcxh
	// parameter. Reasons for destroying the session context handle are implementation-dependent;
	// following are examples of why the server might destroy the session context handle:
	//
	// * The session context handle that was passed in is not valid.
	//
	// * An attempt was made to access a mailbox ( c5869b4a-c0d3-4ceb-80f4-c47a250ddf3d#gt_d3ad0e15-adc9-4174-bacf-d929b57278b3
	// ) that is in the process of being moved.
	Session *oxcrpc.Session `idl:"name:pcxh;pointer:ref" json:"session"`
	// hNotification: A handle to the notification callback. If the call completes successfully,
	// the hNotification parameter contains a handle to the notification callback on the
	// server.
	Notification uint32 `idl:"name:hNotification" json:"notification"`
	// Return: The EcRRegisterPushNotification return value.
	Return int32 `idl:"name:Return" json:"return"`
}

RegisterPushNotificationResponse structure represents the EcRRegisterPushNotification operation response

func (*RegisterPushNotificationResponse) MarshalNDR

func (*RegisterPushNotificationResponse) UnmarshalNDR

Jump to

Keyboard shortcuts

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