2004-09-27 16:37:41 +00:00
/**
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)
*/
[
2004-10-27 04:48:41 +00:00
uuid("99fcfec4-5260-101b-bbcb-00aa0021347a"),
2004-09-27 16:37:41 +00:00
helpstring("Object Exporter ID Resolver"),
2004-10-24 14:57:16 +00:00
endpoint("ncacn_np:[\\pipe\\epmapper]", "ncacn_ip_tcp:[135]", "ncalrpc:"),
2004-11-01 10:30:34 +00:00
pointer_default(unique),
r6973: Merge new version of pidl into the main SAMBA_4_0 branch.
The main difference in this new version is the extra data structure generated
between the IDL data structure and the NDR parser:
IDL -> NDR -> { ndr_parser, ndr_header, eparser, etc }
This makes the ndr_parser.pm internals much more sane.
Other changes include:
- Remove unnecessary calls with NDR_BUFFERS (for example, GUID doesn't have any buffers, just scalars) as well as some (unnecessary) nested setting of flags.
- Parse array loops in the C code rather then calling ndr_pull_array(). This allows us to have, for example, arrays of pointers or arrays of pointers to arrays, etc..
- Use if() {} rather then if () goto foo; everywhere
- NDR_IN no longer implies LIBNDR_FLAG_REF_ALLOC
- By default, top level pointers are now "ref" (as is the default in
most other IDL compilers). This can be overridden using the
default_pointer_top() property.
- initial work on new ethereal parser generators by Alan DeKok and me
- pidl now writes errors in the standard format used by compilers, which
is parsable by most editors
- ability to warn about the fact that pidl extension(s) have been used,
useful for making sure IDL files work with other IDL compilers.
oh, and there's probably some other things I can't think of right now..
(This used to be commit 13cf227615f6b9e0e5fa62e59197024410254f01)
2005-05-25 13:50:27 +00:00
pointer_default_top(unique),
2006-05-21 12:58:39 +00:00
depends(dcom, orpc),
keepref
2004-09-27 16:37:41 +00:00
]
interface IOXIDResolver
{
2005-01-27 06:33:07 +00:00
#define OXID hyper
#define SETID hyper
2004-09-27 16:37:41 +00:00
#define IPID GUID
#define OID GUID
2004-10-06 14:55:50 +00:00
/* Method to get the protocol sequences, string bindings */
/* and machine id for an object server given its OXID. */
2004-09-27 16:37:41 +00:00
[idempotent] WERROR ResolveOxid (
2004-11-02 19:52:51 +00:00
[in] OXID pOxid,
2004-09-27 16:37:41 +00:00
[in] uint16 cRequestedProtseqs,
[in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[],
2004-11-02 19:52:51 +00:00
[out] DUALSTRINGARRAY *ppdsaOxidBindings,
[out] IPID pipidRemUnknown,
[out] uint32 pAuthnHint
2004-09-27 16:37:41 +00:00
);
2004-10-06 14:55:50 +00:00
/* 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. */
2004-09-27 16:37:41 +00:00
[idempotent] WERROR SimplePing (
2004-10-06 14:55:50 +00:00
[in] SETID *SetId /* Must not be zero */
2004-09-27 16:37:41 +00:00
);
2004-10-06 14:55:50 +00:00
/* Complex ping is used to create sets of OIDs to ping. The */
/* whole set can subsequently be pinged using SimplePing, */
/* thus reducing network traffic. */
2004-09-27 16:37:41 +00:00
[idempotent] WERROR ComplexPing (
2004-11-02 19:52:51 +00:00
[in] SETID *SetId, /* In of 0 on first call for new set. */
[out] SETID SetId,
[in] uint16 SequenceNum,
[in] uint16 cAddToSet,
[in] uint16 cDelFromSet,
2004-10-06 14:55:50 +00:00
/* add these OIDs to the set */
2004-11-02 19:52:51 +00:00
[in, size_is(cAddToSet)] OID AddToSet[],
2004-10-06 14:55:50 +00:00
/*remove these OIDs from the set */
2004-11-02 19:52:51 +00:00
[in, size_is(cDelFromSet)] OID DelFromSet[],
[out] uint16 PingBackoffFactor/* 2^factor = multipler */
2004-09-27 16:37:41 +00:00
);
2004-10-06 14:55:50 +00:00
/* In some cases the client maybe unsure that a particular */
/* binding will reach the server. (For example, when the oxid */
2006-06-08 15:20:05 +00:00
/* bindings have more than one TCP/IP binding) This call */
2004-10-06 14:55:50 +00:00
/* can be used to validate the binding */
/* from the client. */
2004-09-27 16:37:41 +00:00
[idempotent] WERROR ServerAlive ();
2004-10-06 14:55:50 +00:00
/* Method to get the protocol sequences, string bindings, */
/* RemoteUnknown IPID and COM version for an object server */
/* given its OXID. Supported by DCOM */
2004-10-31 01:21:14 +00:00
/* version 5.2 and above. Looks like that means
* Windows 2003/XP and above */
2004-09-27 16:37:41 +00:00
[idempotent] WERROR ResolveOxid2 (
2004-11-02 19:52:51 +00:00
[in] OXID pOxid,
2004-09-27 16:37:41 +00:00
[in] uint16 cRequestedProtseqs,
2004-11-02 19:52:51 +00:00
[in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[],
[out] DUALSTRINGARRAY *pdsaOxidBindings,
[out] IPID ipidRemUnknown,
[out] uint32 AuthnHint,
[out] COMVERSION ComVersion
2004-09-27 16:37:41 +00:00
);
2004-11-02 19:52:51 +00:00
typedef struct {
2004-09-27 22:06:27 +00:00
COMVERSION version;
uint32 unknown1;
} COMINFO;
2004-09-27 16:37:41 +00:00
[idempotent] WERROR ServerAlive2 (
2004-09-27 22:06:27 +00:00
[out] COMINFO info,
2004-09-27 16:37:41 +00:00
[out] DUALSTRINGARRAY dualstring,
2004-09-27 22:06:27 +00:00
[out] uint8 unknown2[3]);
2004-09-27 16:37:41 +00:00
}