mirror of
https://github.com/samba-team/samba.git
synced 2024-12-27 03:21:53 +03:00
97 lines
3.0 KiB
Plaintext
97 lines
3.0 KiB
Plaintext
/**
|
|
DCOM interfaces
|
|
http://www.grimes.demon.co.uk/DCOM/DCOMSpec.htm
|
|
*/
|
|
|
|
/*
|
|
The OXID Resolver can turn a OXID (Object Exporter ID) into a
|
|
RPC binding string that can be used to contact an object
|
|
|
|
(used by DCOM)
|
|
*/
|
|
|
|
import "misc.idl", "orpc.idl";
|
|
|
|
[
|
|
uuid("99fcfec4-5260-101b-bbcb-00aa0021347a"),
|
|
helpstring("Object Exporter ID Resolver"),
|
|
endpoint("ncacn_np:[\\pipe\\epmapper]", "ncacn_ip_tcp:[135]", "ncalrpc:"),
|
|
pointer_default(unique)
|
|
]
|
|
interface IOXIDResolver
|
|
{
|
|
#define OXID hyper
|
|
#define SETID hyper
|
|
#define IPID GUID
|
|
#define OID GUID
|
|
|
|
/* Method to get the protocol sequences, string bindings */
|
|
/* and machine id for an object server given its OXID. */
|
|
|
|
[idempotent] WERROR ResolveOxid (
|
|
[in] OXID pOxid,
|
|
[in] uint16 cRequestedProtseqs,
|
|
[in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[],
|
|
[out] DUALSTRINGARRAY **ppdsaOxidBindings,
|
|
[out,ref] IPID *pipidRemUnknown,
|
|
[out,ref] uint32 *pAuthnHint
|
|
);
|
|
|
|
/* Simple ping is used to ping a Set. Client machines use this */
|
|
/* to inform the object exporter that it is still using the */
|
|
/* members of the set. */
|
|
/* Returns S_TRUE if the SetId is known by the object exporter, */
|
|
/* S_FALSE if not. */
|
|
[idempotent] WERROR SimplePing (
|
|
[in] SETID *SetId /* Must not be zero */
|
|
);
|
|
|
|
/* Complex ping is used to create sets of OIDs to ping. The */
|
|
/* whole set can subsequently be pinged using SimplePing, */
|
|
/* thus reducing network traffic. */
|
|
[idempotent] WERROR ComplexPing (
|
|
[in,out,ref] SETID *SetId, /* In of 0 on first call for new set. */
|
|
[in] uint16 SequenceNum,
|
|
[in] uint16 cAddToSet,
|
|
[in] uint16 cDelFromSet,
|
|
/* add these OIDs to the set */
|
|
[in, size_is(cAddToSet)] OID AddToSet[],
|
|
/*remove these OIDs from the set */
|
|
[in, size_is(cDelFromSet)] OID DelFromSet[],
|
|
[out,ref] uint16 *PingBackoffFactor/* 2^factor = multipler */
|
|
);
|
|
|
|
/* In some cases the client maybe unsure that a particular */
|
|
/* binding will reach the server. (For example, when the oxid */
|
|
/* bindings have more than one TCP/IP binding) This call */
|
|
/* can be used to validate the binding */
|
|
/* from the client. */
|
|
[idempotent] WERROR ServerAlive ();
|
|
|
|
/* Method to get the protocol sequences, string bindings, */
|
|
/* RemoteUnknown IPID and COM version for an object server */
|
|
/* given its OXID. Supported by DCOM */
|
|
/* version 5.2 and above. Looks like that means
|
|
* Windows 2003/XP and above */
|
|
[idempotent] WERROR ResolveOxid2 (
|
|
[in] OXID pOxid,
|
|
[in] uint16 cRequestedProtseqs,
|
|
[in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[],
|
|
[out] DUALSTRINGARRAY **pdsaOxidBindings,
|
|
[out,ref] IPID *ipidRemUnknown,
|
|
[out,ref] uint32 *AuthnHint,
|
|
[out,ref] COMVERSION *ComVersion
|
|
);
|
|
typedef struct {
|
|
COMVERSION version;
|
|
uint32 unknown1;
|
|
} COMINFO;
|
|
|
|
[idempotent] WERROR ServerAlive2 (
|
|
[out,ref] COMINFO *info,
|
|
[out,ref] DUALSTRINGARRAY *dualstring,
|
|
[out,ref] uint8 *unknown2,
|
|
[out,ref] uint8 *unknown3,
|
|
[out,ref] uint8 *unknown4);
|
|
}
|