dcom

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Dec 13, 2024 License: MIT Imports: 12 Imported by: 0

Documentation ¶

Overview ¶

The dcom package implements the DCOM client protocol.

Introduction ¶

The Distributed Component Object Model (DCOM) Remote Protocol is a protocol for exposing application objects by way of remote procedure calls (RPCs). The protocol consists of a set of extensions layered on Microsoft Remote Procedure Call Protocol Extensions as specified in [MS-RPCE].

Overview ¶

The Distributed Component Object Model (DCOM) Remote Protocol extends the Component Object Model (COM) over a network by providing facilities for creating and activating objects, and for managing object references, object lifetimes, and object interface queries. The DCOM Remote Protocol is built on top of Remote Procedure Call Protocol Extensions, as specified in [MS-RPCE], and relies on its authentication, authorization, and message integrity capabilities. The DCOM Remote Protocol is also referred to as Object RPC or ORPC. The following diagram shows the layering of the protocol stack.

Index ¶

Constants ¶

View Source
const MaxActpropLimit = 0x0000000A

MaxActpropLimit represents the MAX_ACTPROP_LIMIT RPC constant

View Source
const MinActpropLimit = 0x00000001

MinActpropLimit represents the MIN_ACTPROP_LIMIT RPC constant

Variables ¶

View Source
var (
	// import guard
	GoPackage = "dcom"
)

Functions ¶

func IsSuperclass ¶

func IsSuperclass(opts any) bool

IsSuperclass option is an alias of the dcerpc.HasNoBind function.

func Superclass ¶

func Superclass(cc dcerpc.Conn) dcerpc.Option

Superclass option is an alias of the dcerpc.WithNoBind option.

func WithIPID ¶

func WithIPID(ipid *IPID) dcerpc.ObjectUUIDOption

WithIPID option returns the ObjectUUIDOption.

Types ¶

type ActivationContextInfoData ¶

type ActivationContextInfoData struct {
	// clientOK:  This MUST be set to FALSE (0x00000000) and MUST be ignored on receipt.
	ClientOK int32 `idl:"name:clientOK" json:"client_ok"`

	// pIFDClientCtx:  This MUST contain an OBJREF specifying a marshaled client context
	// as specified in section 2.2.20. The server MUST return RPC_E_INVALID_OBJREF (as specified
	// in [MS-ERREF] section 2.1) if the OBJREF is NULL or invalid.
	IfdClientContext *InterfacePointer `idl:"name:pIFDClientCtx" json:"ifd_client_context"`
	// pIFDPrototypeCtx:  If an application or a higher-layer protocol instructs the client
	// to send prototype context properties, this MUST contain an OBJREF specifying a marshaled
	// prototype context as specified in section 2.2.20. Otherwise, this MUST be set to
	// NULL.
	IfdPrototypeContext *InterfacePointer `idl:"name:pIFDPrototypeCtx" json:"ifd_prototype_context"`
	// contains filtered or unexported fields
}

ActivationContextInfoData structure represents ActivationContextInfoData RPC structure.

The ActivationContextInfoData structure passes a client context and optionally a prototype context to the server as part of an activation request.

CLSID_ActivationContextInfo (see section 1.9) is used to identify this property in the CustomHeader.pclsid array.

func (*ActivationContextInfoData) MarshalNDR ¶

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

func (*ActivationContextInfoData) UnmarshalNDR ¶

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

type CID ¶

type CID dtyp.GUID

CID structure represents CID RPC structure.

func (*CID) GUID ¶

func (o *CID) GUID() *dtyp.GUID

func (*CID) MarshalNDR ¶

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

func (*CID) UnmarshalNDR ¶

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

type COMServerInfo ¶

type COMServerInfo struct {

	// pwszName:  This SHOULD be set to NULL and MUST be ignored by servers.<36>
	Name string `idl:"name:pwszName;string" json:"name"`
	// contains filtered or unexported fields
}

COMServerInfo structure represents COSERVERINFO RPC structure.

The COSERVERINFO structure SHOULD NOT be sent and MUST be ignored on receipt.

func (*COMServerInfo) MarshalNDR ¶

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

func (*COMServerInfo) UnmarshalNDR ¶

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

type COMVersion ¶

type COMVersion struct {
	// MajorVersion:  This MUST contain the major version of the DCOM Remote Protocol.
	MajorVersion uint16 `idl:"name:MajorVersion" json:"major_version"`
	// MinorVersion:  This MUST contain the minor version of the DCOM Remote Protocol.
	//
	// The following table specifies the capabilities introduced in each DCOM version.<4>
	//
	//	+---------+----------------------------------------------------------------------------------+
	//	|         |                                                                                  |
	//	| VERSION |                                      CHANGE                                      |
	//	|         |                                                                                  |
	//	+---------+----------------------------------------------------------------------------------+
	//	+---------+----------------------------------------------------------------------------------+
	//	|     5.1 | Initial DCOM Remote Protocol release.                                            |
	//	+---------+----------------------------------------------------------------------------------+
	//	|     5.2 | Added ResolveOxid2 to the IObjectExporter interface; see section 3.1.2.5.1.5.    |
	//	+---------+----------------------------------------------------------------------------------+
	//	|     5.3 | MUST NOT be used.                                                                |
	//	+---------+----------------------------------------------------------------------------------+
	//	|     5.4 | Update in the marshaling of arrays of interface pointers. Update in the          |
	//	|         | marshaling of conformant embedded structures.                                    |
	//	+---------+----------------------------------------------------------------------------------+
	//	|     5.5 | Unused. This is to avoid having a DCOM version with matching major and minor     |
	//	|         | version numbers.                                                                 |
	//	+---------+----------------------------------------------------------------------------------+
	//	|     5.6 | Added OBJREF_HANDLER and OBJREF_EXTENDED to the OBJREF type. Added               |
	//	|         | IRemoteSCMActivator interface methods (see section 3.1.2.5.2.2). Added           |
	//	|         | IObjectExporter::ServerAlive2 (Opnum 5) method to IObjectExporter interface.     |
	//	|         | Added IRemUnknown2 interface.                                                    |
	//	+---------+----------------------------------------------------------------------------------+
	//	|     5.7 | No DCOM changes from 5.6.<5>                                                     |
	//	+---------+----------------------------------------------------------------------------------+
	MinorVersion uint16 `idl:"name:MinorVersion" json:"minor_version"`
}

COMVersion structure represents COMVERSION RPC structure.

The COMVERSION structure is used to specify the major and minor version of either the client or the server DCOM Remote Protocol implementation.

func (*COMVersion) MarshalNDR ¶

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

func (*COMVersion) UnmarshalNDR ¶

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

type ClassID ¶

type ClassID dtyp.GUID

ClassID structure represents CLSID RPC structure.

func (*ClassID) GUID ¶

func (o *ClassID) GUID() *dtyp.GUID

func (*ClassID) MarshalJSON ¶

func (o *ClassID) MarshalJSON() ([]byte, error)

func (*ClassID) MarshalNDR ¶

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

func (*ClassID) String ¶

func (o *ClassID) String() string

func (*ClassID) UnmarshalNDR ¶

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

type CustomHeader ¶

type CustomHeader struct {
	// totalSize:   This MUST be the total size (in bytes) from the beginning of the CustomHeader
	// to the end of the last entry in the subsequent Property array of the activation properties
	// BLOB.
	TotalSize uint32 `idl:"name:totalSize" json:"total_size"`
	// headerSize:  This MUST be the total size (in bytes) of the CustomHeader as marshaled
	// by the NDR Type Serialization 1 engine (as specified in [MS-RPCE] section 2.2.6).
	HeaderSize uint32 `idl:"name:headerSize" json:"header_size"`

	// destCtx:  This MUST contain an implementation-specific value that SHOULD be ignored
	// on receipt.<22>
	DestinationContext uint32 `idl:"name:destCtx" json:"destination_context"`
	// cIfs:  This MUST be the total number of entries in the subsequent Property array
	// of the activation properties BLOB. The value MUST be between MIN_ACTPROP_LIMIT and
	// MAX_ACTPROP_LIMIT (see section 2.2.28.1).
	InterfacesCount uint32 `idl:"name:cIfs" json:"interfaces_count"`
	// classInfoClsid:  This MUST be set to GUID_NULL.
	ClassInfoClassID *ClassID `idl:"name:classInfoClsid" json:"class_info_class_id"`
	// pclsid:  This MUST specify an array of cIfs CLSIDs; the Nth entry identifies the
	// Nth entry in the Property array of the activation properties BLOB. Each CLSID is
	// used to uniquely identify an activation property. The valid CLSID values are defined
	// in section 1.9.
	ClassIDs []*ClassID `idl:"name:pclsid;size_is:(cIfs)" json:"class_ids"`
	// pSizes:  This MUST specify an array of cIfs DWORDs, each containing the size (in
	// bytes) of the corresponding property following the CustomHeader in the buffer.
	Sizes []uint32 `idl:"name:pSizes;size_is:(cIfs)" json:"sizes"`
	// contains filtered or unexported fields
}

CustomHeader structure represents CustomHeader RPC structure.

The CustomHeader structure is used to identify the format and ordering of the properties in the activation properties BLOB.

func (*CustomHeader) MarshalNDR ¶

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

func (*CustomHeader) UnmarshalNDR ¶

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

type CustomRemoteReplySCMInfo ¶

type CustomRemoteReplySCMInfo struct {
	// Oxid:   This MUST contain the OXID identifier for the object exporter.
	OXID uint64 `idl:"name:Oxid" json:"oxid"`
	// pdsaOxidBindings:   This MUST specify the string and security bindings supported
	// by the object exporter and MUST NOT be NULL. The returned string bindings SHOULD
	// contain endpoints.
	OXIDBindings *DualStringArray `idl:"name:pdsaOxidBindings" json:"oxid_bindings"`
	// ipidRemUnknown:   This MUST specify the IPID of the object exporter's Remote Unknown
	// object.
	IPIDRemoteUnknown *IPID `idl:"name:ipidRemUnknown" json:"ipid_remote_unknown"`
	// authnHint:  This SHOULD contain an RPC authentication level (see [MS-RPCE] section
	// 2.2.1.1.8) that denotes the minimum authentication level supported by the object
	// exporter. This field MAY be ignored by the client.<37>
	AuthnHint uint32 `idl:"name:authnHint" json:"authn_hint"`
	// serverVersion:  This MUST contain the COMVERSION of the server.
	ServerVersion *COMVersion `idl:"name:serverVersion" json:"server_version"`
}

CustomRemoteReplySCMInfo structure represents customREMOTE_REPLY_SCM_INFO RPC structure.

The customREMOTE_REPLY_SCM_INFO structure is used to return information about the object exporter, specifically the OXID, RPC bindings, COMVERSION, and IPID of the IRemUnknown interface and the authentication hint of the object exporter.

func (*CustomRemoteReplySCMInfo) MarshalNDR ¶

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

func (*CustomRemoteReplySCMInfo) UnmarshalNDR ¶

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

type CustomRemoteRequestSCMInfo ¶

type CustomRemoteRequestSCMInfo struct {
	// ClientImpLevel:   This MUST contain an implementation-specific value that MUST be
	// ignored on receipt.<33>
	ClientImpLevel uint32 `idl:"name:ClientImpLevel" json:"client_imp_level"`
	// cRequestedProtseqs:   This MUST contain the number of elements in the pRequestedProtseqs
	// array and SHOULD be at least 1.
	RequestedProtocolSequencesCount uint16 `idl:"name:cRequestedProtseqs" json:"requested_protocol_sequences_count"`
	// pRequestedProtseqs:  This MUST contain an array of RPC protocol sequence identifiers
	// supported by the client.
	RequestedProtocolSequences []uint16 `idl:"name:pRequestedProtseqs;size_is:(cRequestedProtseqs)" json:"requested_protocol_sequences"`
}

CustomRemoteRequestSCMInfo structure represents customREMOTE_REQUEST_SCM_INFO RPC structure.

The customREMOTE_REQUEST_SCM_INFO structure specifies the protocol sequence identifiers supported by the client.

func (*CustomRemoteRequestSCMInfo) MarshalNDR ¶

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

func (*CustomRemoteRequestSCMInfo) UnmarshalNDR ¶

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

type DataElement ¶

type DataElement struct {
	// dataID (16 bytes):  This MUST specify a context identifier for the marshaled context
	// (1). This MUST NOT be set to GUID_NULL.
	DataID *dtyp.GUID `idl:"name:dataID" json:"data_id"`
	// cbSize (4 bytes):  The unsigned number of bytes present in the Data field, excluding
	// any padding bytes at the end of the Data field that were added to round the array
	// size to an integral multiple of eight bytes. This MUST NOT be 0.
	Length uint32 `idl:"name:cbSize" json:"length"`
	// cbRounded (4 bytes):  The unsigned size, in bytes, of the Data field. The cbRounded
	// value MUST equal the cbSize value, rounded up to a multiple of eight.
	RoundedLength uint32 `idl:"name:cbRounded" json:"rounded_length"`
	// Data (variable):  An array of cbRounded bytes that MUST contain a marshaled envoy
	// context; see section 2.2.20.
	Data []byte `idl:"name:Data;size_is:(((cbSize+7)&(^uint32(7))))" json:"data"`
}

DataElement structure represents DATAELEMENT RPC structure.

The DATAELEMENT structure is used to identify and marshal an envoy context as part of a larger OBJREF_EXTENDED structure.

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 3 | 1 |
|   |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| dataID (16 bytes)                                                                                                             |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| cbSize                                                                                                                        |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| cbRounded                                                                                                                     |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| Data (variable)                                                                                                               |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

func (*DataElement) MarshalNDR ¶

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

func (*DataElement) UnmarshalNDR ¶

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

type DualStringArray ¶

type DualStringArray struct {
	// wNumEntries (2 bytes):  The (unsigned) number of unsigned shorts (that is, 2-octet
	// units) from the first entry in the StringBinding array to the end of the buffer.
	//
	// wNumEntries:   This MUST be set to the number of unsigned shorts in the aStringArray
	// field.
	EntriesLength uint16 `idl:"name:wNumEntries" json:"entries_length"`
	// wSecurityOffset (2 bytes):  The (unsigned) number of unsigned shorts from the first
	// entry in the StringBinding array to the first entry in the SecBinding array.
	//
	// wSecurityOffset:   This MUST be set to the number of unsigned shorts from the beginning
	// of the aStringArray array to the beginning of the first security binding within the
	// array. For details, see section 2.2.19.1.
	SecurityOffset uint16 `idl:"name:wSecurityOffset" json:"security_offset"`
	// aStringArray:  This MUST be an array of wNumEntries unsigned shorts. This field MUST
	// be interpreted to contain a sequence of STRINGBINDING entries followed by a sequence
	// of SECURITYBINDING entries, in the same syntax as defined in section 2.2.19.1.
	StringArray []uint16 `idl:"name:aStringArray;size_is:(wNumEntries)" json:"string_array"`
}

DualStringArray structure represents DUALSTRINGARRAY RPC structure.

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 3 | 1 |
|   |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| wNumEntries                                                   | wSecurityOffset                                               |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| StringBinding (variable)                                                                                                      |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| nullterm1                                                     | SecBinding (variable)                                         |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| nullterm2                                                     |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

In certain cases in the DCOM Remote Protocol, a DUALSTRINGARRAY is passed or returned as a parameter in an RPC call. For example, see section 3.1.2.5.2.3.1. In all such cases, the IDL definition that the DCOM Remote Protocol uses is as follows.

func (*DualStringArray) Endpoints ¶

func (o *DualStringArray) Endpoints() []dcerpc.Option

Endpoints function returns the string bindings as DCE/RPC client options.

func (*DualStringArray) EndpointsByProtocol ¶ added in v1.0.1

func (o *DualStringArray) EndpointsByProtocol(protocol string) []dcerpc.Option

EndpointsByProtocol function returns the string bindings as DCE/RPC client options filtered by human-readable protocol sequence name.

func (*DualStringArray) EndpointsByTowerID ¶ added in v1.0.1

func (o *DualStringArray) EndpointsByTowerID(tower int) []dcerpc.Option

EndpointsByTowerID function returns the string bindings as DCE/RPC client options filtered by the tower identifier.

func (*DualStringArray) GetProtocolSequences ¶ added in v1.0.1

func (o *DualStringArray) GetProtocolSequences() []uint16

GetProtocolSequences function returns the set of protocol sequences allowed for the binding.

func (*DualStringArray) GetSecurityBindings ¶

func (o *DualStringArray) GetSecurityBindings() []*SecurityBinding

func (*DualStringArray) GetStringBindings ¶

func (o *DualStringArray) GetStringBindings() []*StringBinding

GetStringBindings function returns the string bindings encoded in the dual string array structure.

func (*DualStringArray) MarshalJSON ¶

func (o *DualStringArray) MarshalJSON() ([]byte, error)

func (*DualStringArray) MarshalNDR ¶

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

func (*DualStringArray) NDRSizeInfo ¶

func (o *DualStringArray) NDRSizeInfo() []uint64

func (*DualStringArray) UnmarshalNDR ¶

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

type ErrorObjectData ¶

type ErrorObjectData struct {
	// dwVersion (4 bytes): This MUST be set to 0x00000000.
	Version uint32 `idl:"name:dwVersion" json:"version"`
	// dwHelpContext (4 bytes): An implementation-specific value that SHOULD be ignored
	// on receipt.<16>
	HelpContext uint32 `idl:"name:dwHelpContext" json:"help_context"`
	// iid (16 bytes): An IID that MUST be the IID of the interface returning the error.
	IID         *IID   `idl:"name:iid" json:"iid"`
	Source      string `idl:"name:pszSource;string;pointer:unique" json:"source"`
	Description string `idl:"name:pszDescription;string;pointer:unique" json:"description"`
	HelpFile    string `idl:"name:pszHelpFile;string;pointer:unique" json:"help_file"`
}

ErrorObjectData structure represents ErrorObjectData RPC structure.

This section defines the format of an OBJREF_CUSTOM that, depending on the use of the DCOM Remote Protocol by an application or a higher-layer protocol, MAY be passed as an error information ORPC extension (see section 2.2.21.1). CLSID_ErrorObject (see section 1.9) is the unmarshaler CLSID for this OBJREF_CUSTOM. The format of the pObjectData field of the OBJREF_CUSTOM for this CLSID is as follows.

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 3 | 1 |
|   |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| dwVersion                                                                                                                     |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| dwHelpContext                                                                                                                 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| iid (16 bytes)                                                                                                                |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| dwSourceSignature                                                                                                             |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| Source (variable)                                                                                                             |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| dwDescriptionSignature                                                                                                        |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| Description (variable)                                                                                                        |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| dwHelpFileSignature                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| HelpFile (variable)                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

func (*ErrorObjectData) MarshalNDR ¶

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

func (*ErrorObjectData) UnmarshalNDR ¶

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

type IID ¶

type IID dtyp.GUID

IID structure represents IID RPC structure.

func (*IID) GUID ¶

func (o *IID) GUID() *dtyp.GUID

func (*IID) MarshalJSON ¶

func (o *IID) MarshalJSON() ([]byte, error)

func (*IID) MarshalNDR ¶

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

func (*IID) String ¶

func (o *IID) String() string

func (*IID) UnmarshalNDR ¶

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

type IPID ¶

type IPID dtyp.GUID

IPID structure represents IPID RPC structure.

func HasIPID ¶

func HasIPID(opts any) (*IPID, bool)

HasIPID function returns the ObjectUUID casted to IPID.

func (*IPID) GUID ¶

func (o *IPID) GUID() *dtyp.GUID

func (*IPID) MarshalJSON ¶

func (o *IPID) MarshalJSON() ([]byte, error)

func (*IPID) MarshalNDR ¶

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

func (*IPID) UUID ¶

func (o *IPID) UUID() *uuid.UUID

func (*IPID) UnmarshalNDR ¶

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

type InstanceInfoData ¶

type InstanceInfoData struct {
	// fileName:   This MAY contain a string to be used to initialize the object.<30>
	FileName string `idl:"name:fileName;string" json:"file_name"`
	// mode:   This MUST contain an implementation-specific value and MAY be ignored on
	// receipt.<31>
	Mode uint32 `idl:"name:mode" json:"mode"`
	// ifdROT:   The pointer MUST be set to NULL and MUST be ignored on receipt.
	ROT *InterfacePointer `idl:"name:ifdROT" json:"rot"`
	// ifdStg:  This MAY contain a marshaled OBJREF to be used to initialize the object.<32>
	Storage *InterfacePointer `idl:"name:ifdStg" json:"storage"`
}

InstanceInfoData structure represents InstanceInfoData RPC structure.

The InstanceInfoData structure contains data related to persistent activations; that is, object activations in which the newly created object is immediately initialized with state from a previously persisted instance of the object. For more information, see [MSDN-COM], [MSDN-SS], and [MSDN-IPersistFile].

CLSID_InstanceInfo (see section 1.9) is used to identify this property in the CustomHeader.pclsid array.

func (*InstanceInfoData) MarshalNDR ¶

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

func (*InstanceInfoData) UnmarshalNDR ¶

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

type InstantiationInfoData ¶

type InstantiationInfoData struct {
	// classId:  The CLSID of the COM object class that the client activates.
	ClassID *ClassID `idl:"name:classId" json:"class_id"`
	// classCtx:  An implementation-specific value that SHOULD be ignored on receipt.<23>
	ClassContext uint32 `idl:"name:classCtx" json:"class_context"`
	// actvflags:  0x00000000 or any combination of the following bit values.
	//
	//	+---------------------------------------------+----------------------------------------------------------------------------------+
	//	|                                             |                                                                                  |
	//	|                    VALUE                    |                                     MEANING                                      |
	//	|                                             |                                                                                  |
	//	+---------------------------------------------+----------------------------------------------------------------------------------+
	//	+---------------------------------------------+----------------------------------------------------------------------------------+
	//	| ACTVFLAGS_DISABLE_AAA 0x00000002            | The object resolver is requested to not execute the object exporter under the    |
	//	|                                             | client's identity.                                                               |
	//	+---------------------------------------------+----------------------------------------------------------------------------------+
	//	| ACTVFLAGS_ACTIVATE_32_BIT_SERVER 0x00000004 | The object resolver is requested to execute the object exporter in the 32-bit    |
	//	|                                             | address space.                                                                   |
	//	+---------------------------------------------+----------------------------------------------------------------------------------+
	//	| ACTVFLAGS_ACTIVATE_64_BIT_SERVER 0x00000008 | The object resolver is requested to execute the object exporter in the 64-bit    |
	//	|                                             | address space.                                                                   |
	//	+---------------------------------------------+----------------------------------------------------------------------------------+
	//	| ACTVFLAGS_NO_FAILURE_LOG 0x00000020         | The object resolver is requested to not log an error if a failure occurs during  |
	//	|                                             | the activation request.                                                          |
	//	+---------------------------------------------+----------------------------------------------------------------------------------+
	ActivateFlags uint32 `idl:"name:actvflags" json:"activate_flags"`
	// fIsSurrogate:   This MUST be set to FALSE (0x00000000) and MUST be ignored on receipt.
	IsSurrogate int32 `idl:"name:fIsSurrogate" json:"is_surrogate"`
	// cIID:  The number of interfaces in the pIID array. This value MUST be between 1 and
	// MAX_REQUESTED_INTERFACES (see section 2.2.28.1).
	IIDCount uint32 `idl:"name:cIID" json:"iid_count"`
	// instFlag:   This MUST be set to zero and MUST be ignored on receipt.
	InstanceFlag uint32 `idl:"name:instFlag" json:"instance_flag"`
	// pIID:  An array of IIDs identifying the interfaces that the client requests from
	// the server.
	IID []*IID `idl:"name:pIID;size_is:(cIID)" json:"iid"`
	// thisSize:  The size (in bytes) of this structure, as marshaled by the NDR Type Serialization
	// 1 engine (as specified in [MS-RPCE] section 2.2.6). It SHOULD be ignored on receipt.
	ThisSize uint32 `idl:"name:thisSize" json:"this_size"`
	// clientCOMVersion:   The COMVERSION of the client. This MUST be ignored on receipt.
	ClientCOMVersion *COMVersion `idl:"name:clientCOMVersion" json:"client_com_version"`
}

InstantiationInfoData structure represents InstantiationInfoData RPC structure.

The client uses this structure to specify basic details of the object to be activated, including the identifying object CLSID and one or more requested object interfaces.

CLSID_InstantiationInfo (section 1.9) is used to identify this property in the CustomHeader.pclsid array.

func (*InstantiationInfoData) MarshalNDR ¶

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

func (*InstantiationInfoData) UnmarshalNDR ¶

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

type InterfacePointer ¶

type InterfacePointer struct {
	// ulCntData:  This MUST specify the size, in bytes, of the abData parameter.
	DataCount uint32 `idl:"name:ulCntData" json:"data_count"`
	// abData:   An array of bytes that MUST contain an OBJREF.
	Data []byte `idl:"name:abData;size_is:(ulCntData)" json:"data"`
}

InterfacePointer structure represents MInterfacePointer RPC structure.

MInterfacePointer is an NDR-marshaled structure that MUST contain a hand-marshaled OBJREF.

func (*InterfacePointer) GetCustomObjectReference ¶

func (o *InterfacePointer) GetCustomObjectReference() *ObjectReferenceCustom

func (*InterfacePointer) GetObjectReference ¶

func (o *InterfacePointer) GetObjectReference() *ObjectReference

func (*InterfacePointer) GetStandardObjectReference ¶

func (o *InterfacePointer) GetStandardObjectReference() *ObjectReferenceStandard

func (*InterfacePointer) IPID ¶

func (o *InterfacePointer) IPID() *IPID

func (*InterfacePointer) MarshalNDR ¶

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

func (*InterfacePointer) NDRSizeInfo ¶

func (o *InterfacePointer) NDRSizeInfo() []uint64

func (*InterfacePointer) UnmarshalNDR ¶

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

type LocationInfoData ¶

type LocationInfoData struct {
	// machineName:  This MUST be set to NULL and MUST be ignored on receipt.
	MachineName string `idl:"name:machineName;string" json:"machine_name"`
	// processId:   This MUST be set to 0 and MUST be ignored on receipt.
	ProcessID uint32 `idl:"name:processId" json:"process_id"`
	// apartmentId:   This MUST be set to 0 and MUST be ignored on receipt.
	ApartmentID uint32 `idl:"name:apartmentId" json:"apartment_id"`
	// contextId:   This MUST be set to 0 and MUST be ignored on receipt.
	ContextID uint32 `idl:"name:contextId" json:"context_id"`
}

LocationInfoData structure represents LocationInfoData RPC structure.

The LocationInfoData structure MUST be present in the Activation Properties BLOB structure. The server MUST ignore this structure.

CLSID_ServerLocationInfo (see section 1.9) is used to identify this property in the CustomHeader.pclsid array.

func (*LocationInfoData) MarshalNDR ¶

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

func (*LocationInfoData) UnmarshalNDR ¶

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

type ORPCExtent ¶

type ORPCExtent struct {
	// id:  This MUST contain a GUID that identifies the format of the opaque data in the
	// data field.
	ID *dtyp.GUID `idl:"name:id" json:"id"`
	// size:  This MUST specify the size, in bytes, in the data field excluding any padding
	// bytes that were added to round the array size to a multiple of 8.
	Size uint32 `idl:"name:size" json:"size"`
	// data:  This MUST contain an array of bytes that form the extent data. The array size
	// MUST be a multiple of 8 for alignment reasons.
	Data []byte `idl:"name:data;size_is:(((size+7)&(^uint32(7))))" json:"data"`
}

ORPCExtent structure represents ORPC_EXTENT RPC structure.

ORPC_EXTENT is a binary large object (BLOB) of data whose format is identified by a GUID. It is used on DCOM Remote Protocol calls to pass arbitrary out-of-band data that is not part of the explicit method signature. Unless otherwise specified, clients and servers MUST ignore ORPC_EXTENTs whose format they do not recognize.<6>

func (*ORPCExtent) MarshalNDR ¶

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

func (*ORPCExtent) NDRSizeInfo ¶

func (o *ORPCExtent) NDRSizeInfo() []uint64

func (*ORPCExtent) UnmarshalNDR ¶

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

type ORPCExtentArray ¶

type ORPCExtentArray struct {
	// size:   This MUST specify the number of non-NULL elements in the extent field.
	Size uint32 `idl:"name:size" json:"size"`

	// extent:   This MUST be an array of ORPC_EXTENTs. The array size MUST be a multiple
	// of 2 for alignment reasons.
	Extent []*ORPCExtent `idl:"name:extent;size_is:(((size+1)&(^uint32(1))), );pointer:unique" json:"extent"`
	// contains filtered or unexported fields
}

ORPCExtentArray structure represents ORPC_EXTENT_ARRAY RPC structure.

ORPC_EXTENT_ARRAY is an array of ORPC_EXTENT structures.

func (*ORPCExtentArray) MarshalNDR ¶

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

func (*ORPCExtentArray) UnmarshalNDR ¶

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

type ORPCThat ¶

type ORPCThat struct {
	// flags:  This can be set to any arbitrary value and MUST be ignored on receipt.
	Flags uint32 `idl:"name:flags" json:"flags"`
	// extensions:   If non-NULL, this field MUST contain an ORPC_EXTENT_ARRAY.
	Extensions *ORPCExtentArray `idl:"name:extensions;pointer:unique" json:"extensions"`
}

ORPCThat structure represents ORPCTHAT RPC structure.

The ORPCTHAT structure is the first (implicit) argument returned in an ORPC response PDU, and is used to return ORPC extension data to the client. The ORPCTHAT structure is also returned as an explicit argument from an activation request.

func (*ORPCThat) MarshalNDR ¶

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

func (*ORPCThat) UnmarshalNDR ¶

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

type ORPCThis ¶

type ORPCThis struct {
	// version:   A COMVERSION structure that MUST contain the version number of the client.
	// For details, see section 2.2.11.
	Version *COMVersion `idl:"name:version" json:"version"`
	// flags:   When the ORPCTHIS structure is used as a parameter in ORPC invocations (as
	// specified in section 3.2.4.2), this MUST be set to 0x00000000. When the ORPCTHIS
	// structure is used as a parameter in IActivation::RemoteActivation, IRemoteSCMActivator::RemoteGetClassObject
	// and IRemoteSCMActivator::RemoteCreateInstance methods (section 3.1.2.5.2.3), this
	// can be set to any arbitrary value when sent and MUST be ignored on receipt.
	Flags uint32 `idl:"name:flags" json:"flags"`

	// cid:  This MUST contain a CID for the ORPC call. For details, see section 1.3.5.
	CID *CID `idl:"name:cid" json:"cid"`
	// extensions:   If non-NULL, this MUST be a pointer to an ORPC_EXTENT_ARRAY structure.
	Extensions *ORPCExtentArray `idl:"name:extensions;pointer:unique" json:"extensions"`
	// contains filtered or unexported fields
}

ORPCThis structure represents ORPCTHIS RPC structure.

The ORPCTHIS structure is the first (implicit) argument sent in an ORPC request PDU and is used to send ORPC extension data to the server. The ORPCTHIS structure is also sent as an explicit argument in activation RPC requests.

func (*ORPCThis) MarshalNDR ¶

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

func (*ORPCThis) UnmarshalNDR ¶

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

type ObjectReference ¶

type ObjectReference struct {
	// signature (4 bytes): This MUST be set to the value 0x574f454d.
	Signature []byte `idl:"name:signature" json:"signature"`
	// flags (4 bytes): This MUST be set to ONE of the following values.
	//
	//	+----------------------------+-------------------------------------------+
	//	|                            |                                           |
	//	|           VALUE            |                  MEANING                  |
	//	|                            |                                           |
	//	+----------------------------+-------------------------------------------+
	//	+----------------------------+-------------------------------------------+
	//	| OBJREF_STANDARD 0x00000001 | u_objref MUST contain an OBJREF_STANDARD. |
	//	+----------------------------+-------------------------------------------+
	//	| OBJREF_HANDLER 0x00000002  | u_objref MUST contain an OBJREF_HANDLER.  |
	//	+----------------------------+-------------------------------------------+
	//	| OBJREF_CUSTOM 0x00000004   | u_objref MUST contain an OBJREF_CUSTOM.   |
	//	+----------------------------+-------------------------------------------+
	//	| OBJREF_EXTENDED 0x00000008 | u_objref MUST contain an OBJREF_EXTENDED. |
	//	+----------------------------+-------------------------------------------+
	Flags ObjectReferenceType `idl:"name:flags" json:"flags"`
	// iid (16 bytes):  The IID for which this OBJREF was marshaled; this MUST NOT be set
	// to GUID_NULL.
	IID *IID `idl:"name:iid" json:"iid"`
	// u_objref (variable):  A structure specified by the value of the preceding flags.
	ObjectReference *ObjectReference_ObjectReference `idl:"name:u_objref;switch_is:Flags" json:"object_reference"`
}

ObjectReference structure represents OBJREF RPC structure.

OBJREF is the marshaled format for a DCOM Remote Protocol object reference. There are four different formats for an OBJREF, which are specified by different definitions of the u_objref field. This section defines the initial header information. The following sections define substructures found in the u_objref field.

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 3 | 1 |
|   |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| signature                                                                                                                     |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| flags                                                                                                                         |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| iid (16 bytes)                                                                                                                |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| u_objref (variable)                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

func (*ObjectReference) MarshalNDR ¶

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

func (*ObjectReference) UnmarshalNDR ¶

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

type ObjectReferenceCustom ¶

type ObjectReferenceCustom struct {
	// clsid (16 bytes): This MUST specify a CLSID, supplied by an application or higher-layer
	// protocol, identifying an object class associated with the data in the pObjectData
	// field.<8>
	ClassID *ClassID `idl:"name:clsid" json:"class_id"`
	// cbExtension (4 bytes): This MUST be set to zero when sent and MUST be ignored on
	// receipt.
	ExtensionLength uint32 `idl:"name:cbExtension" json:"extension_length"`

	// pObjectData (variable): This MUST be an array of bytes containing data supplied by
	// an application or higher-layer protocol.
	ObjectData []byte `idl:"name:pObjectData" json:"object_data"`
	// contains filtered or unexported fields
}

ObjectReferenceCustom structure represents OBJREF_CUSTOM RPC structure.

This form of OBJREF is used by a server object to marshal itself into an opaque BLOB using a custom marshaler. The custom marshaler is a COM object that can marshal and unmarshal the data contained in the BLOB. The CLSID of the custom marshaler object's object class is specified within the OBJREF.

If the interface specified by the iid field of the OBJREF structure contained in the OBJREF_CUSTOM has the local IDL attribute (section 2.2.27), the OBJREF_CUSTOM MUST represent an object that is local to the client that unmarshals the object.

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 3 | 1 |
|   |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| clsid (16 bytes)                                                                                                              |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| cbExtension                                                                                                                   |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| reserved                                                                                                                      |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| pObjectData (variable)                                                                                                        |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

func (*ObjectReferenceCustom) MarshalNDR ¶

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

func (*ObjectReferenceCustom) UnmarshalNDR ¶

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

type ObjectReferenceExtended ¶

type ObjectReferenceExtended struct {
	// std (40 bytes):  This MUST contain an STDOBJREF structure.
	Std *StdObjectReference `idl:"name:std" json:"std"`
	// Signature1 (4 bytes): This MUST be set to 0x4E535956.
	Signature1 []byte `idl:"name:Signature1" json:"signature1"`
	// saResAddr (variable): This MUST contain a DUALSTRINGARRAY structure containing network
	// and security bindings for the object resolver service on the server.
	ResolverAddr *DualStringArray `idl:"name:saResAddr" json:"resolver_addr"`
	// nElms (4 bytes): The number of elements in the ElmArray field. This field MUST be
	// set to 0x00000001. (Note that while this protocol supports only a single element,
	// for historical reasons the protocol uses an array of one element.)
	Elements uint32 `idl:"name:nElms" json:"elements"`
	// Signature2 (4 bytes): This MUST be set to 0x4E535956.
	Signature2 []byte `idl:"name:Signature2" json:"signature2"`
	// ElmArray (variable): This MUST be a DATAELEMENT entry.
	ElementArray []*DataElement `idl:"name:ElmArray;size_is:(nElms)" json:"element_array"`
}

ObjectReferenceExtended structure represents OBJREF_EXTENDED RPC structure.

The OBJREF_EXTENDED format is used when the server returns a marshaled envoy context to the client.

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 3 | 1 |
|   |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| std (40 bytes)                                                                                                                |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| Signature1                                                                                                                    |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| saResAddr (variable)                                                                                                          |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| nElms                                                                                                                         |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| Signature2                                                                                                                    |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ElmArray (variable)                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

func (*ObjectReferenceExtended) MarshalNDR ¶

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

func (*ObjectReferenceExtended) UnmarshalNDR ¶

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

type ObjectReferenceHandler ¶

type ObjectReferenceHandler struct {
	// std (40 bytes): This MUST specify an STDOBJREF.
	Std *StdObjectReference `idl:"name:std" json:"std"`
	// clsid (16 bytes): This MUST specify a CLSID identifying an object class on the client
	// that the client uses as a handler for the interface identified by the iid field of
	// the containing OBJREF.
	ClassID *ClassID `idl:"name:clsid" json:"class_id"`
	// saResAddr (variable):  This MUST specify a DUALSTRINGARRAY that MUST contain the
	// network and security bindings for the object resolver service on the server.
	ResolverAddr *DualStringArray `idl:"name:saResAddr" json:"resolver_addr"`
}

ObjectReferenceHandler structure represents OBJREF_HANDLER RPC structure.

This form of OBJREF is used by the server object to provide an identifier for a helper object on the client, which the client can use as a proxy for the server object.

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 3 | 1 |
|   |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| std (40 bytes)                                                                                                                |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| clsid (16 bytes)                                                                                                              |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| saResAddr (variable)                                                                                                          |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

func (*ObjectReferenceHandler) MarshalNDR ¶

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

func (*ObjectReferenceHandler) UnmarshalNDR ¶

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

type ObjectReferenceStandard ¶

type ObjectReferenceStandard struct {
	// std (40 bytes):  This MUST be an STDOBJREF.
	Std *StdObjectReference `idl:"name:std" json:"std"`
	// saResAddr (variable):  A DUALSTRINGARRAY that MUST contain the network and security
	// bindings for the object resolver service on the server.
	ResolverAddr *DualStringArray `idl:"name:saResAddr" json:"resolver_addr"`
}

ObjectReferenceStandard structure represents OBJREF_STANDARD RPC structure.

This form of OBJREF is the simplest, combining an STDOBJREF structure with a DUALSTRINGARRAY structure. It is used when there is no need to utilize the extra fields offered by the other OBJREF formats.

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 3 | 1 |
|   |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| std (40 bytes)                                                                                                                |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| saResAddr (variable)                                                                                                          |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

func (*ObjectReferenceStandard) MarshalNDR ¶

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

func (*ObjectReferenceStandard) UnmarshalNDR ¶

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

type ObjectReferenceType ¶

type ObjectReferenceType uint16

ObjectReferenceType type represents OBJREF_TYPE RPC enumeration.

var (
	ObjectReferenceTypeStandard ObjectReferenceType = 1
	ObjectReferenceTypeHandler  ObjectReferenceType = 2
	ObjectReferenceTypeCustom   ObjectReferenceType = 4
	ObjectReferenceTypeExtended ObjectReferenceType = 8
)

func (ObjectReferenceType) String ¶

func (o ObjectReferenceType) String() string

type ObjectReference_Custom ¶

type ObjectReference_Custom struct {
	Custom *ObjectReferenceCustom `idl:"name:custom" json:"custom"`
}

ObjectReference_Custom structure represents ObjectReference_ObjectReference RPC union arm.

It has following labels: 4

func (*ObjectReference_Custom) MarshalNDR ¶

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

func (*ObjectReference_Custom) UnmarshalNDR ¶

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

type ObjectReference_Extended ¶

type ObjectReference_Extended struct {
	Extended *ObjectReferenceExtended `idl:"name:extended" json:"extended"`
}

ObjectReference_Extended structure represents ObjectReference_ObjectReference RPC union arm.

It has following labels: 8

func (*ObjectReference_Extended) MarshalNDR ¶

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

func (*ObjectReference_Extended) UnmarshalNDR ¶

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

type ObjectReference_Handler ¶

type ObjectReference_Handler struct {
	Handler *ObjectReferenceHandler `idl:"name:handler" json:"handler"`
}

ObjectReference_Handler structure represents ObjectReference_ObjectReference RPC union arm.

It has following labels: 2

func (*ObjectReference_Handler) MarshalNDR ¶

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

func (*ObjectReference_Handler) UnmarshalNDR ¶

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

type ObjectReference_ObjectReference ¶

type ObjectReference_ObjectReference struct {
	// Types that are assignable to Value
	//
	// *ObjectReference_Standard
	// *ObjectReference_Handler
	// *ObjectReference_Custom
	// *ObjectReference_Extended
	Value is_ObjectReference_ObjectReference `json:"value"`
}

ObjectReference_ObjectReference structure represents OBJREF union anonymous member.

OBJREF is the marshaled format for a DCOM Remote Protocol object reference. There are four different formats for an OBJREF, which are specified by different definitions of the u_objref field. This section defines the initial header information. The following sections define substructures found in the u_objref field.

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 3 | 1 |
|   |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| signature                                                                                                                     |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| flags                                                                                                                         |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| iid (16 bytes)                                                                                                                |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| u_objref (variable)                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

func (*ObjectReference_ObjectReference) GetValue ¶

func (o *ObjectReference_ObjectReference) GetValue() any

func (*ObjectReference_ObjectReference) MarshalUnionNDR ¶

func (o *ObjectReference_ObjectReference) MarshalUnionNDR(ctx context.Context, w ndr.Writer, sw uint32) error

func (*ObjectReference_ObjectReference) NDRSwitchValue ¶

func (o *ObjectReference_ObjectReference) NDRSwitchValue(sw uint32) uint32

func (*ObjectReference_ObjectReference) UnmarshalUnionNDR ¶

func (o *ObjectReference_ObjectReference) UnmarshalUnionNDR(ctx context.Context, w ndr.Reader, sw uint32) error

type ObjectReference_Standard ¶

type ObjectReference_Standard struct {
	Standard *ObjectReferenceStandard `idl:"name:standard" json:"standard"`
}

ObjectReference_Standard structure represents ObjectReference_ObjectReference RPC union arm.

It has following labels: 1

func (*ObjectReference_Standard) MarshalNDR ¶

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

func (*ObjectReference_Standard) UnmarshalNDR ¶

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

type PropertiesOutInfo ¶

type PropertiesOutInfo struct {
	// cIfs:  This MUST contain the number of interfaces being returned by the server. This
	// value MUST be between 1 and MAX_REQUESTED_INTERFACES (see section 2.2.28.1).
	InterfacesCount uint32 `idl:"name:cIfs" json:"interfaces_count"`
	// piid:  This MUST be an array of IIDs identifying the interfaces returned by the server.
	IIDs []*IID `idl:"name:piid;size_is:(cIfs)" json:"iids"`
	// phresults:   This MUST be an array of status codes indicating the success or failure
	// of each attempt to return an interface requested by the client. For each array location
	// containing a zero value, a non-NULL MInterfacePointer pointer MUST be present in
	// the corresponding location in the ppIntfData array. For each array location containing
	// a negative value, a NULL MUST be present in the corresponding location in the ppIntfData
	// array.
	HResults []int32 `idl:"name:phresults;size_is:(cIfs)" json:"hresults"`
	// ppIntfData:   This MUST be an array of MInterfacePointer pointers containing the
	// OBJREFs for the interfaces returned by the server.
	InterfaceData []*InterfacePointer `idl:"name:ppIntfData;size_is:(cIfs)" json:"interface_data"`
}

PropertiesOutInfo structure represents PropsOutInfo RPC structure.

The PropsOutInfo structure represents a collection of interfaces that the object implements and that are returned to the client. If the object does not support a particular interface requested by the client, it also sends an error back using this structure.

CLSID_PropsOutInfo (see section 1.9) is used to identify this property in the CustomHeader.pclsid array.

func (*PropertiesOutInfo) MarshalNDR ¶

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

func (*PropertiesOutInfo) UnmarshalNDR ¶

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

type RemoteInterfaceReference ¶

type RemoteInterfaceReference struct {
	// ipid:  This MUST be the IPID of the interface reference count to be modified.
	IPID *IPID `idl:"name:ipid" json:"ipid"`
	// cPublicRefs:   This MUST be the number of public references (see section 1.3.6) on
	// the interface identified by IPID being requested by the client.
	PublicReferencesCount uint32 `idl:"name:cPublicRefs" json:"public_references_count"`
	// cPrivateRefs:  This MUST be the number of private references (see section 1.3.6)
	// on the interface identified by IPID being requested by the client.
	PrivateReferencesCount uint32 `idl:"name:cPrivateRefs" json:"private_references_count"`
}

RemoteInterfaceReference structure represents REMINTERFACEREF RPC structure.

The REMINTERFACEREF structure is passed as a parameter to either IRemUnknown::RemAddRef (Opnum 4) or IRemUnknown::RemRelease (Opnum 5). It specifies the number and type of references that the client requests to be added to (or subtracted from) an interface reference count.

func (*RemoteInterfaceReference) MarshalNDR ¶

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

func (*RemoteInterfaceReference) UnmarshalNDR ¶

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

type RemoteQueryInterfaceResult ¶

type RemoteQueryInterfaceResult struct {
	// hResult:   This MUST contain zero if the QueryInterface operation was successful.
	// Otherwise, this MUST contain a negative value to indicate failure; see section 3.1.1.5.6.1.1.
	HResult int32 `idl:"name:hResult" json:"hresult"`
	// std:   If hResult is zero, this MUST contain a STDOBJREF instance that the client
	// can unmarshal and use to make calls on the interface. If hResult contains an error
	// value, this field MUST be ignored.
	Std *StdObjectReference `idl:"name:std" json:"std"`
}

RemoteQueryInterfaceResult structure represents REMQIRESULT RPC structure.

The REMQIRESULT structure is passed as an output parameter from IRemUnknown::RemQueryInterface. It contains the result of the RemQueryInterface and the STDOBJREF containing the object reference for the queried interface.

func (*RemoteQueryInterfaceResult) MarshalNDR ¶

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

func (*RemoteQueryInterfaceResult) UnmarshalNDR ¶

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

type RemoteUnknown ¶

type RemoteUnknown InterfacePointer

RemoteUnknown structure represents IRemUnknown RPC structure.

func (*RemoteUnknown) InterfacePointer ¶

func (o *RemoteUnknown) InterfacePointer() *InterfacePointer

func (*RemoteUnknown) MarshalNDR ¶

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

func (*RemoteUnknown) NDRSizeInfo ¶

func (o *RemoteUnknown) NDRSizeInfo() []uint64

func (*RemoteUnknown) UnmarshalNDR ¶

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

type RemoteUnknown2 ¶

type RemoteUnknown2 InterfacePointer

RemoteUnknown2 structure represents IRemUnknown2 RPC structure.

func (*RemoteUnknown2) InterfacePointer ¶

func (o *RemoteUnknown2) InterfacePointer() *InterfacePointer

func (*RemoteUnknown2) MarshalNDR ¶

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

func (*RemoteUnknown2) NDRSizeInfo ¶

func (o *RemoteUnknown2) NDRSizeInfo() []uint64

func (*RemoteUnknown2) UnmarshalNDR ¶

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

type SCMReplyInfoData ¶

type SCMReplyInfoData struct {

	// remoteReply:  This MUST specify the customREMOTE_REPLY_SCM_INFO for the object exporter
	// of the server object.
	RemoteReply *CustomRemoteReplySCMInfo `idl:"name:remoteReply" json:"remote_reply"`
	// contains filtered or unexported fields
}

SCMReplyInfoData structure represents ScmReplyInfoData RPC structure.

The ScmReplyInfoData structure contains a customREMOTE_REPLY_SCM_INFO structure.

CLSID_ScmReplyInfo (see section 1.9) is used to identify this property in the CustomHeader.pclsid array.

func (*SCMReplyInfoData) MarshalNDR ¶

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

func (*SCMReplyInfoData) UnmarshalNDR ¶

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

type SCMRequestInfoData ¶

type SCMRequestInfoData struct {

	// remoteRequest:   This MUST specify a customREMOTE_REQUEST_SCM_INFO structure. This
	// field MUST NOT be NULL.
	RemoteRequest *CustomRemoteRequestSCMInfo `idl:"name:remoteRequest" json:"remote_request"`
	// contains filtered or unexported fields
}

SCMRequestInfoData structure represents ScmRequestInfoData RPC structure.

The ScmRequestInfoData structure contains a customREMOTE_REQUEST_SCM_INFO structure.

CLSID_ScmRequestInfo (see section 1.9) is used to identify this property in the CustomHeader.pclsid array.

func (*SCMRequestInfoData) MarshalNDR ¶

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

func (*SCMRequestInfoData) UnmarshalNDR ¶

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

type SPDFlags ¶

type SPDFlags uint16

SPDFlags type represents SPD_FLAGS RPC enumeration.

var (
	SPDFlagsUseConsoleSession    SPDFlags = 1
	SPDFlagsUseDefaultAuthnLevel SPDFlags = 2
)

func (SPDFlags) String ¶

func (o SPDFlags) String() string

type SecurityBinding ¶

type SecurityBinding struct {
	AuthnType     uint16 `json:"authn_type"`
	AuthzService  uint16 `json:"authz_service"`
	PrincipalName string `json:"principal_name"`
}

type SecurityInfoData ¶

type SecurityInfoData struct {
	// dwAuthnFlags:  This MUST be set to zero and MUST be ignored on receipt.
	AuthnFlags uint32 `idl:"name:dwAuthnFlags" json:"authn_flags"`
	// pServerInfo:   This SHOULD be NULL and MUST be ignored on receipt. For details, see
	// section 2.2.22.2.7.1.<35>
	ServerInfo *COMServerInfo `idl:"name:pServerInfo" json:"server_info"`
	// contains filtered or unexported fields
}

SecurityInfoData structure represents SecurityInfoData RPC structure.

The SecurityInfoData structure SHOULD NOT be sent and MUST be ignored on receipt.<34>

CLSID_SecurityInfo (see section 1.9) is used to identify this property in the CustomHeader.pclsid array.

func (*SecurityInfoData) MarshalNDR ¶

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

func (*SecurityInfoData) UnmarshalNDR ¶

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

type SpecialPropertiesData ¶

type SpecialPropertiesData struct {
	// dwSessionId:  A value that uniquely identifies a logon session on the server. The
	// value 0xFFFFFFFF indicates that any logon session is acceptable to the client.
	SessionID uint32 `idl:"name:dwSessionId" json:"session_id"`
	// fRemoteThisSessionId:   This MUST be set to TRUE (0x00000001) if dwSessionId is not
	// 0xFFFFFFFF; otherwise this MUST be set to FALSE (0x00000000). This field MUST be
	// ignored on receipt.
	RemoteThisSessionID int32 `idl:"name:fRemoteThisSessionId" json:"remote_this_session_id"`
	// fClientImpersonating:  This SHOULD be set to FALSE (0x00000000) and MUST be ignored
	// on receipt.<24>
	ClientImpersonating int32 `idl:"name:fClientImpersonating" json:"client_impersonating"`
	// fPartitionIDPresent:  This MUST contain an implementation-specific value and MAY
	// be ignored on receipt.<25>
	PartitionIDPresent int32 `idl:"name:fPartitionIDPresent" json:"partition_id_present"`
	// dwDefaultAuthnLvl:  This MUST contain an implementation-specific value and MUST be
	// ignored on receipt.<26>
	DefaultAuthnLevel uint32 `idl:"name:dwDefaultAuthnLvl" json:"default_authn_level"`
	// guidPartition:   This MUST contain an implementation-specific value specified by
	// higher-layer protocols and MAY be ignored on receipt.<27>
	Partition *dtyp.GUID `idl:"name:guidPartition" json:"partition"`
	// dwPRTFlags:  This MUST be set to zero and MUST be ignored on receipt.
	PartitionFlags uint32 `idl:"name:dwPRTFlags" json:"partition_flags"`
	// dwOrigClsctx:  This MUST contain an implementation-specific value and SHOULD be ignored
	// on receipt.<28>
	OrigClassContext uint32 `idl:"name:dwOrigClsctx" json:"orig_class_context"`
	// dwFlags:  This is a set of bitflags, defined as follows.
	//
	//	+-----------------------------------------+----------------------------------------------------------------------------------+
	//	|                                         |                                                                                  |
	//	|                  VALUE                  |                                     MEANING                                      |
	//	|                                         |                                                                                  |
	//	+-----------------------------------------+----------------------------------------------------------------------------------+
	//	+-----------------------------------------+----------------------------------------------------------------------------------+
	//	| SPD_FLAG_USE_CONSOLE_SESSION 0x00000001 | If this bit is set, the object resolver is requested to create the object        |
	//	|                                         | exporter in the console logon session. If this bit is not set, the object        |
	//	|                                         | resolver is requested to create the object exporter in the logon session         |
	//	|                                         | specified in the dwSessionID field.                                              |
	//	+-----------------------------------------+----------------------------------------------------------------------------------+
	//
	// Object resolvers MUST ignore any other bits that are set in the dwFlags field.
	Flags uint32 `idl:"name:dwFlags" json:"flags"`
	// contains filtered or unexported fields
}

SpecialPropertiesData structure represents SpecialPropertiesData RPC structure.

The SpecialPropertiesData structure contains miscellaneous parameters specified by the client for an activation request.

CLSID_SpecialSystemProperties (see section 1.9) is used to identify this property in the CustomHeader.pclsid array.

func (*SpecialPropertiesData) MarshalNDR ¶

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

func (*SpecialPropertiesData) UnmarshalNDR ¶

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

type SpecialPropertiesDataAlternate ¶

type SpecialPropertiesDataAlternate struct {
	SessionID           uint32     `idl:"name:dwSessionId" json:"session_id"`
	RemoteThisSessionID int32      `idl:"name:fRemoteThisSessionId" json:"remote_this_session_id"`
	ClientImpersonating int32      `idl:"name:fClientImpersonating" json:"client_impersonating"`
	PartitionIDPresent  int32      `idl:"name:fPartitionIDPresent" json:"partition_id_present"`
	DefaultAuthnLevel   uint32     `idl:"name:dwDefaultAuthnLvl" json:"default_authn_level"`
	Partition           *dtyp.GUID `idl:"name:guidPartition" json:"partition"`
	PartitionFlags      uint32     `idl:"name:dwPRTFlags" json:"partition_flags"`
	OrigClassContext    uint32     `idl:"name:dwOrigClsctx" json:"orig_class_context"`
	Flags               uint32     `idl:"name:dwFlags" json:"flags"`
	// contains filtered or unexported fields
}

SpecialPropertiesDataAlternate structure represents SpecialPropertiesData_Alternate RPC structure.

func (*SpecialPropertiesDataAlternate) MarshalNDR ¶

func (*SpecialPropertiesDataAlternate) UnmarshalNDR ¶

type StdObjectReference ¶

type StdObjectReference struct {
	// flags (4 bytes):  This can be one of the following values. Any other value MUST
	// be ignored by the client.
	//
	//	+------------------------+----------------------------------------------------------------------------------+
	//	|                        |                                                                                  |
	//	|         VALUE          |                                     MEANING                                      |
	//	|                        |                                                                                  |
	//	+------------------------+----------------------------------------------------------------------------------+
	//	+------------------------+----------------------------------------------------------------------------------+
	//	| 0x00000000             | The client is requested to perform garbage collection pinging (see section       |
	//	|                        | 3.2.6.1) for this object identifier (OID).                                       |
	//	+------------------------+----------------------------------------------------------------------------------+
	//	| SORF_NOPING 0x00001000 | The client is requested to not perform garbage collection pinging (see section   |
	//	|                        | 3.2.6.1) for this object identifier (OID).<7>                                    |
	//	+------------------------+----------------------------------------------------------------------------------+
	Flags uint32 `idl:"name:flags" json:"flags"`
	// cPublicRefs (4 bytes): The number of public references on the server object, which
	// MUST be released later. For more information, see section 3.2.4.4.2.
	PublicReferencesCount uint32 `idl:"name:cPublicRefs" json:"public_references_count"`
	// oxid (8 bytes):  This MUST be an OXID identifying the object exporter that contains
	// the object.
	OXID uint64 `idl:"name:oxid" json:"oxid"`
	// oid (8 bytes):  This MUST be an OID identifying the object.
	OID uint64 `idl:"name:oid" json:"oid"`
	// ipid (16 bytes):  This MUST be an IPID identifying a specific interface on the object.
	IPID *IPID `idl:"name:ipid" json:"ipid"`
}

StdObjectReference structure represents STDOBJREF RPC structure.

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 3 | 1 |
|   |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   | 0 |   |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| flags                                                                                                                         |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| cPublicRefs                                                                                                                   |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| oxid                                                                                                                          |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| oid                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ipid (16 bytes)                                                                                                               |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| ...                                                                                                                           |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

The parameter meanings for this structure are identical to those defined in section 2.2.18.2.

func (*StdObjectReference) MarshalNDR ¶

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

func (*StdObjectReference) UnmarshalNDR ¶

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

type StringBinding ¶

type StringBinding struct {
	TowerID     uint16 `json:"tower_id"`
	NetworkAddr string `json:"network_addr"`
}

func (*StringBinding) String ¶

func (o *StringBinding) String() string

type Unknown ¶

type Unknown InterfacePointer

Unknown structure represents IUnknown RPC structure.

func (*Unknown) InterfacePointer ¶

func (o *Unknown) InterfacePointer() *InterfacePointer

func (*Unknown) MarshalNDR ¶

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

func (*Unknown) NDRSizeInfo ¶

func (o *Unknown) NDRSizeInfo() []uint64

func (*Unknown) UnmarshalNDR ¶

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

Directories ¶

Path Synopsis
The adtg package implements the ADTG client protocol.
The adtg package implements the ADTG client protocol.
The ccfg package implements the CCFG client protocol.
The ccfg package implements the CCFG client protocol.
com
The com package implements the COM client protocol.
The com package implements the COM client protocol.
The coma package implements the COMA client protocol.
The coma package implements the COMA client protocol.
The comev package implements the COMEV client protocol.
The comev package implements the COMEV client protocol.
The comt package implements the COMT client protocol.
The comt package implements the COMT client protocol.
The csra package implements the CSRA client protocol.
The csra package implements the CSRA client protocol.
The csvp package implements the CSVP client protocol.
The csvp package implements the CSVP client protocol.
The dfsrh package implements the DFSRH client protocol.
The dfsrh package implements the DFSRH client protocol.
The dmrp package implements the DMRP client protocol.
The dmrp package implements the DMRP client protocol.
The fsrm package implements the FSRM client protocol.
The fsrm package implements the FSRM client protocol.
iactivation
The iisa package implements the IISA client protocol.
The iisa package implements the IISA client protocol.
The iiss package implements the IISS client protocol.
The iiss package implements the IISS client protocol.
The imsa package implements the IMSA client protocol.
The imsa package implements the IMSA client protocol.
iobjectexporter
ioi
The ioi package implements the IOI client protocol.
The ioi package implements the IOI client protocol.
iremotescmactivator
iremunknown
iremunknown2
iunknown
The oaut package implements the OAUT client protocol.
The oaut package implements the OAUT client protocol.
pla
rai
The rai package implements the RAI client protocol.
The rai package implements the RAI client protocol.
The rdpesc package implements the RDPESC client protocol.
The rdpesc package implements the RDPESC client protocol.
vds
The vds package implements the VDS client protocol.
The vds package implements the VDS client protocol.
The wcce package implements the WCCE client protocol.
The wcce package implements the WCCE client protocol.
wmi
The wmi package implements the WMI client protocol.
The wmi package implements the WMI client protocol.

Jump to

Keyboard shortcuts

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