ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

dcom.idl
Go to the documentation of this file.
00001 /*
00002  * Copyright 2003 Ove Kåven, TransGaming Technologies
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00017  */
00018 
00019 /* see the official DCOM specification
00020  * (there's a copy at http://www.grimes.demon.co.uk/DCOM/DCOMSpec.htm) */
00021 
00022 import "unknwn.idl";
00023 
00024 #ifdef __WIDL__
00025 [
00026     threading(both),
00027     uuid(00000320-0000-0000-c000-000000000046)
00028 ]
00029 coclass PSFactoryBuffer { interface IFactoryBuffer; }
00030 #endif
00031 
00032 [
00033   uuid(99fcfe60-5260-101b-bbcb-00aa0021347a),
00034   pointer_default(unique)
00035 ]
00036 interface ObjectRpcBaseTypes
00037 {
00038   typedef unsigned hyper ID;
00039   typedef ID MID;
00040   typedef ID OXID;
00041   typedef ID OID;
00042   typedef ID SETID;
00043   typedef GUID IPID;
00044   typedef GUID CID;
00045   typedef REFGUID REFIPID;
00046 
00047   const unsigned short COM_MINOR_VERSION_1 = 1;
00048   const unsigned short COM_MINOR_VERSION_2 = 2;
00049 
00050   const unsigned short COM_MAJOR_VERSION = 5;
00051   const unsigned short COM_MINOR_VERSION = 3;
00052 
00053   typedef struct tagCOMVERSION {
00054     unsigned short MajorVersion;
00055     unsigned short MinorVersion;
00056   } COMVERSION;
00057 
00058   const unsigned long ORPCF_NULL = 0;
00059   const unsigned long ORPCF_LOCAL = 1;
00060   const unsigned long ORPCF_RESERVED1 = 2;
00061   const unsigned long ORPCF_RESERVED2 = 4;
00062   const unsigned long ORPCF_RESERVED3 = 8;
00063   const unsigned long ORPCF_RESERVED4 = 16;
00064 
00065   typedef struct tagORPC_EXTENT {
00066     GUID id;
00067     unsigned long size;
00068     [size_is((size+7)&~7)] byte data[];
00069   } ORPC_EXTENT;
00070 
00071   typedef struct tagORPC_EXTENT_ARRAY {
00072     unsigned long size;
00073     unsigned long reserved;
00074     [size_is((size+1)&~1,), unique] ORPC_EXTENT **extent;
00075   } ORPC_EXTENT_ARRAY;
00076 
00077   typedef struct tagORPCTHIS {
00078     COMVERSION version;
00079     unsigned long flags;
00080     unsigned long reserved1;
00081     CID cid;
00082     [unique] ORPC_EXTENT_ARRAY *extensions;
00083   } ORPCTHIS;
00084 
00085   typedef struct tagORPCTHAT {
00086     unsigned long flags;
00087     [unique] ORPC_EXTENT_ARRAY *extensions;
00088   } ORPCTHAT;
00089 
00090   const unsigned short NCADG_IP_UDP = 0x08;
00091   const unsigned short NCACN_IP_TCP = 0x07;
00092   const unsigned short NCADG_IPX = 0x0E;
00093   const unsigned short NCACN_SPX = 0x0C;
00094   const unsigned short NCACN_NB_NB = 0x12;
00095   const unsigned short NCACN_NB_IPX = 0x0D;
00096   const unsigned short NCACN_DNET_NSP = 0x04;
00097   const unsigned short NCACN_HTTP = 0x1F;
00098 
00099   typedef struct tagSTRINGBINDING {
00100     unsigned short wTowerId;
00101     [string] WCHAR aNetworkAddr[];
00102   } STRINGBINDING;
00103 
00104   const unsigned short COM_C_AUTHZ_NONE = 0xffff;
00105 
00106   typedef struct tagSECURITYBINDING {
00107     unsigned short wAuthnSvc;
00108     unsigned short wAuthzSvc;
00109     [string] WCHAR aPrincName[];
00110   } SECURITYBINDING;
00111 
00112   typedef struct tagDUALSTRINGARRAY {
00113     unsigned short wNumEntries;
00114     unsigned short wSecurityOffset;
00115     [size_is(wNumEntries)] unsigned short aStringArray[];
00116   } DUALSTRINGARRAY;
00117 
00118   typedef struct tagOXID_INFO {
00119     DWORD dwTid;
00120     DWORD dwPid;
00121     IPID ipidRemUnknown;
00122     DWORD dwAuthnHint;
00123     DUALSTRINGARRAY *psa;
00124   } OXID_INFO;
00125 
00126   const unsigned long OBJREF_SIGNATURE = 0x574f454d; /* "MEOW" */
00127   const unsigned long OBJREF_STANDARD = 0x1;
00128   const unsigned long OBJREF_HANDLER = 0x2;
00129   const unsigned long OBJREF_CUSTOM = 0x4;
00130   const unsigned long SORF_OXRES1 = 0x1;
00131   const unsigned long SORF_OXRES2 = 0x20;
00132   const unsigned long SORF_OXRES3 = 0x40;
00133   const unsigned long SORF_OXRES4 = 0x80;
00134   const unsigned long SORF_OXRES5 = 0x100;
00135   const unsigned long SORF_OXRES6 = 0x200;
00136   const unsigned long SORF_OXRES7 = 0x400;
00137   const unsigned long SORF_OXRES8 = 0x800;
00138   const unsigned long SORF_NULL = 0x0;
00139   const unsigned long SORF_NOPING = 0x1000;
00140 
00141   typedef struct tagSTDOBJREF {
00142     unsigned long flags;
00143     unsigned long cPublicRefs;
00144     OXID oxid;
00145     OID oid;
00146     IPID ipid;
00147   } STDOBJREF;
00148 
00149   typedef struct tagOBJREF {
00150     unsigned long signature;
00151     unsigned long flags;
00152     GUID iid;
00153     [switch_is(flags)] union {
00154     [case(OBJREF_STANDARD)] struct OR_STANDARD {
00155         STDOBJREF std;
00156         DUALSTRINGARRAY saResAddr;
00157       } u_standard;
00158     [case(OBJREF_HANDLER)] struct OR_HANDLER {
00159         STDOBJREF std;
00160         CLSID clsid;
00161         DUALSTRINGARRAY saResAddr;
00162       } u_handler;
00163     [case(OBJREF_CUSTOM)] struct OR_CUSTOM {
00164         CLSID clsid;
00165         unsigned long cbExtension;
00166         ULONG size;
00167         [size_is(size), ref] byte *pData;
00168       } u_custom;
00169     } u_objref;
00170   } OBJREF;
00171 
00172   typedef struct tagMInterfacePointer {
00173     ULONG ulCntData;
00174     [size_is(ulCntData)] BYTE abData[];
00175   } MInterfacePointer;
00176 
00177   typedef [unique] MInterfacePointer *PMInterfacePointer;
00178 
00179 } /* interface ObjectRpcBaseTypes */
00180 
00181 [
00182   object,
00183   uuid(00000131-0000-0000-C000-000000000046)
00184 ]
00185 interface IRemUnknown : IUnknown
00186 {
00187   typedef [unique] IRemUnknown *LPREMUNKNOWN;
00188 
00189   typedef struct tagREMQIRESULT {
00190     HRESULT hResult;
00191     STDOBJREF std;
00192   } REMQIRESULT;
00193 
00194   typedef struct tagREMINTERFACEREF {
00195     IPID ipid;
00196     unsigned long cPublicRefs;
00197     unsigned long cPrivateRefs;
00198   } REMINTERFACEREF; 
00199 
00200   HRESULT RemQueryInterface(
00201     [in] REFIPID ripid,
00202     [in] ULONG cRefs,
00203     [in] unsigned short cIids,
00204     [in, size_is(cIids)] IID *iids,
00205     [out, size_is(,cIids)] REMQIRESULT **ppQIResults);
00206 
00207   HRESULT RemAddRef(
00208     [in] unsigned short cInterfaceRefs,
00209     [in, size_is(cInterfaceRefs)] REMINTERFACEREF* InterfaceRefs,
00210     [out, size_is(cInterfaceRefs)] HRESULT *pResults);
00211 
00212   HRESULT RemRelease(
00213     [in] unsigned short cInterfaceRefs,
00214     [in, size_is(cInterfaceRefs)] REMINTERFACEREF* InterfaceRefs);
00215 }
00216 
00217 [
00218   object,
00219   uuid(00000142-0000-0000-C000-000000000046)
00220 ]
00221 interface IRemUnknown2 : IRemUnknown
00222 {
00223   typedef [unique] IRemUnknown2 *LPREMUNKNOWN2;
00224 
00225   HRESULT RemQueryInterface2(
00226     [in] REFIPID ripid,
00227     [in] unsigned short cIids,
00228     [in, size_is(cIids)] IID *iids,
00229     [out, size_is(cIids)] HRESULT *phr,
00230     [out, size_is(cIids)] MInterfacePointer **ppMIF);
00231 }
00232 
00233 [
00234   uuid(99fcfec4-5260-101b-bbcb-00aa0021347a),
00235   pointer_default(unique)
00236 ]
00237 interface IOXIDResolver
00238 {
00239   [idempotent] error_status_t ResolveOxid(
00240     [in] handle_t hRpc,
00241     [in] OXID *pOxid,
00242     [in] unsigned short cRequestedProtseqs,
00243     [in, ref, size_is(cRequestedProtseqs)] unsigned short arRequestedProtseqs[],
00244     [out, ref] DUALSTRINGARRAY **ppdsaOxidBindings,
00245     [out, ref] IPID *pipidRemUnknown,
00246     [out, ref] DWORD *pAuthnHint);
00247 
00248   [idempotent] error_status_t SimplePing(
00249     [in] handle_t hRpc,
00250     [in] SETID *pSetId);
00251 
00252   [idempotent] error_status_t ComplexPing(
00253     [in] handle_t hRpc,
00254     [in, out] SETID *pSetId,
00255     [in] unsigned short SequenceNum,
00256     [in] unsigned short cAddToSet,
00257     [in] unsigned short cDelFromSet,
00258     [in, unique, size_is(cAddToSet)] OID AddToSet[],
00259     [in, unique, size_is(cDelFromSet)] OID DelFromSet[],
00260     [out] unsigned short *pPingBackoffFactor);
00261 
00262   [idempotent] error_status_t ServerAlive(
00263     [in] handle_t hRpc);
00264 
00265   [idempotent] error_status_t ResolveOxid2(
00266     [in] handle_t hRpc,
00267     [in] OXID *pOxid,
00268     [in] unsigned short cRequestedProtseqs,
00269     [in, ref, size_is(cRequestedProtseqs)] unsigned short arRequestedProtseqs[],
00270     [out, ref] DUALSTRINGARRAY **ppdsaOxidBindings,
00271     [out, ref] IPID *pipidRemUnknown,
00272     [out, ref] DWORD *pAuthnHint,
00273     [out, ref] COMVERSION *pComVersion); 
00274 }
00275 
00276 [
00277   uuid(4d9f4ab8-7d1c-11cf-861e-0020af6e7c57),
00278   pointer_default(unique)
00279 ]
00280 interface IRemoteActivation
00281 {
00282   const unsigned long MODE_GET_CLASS_OBJECT = 0xffffffff;
00283 
00284   HRESULT RemoteActivation(
00285     [in] handle_t hRpc,
00286     [in] ORPCTHIS *ORPCthis,
00287     [out] ORPCTHAT *ORPCthat,
00288     [in] GUID *Clsid,
00289     [in, string, unique] WCHAR *pwszObjectName,
00290     [in, unique] MInterfacePointer *pObjectStorage,
00291     [in] DWORD ClientImpLevel,
00292     [in] DWORD Mode,
00293     [in] DWORD Interfaces,
00294     [in, unique, size_is(Interfaces)] IID *pIIDs,
00295     [in] unsigned short cRequestedProtseqs,
00296     [in, size_is(cRequestedProtseqs)] unsigned short RequestedProtseqs[],
00297     [out] OXID *pOxid,
00298     [out] DUALSTRINGARRAY **ppdsaOxidBindings,
00299     [out] IPID *pipidRemUnknown,
00300     [out] DWORD *pAuthnHint,
00301     [out] COMVERSION *pServerVersion,
00302     [out] HRESULT *phr,
00303     [out,size_is(Interfaces)] MInterfacePointer **ppInterfaceData,
00304     [out,size_is(Interfaces)] HRESULT *pResults);
00305 }

Generated on Sun May 27 2012 04:25:36 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.