rpcdce.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. /*
  2. * Copyright (C) 2000 Francois Gouget
  3. *
  4. * This library is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Lesser General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 2.1 of the License, or (at your option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Lesser General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public
  15. * License along with this library; if not, write to the Free Software
  16. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  17. */
  18. #ifndef __WINE_RPCDCE_H
  19. #define __WINE_RPCDCE_H
  20. #ifndef IN
  21. #define IN
  22. #endif
  23. #ifndef OUT
  24. #define OUT
  25. #endif
  26. #ifndef OPTIONAL
  27. #define OPTIONAL
  28. #endif
  29. #ifndef GUID_DEFINED
  30. #include <guiddef.h>
  31. #endif
  32. #ifndef UUID_DEFINED
  33. #define UUID_DEFINED
  34. typedef GUID UUID;
  35. #endif
  36. typedef void* RPC_AUTH_IDENTITY_HANDLE;
  37. typedef void* RPC_AUTHZ_HANDLE;
  38. typedef void* RPC_IF_HANDLE;
  39. typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
  40. typedef RPC_BINDING_HANDLE handle_t;
  41. #define rpc_binding_handle_t RPC_BINDING_HANDLE
  42. #define RPC_MGR_EPV void
  43. typedef struct _RPC_BINDING_VECTOR
  44. {
  45. unsigned long Count;
  46. RPC_BINDING_HANDLE BindingH[1];
  47. } RPC_BINDING_VECTOR;
  48. #define rpc_binding_vector_t RPC_BINDING_VECTOR
  49. typedef struct _UUID_VECTOR
  50. {
  51. unsigned long Count;
  52. UUID *Uuid[1];
  53. } UUID_VECTOR;
  54. #define uuid_vector_t UUID_VECTOR
  55. typedef struct _RPC_IF_ID
  56. {
  57. UUID Uuid;
  58. unsigned short VersMajor;
  59. unsigned short VersMinor;
  60. } RPC_IF_ID;
  61. #define RPC_C_BINDING_INFINITE_TIMEOUT 10
  62. #define RPC_C_BINDING_MIN_TIMEOUT 0
  63. #define RPC_C_BINDING_DEFAULT_TIMEOUT 5
  64. #define RPC_C_BINDING_MAX_TIMEOUT 9
  65. #define RPC_C_CANCEL_INFINITE_TIMEOUT -1
  66. #define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
  67. #define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
  68. /* RPC_POLICY EndpointFlags */
  69. #define RPC_C_BIND_TO_ALL_NICS 0x1
  70. #define RPC_C_USE_INTERNET_PORT 0x1
  71. #define RPC_C_USE_INTRANET_PORT 0x2
  72. #define RPC_C_DONT_FAIL 0x4
  73. /* RPC_POLICY EndpointFlags specific to the Falcon/RPC transport */
  74. #define RPC_C_MQ_TEMPORARY 0x0000
  75. #define RPC_C_MQ_PERMANENT 0x0001
  76. #define RPC_C_MQ_CLEAR_ON_OPEN 0x0002
  77. #define RPC_C_MQ_USE_EXISTING_SECURITY 0x0004
  78. #define RPC_C_MQ_AUTHN_LEVEL_NONE 0x0000
  79. #define RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY 0x0008
  80. #define RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY 0x0010
  81. typedef RPC_STATUS RPC_ENTRY RPC_IF_CALLBACK_FN( RPC_IF_HANDLE InterfaceUuid, void *Context );
  82. typedef void (__RPC_USER *RPC_AUTH_KEY_RETRIEVAL_FN)();
  83. typedef struct _RPC_POLICY
  84. {
  85. unsigned int Length;
  86. unsigned long EndpointFlags;
  87. unsigned long NICFlags;
  88. } RPC_POLICY, *PRPC_POLICY;
  89. /* RpcServerRegisterIfEx Flags */
  90. #define RPC_IF_AUTOLISTEN 0x1
  91. #define RPC_IF_OLE 0x2
  92. #define RPC_IF_ALLOW_UNKNOWN_AUTHORITY 0x4
  93. #define RPC_IF_ALLOW_SECURE_ONLY 0x8
  94. RPC_STATUS RPC_ENTRY DceErrorInqTextA(RPC_STATUS e, unsigned char *buffer);
  95. RPC_STATUS RPC_ENTRY DceErrorInqTextW(RPC_STATUS e, unsigned short *buffer);
  96. #define DceErrorInqText WINELIB_NAME_AW(DceErrorInqText)
  97. RPCRTAPI void RPC_ENTRY
  98. RpcRaiseException( RPC_STATUS exception );
  99. RPCRTAPI RPC_STATUS RPC_ENTRY
  100. RpcBindingCopy( RPC_BINDING_HANDLE SourceBinding, RPC_BINDING_HANDLE* DestinationBinding );
  101. RPCRTAPI RPC_STATUS RPC_ENTRY
  102. RpcBindingFree( RPC_BINDING_HANDLE* Binding );
  103. RPCRTAPI RPC_STATUS RPC_ENTRY
  104. RpcBindingInqObject( RPC_BINDING_HANDLE Binding, UUID* ObjectUuid );
  105. RPCRTAPI RPC_STATUS RPC_ENTRY
  106. RpcBindingReset( RPC_BINDING_HANDLE Binding );
  107. RPCRTAPI RPC_STATUS RPC_ENTRY
  108. RpcBindingSetObject( RPC_BINDING_HANDLE Binding, UUID* ObjectUuid );
  109. RPCRTAPI RPC_STATUS RPC_ENTRY
  110. RpcObjectSetType( UUID* ObjUuid, UUID* TypeUuid );
  111. RPCRTAPI RPC_STATUS RPC_ENTRY
  112. RpcBindingFromStringBindingA( unsigned char *StringBinding, RPC_BINDING_HANDLE* Binding );
  113. RPCRTAPI RPC_STATUS RPC_ENTRY
  114. RpcBindingFromStringBindingW( unsigned short *StringBinding, RPC_BINDING_HANDLE* Binding );
  115. #define RpcBindingFromStringBinding WINELIB_NAME_AW(RpcBindingFromStringBinding)
  116. RPCRTAPI RPC_STATUS RPC_ENTRY
  117. RpcBindingToStringBindingA( RPC_BINDING_HANDLE Binding, unsigned char **StringBinding );
  118. RPCRTAPI RPC_STATUS RPC_ENTRY
  119. RpcBindingToStringBindingW( RPC_BINDING_HANDLE Binding, unsigned short **StringBinding );
  120. #define RpcBindingFromStringBinding WINELIB_NAME_AW(RpcBindingFromStringBinding)
  121. RPCRTAPI RPC_STATUS RPC_ENTRY
  122. RpcBindingVectorFree( RPC_BINDING_VECTOR** BindingVector );
  123. RPCRTAPI RPC_STATUS RPC_ENTRY
  124. RpcStringBindingComposeA( unsigned char *ObjUuid, unsigned char *Protseq, unsigned char *NetworkAddr,
  125. unsigned char *Endpoint, unsigned char *Options, unsigned char **StringBinding );
  126. RPCRTAPI RPC_STATUS RPC_ENTRY
  127. RpcStringBindingComposeW( unsigned short *ObjUuid, unsigned short *Protseq, unsigned short *NetworkAddr,
  128. unsigned short *Endpoint, unsigned short *Options, unsigned short **StringBinding );
  129. #define RpcStringBindingCompose WINELIB_NAME_AW(RpcStringBindingCompose)
  130. RPCRTAPI RPC_STATUS RPC_ENTRY
  131. RpcStringBindingParseA( unsigned char *StringBinding, unsigned char **ObjUuid, unsigned char **Protseq,
  132. unsigned char **NetworkAddr, unsigned char **Endpoint, unsigned char **NetworkOptions );
  133. RPCRTAPI RPC_STATUS RPC_ENTRY
  134. RpcStringBindingParseW( unsigned short *StringBinding, unsigned short **ObjUuid, unsigned short **Protseq,
  135. unsigned short **NetworkAddr, unsigned short **Endpoint, unsigned short **NetworkOptions );
  136. #define RpcStringBindingParse WINELIB_NAME_AW(RpcStringBindingParse)
  137. RPCRTAPI RPC_STATUS RPC_ENTRY
  138. RpcEpResolveBinding( RPC_BINDING_HANDLE Binding, RPC_IF_HANDLE IfSpec );
  139. RPCRTAPI RPC_STATUS RPC_ENTRY
  140. RpcEpRegisterA( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
  141. UUID_VECTOR* UuidVector, unsigned char *Annotation );
  142. RPCRTAPI RPC_STATUS RPC_ENTRY
  143. RpcEpRegisterW( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
  144. UUID_VECTOR* UuidVector, unsigned short *Annotation );
  145. #define RpcEpRegister WINELIB_NAME_AW(RpcEpRegister)
  146. RPCRTAPI RPC_STATUS RPC_ENTRY
  147. RpcEpRegisterNoReplaceA( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
  148. UUID_VECTOR* UuidVector, unsigned char *Annotation );
  149. RPCRTAPI RPC_STATUS RPC_ENTRY
  150. RpcEpRegisterNoReplaceW( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
  151. UUID_VECTOR* UuidVector, unsigned short *Annotation );
  152. #define RpcEpRegisterNoReplace WINELIB_NAME_AW(RpcEpRegisterNoReplace)
  153. RPCRTAPI RPC_STATUS RPC_ENTRY
  154. RpcEpUnregister( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
  155. UUID_VECTOR* UuidVector );
  156. RPCRTAPI RPC_STATUS RPC_ENTRY
  157. RpcServerInqBindings( RPC_BINDING_VECTOR** BindingVector );
  158. RPCRTAPI RPC_STATUS RPC_ENTRY
  159. RpcServerListen( unsigned int MinimumCallThreads, unsigned int MaxCalls, unsigned int DontWait );
  160. RPCRTAPI RPC_STATUS RPC_ENTRY
  161. RpcMgmtWaitServerListen( void );
  162. RPCRTAPI RPC_STATUS RPC_ENTRY
  163. RpcMgmtStopServerListening( RPC_BINDING_HANDLE Binding );
  164. RPCRTAPI RPC_STATUS RPC_ENTRY
  165. RpcServerRegisterIf( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv );
  166. RPCRTAPI RPC_STATUS RPC_ENTRY
  167. RpcServerRegisterIfEx( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv,
  168. unsigned int Flags, unsigned int MaxCalls, RPC_IF_CALLBACK_FN* IfCallbackFn );
  169. RPCRTAPI RPC_STATUS RPC_ENTRY
  170. RpcServerRegisterIf2( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv,
  171. unsigned int Flags, unsigned int MaxCalls, unsigned int MaxRpcSize, RPC_IF_CALLBACK_FN* IfCallbackFn );
  172. RPCRTAPI RPC_STATUS RPC_ENTRY
  173. RpcServerUnregisterIf( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, unsigned int WaitForCallsToComplete );
  174. RPCRTAPI RPC_STATUS RPC_ENTRY
  175. RpcServerUnregisterIfEx( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, int RundownContextHandles );
  176. RPCRTAPI RPC_STATUS RPC_ENTRY
  177. RpcServerUseProtseqA(unsigned char *Protseq, unsigned int MaxCalls, void *SecurityDescriptor);
  178. RPCRTAPI RPC_STATUS RPC_ENTRY
  179. RpcServerUseProtseqW(unsigned short *Protseq, unsigned int MaxCalls, void *SecurityDescriptor);
  180. #define RpcServerUseProtseq WINELIB_NAME_AW(RpcServerUseProtseq)
  181. RPCRTAPI RPC_STATUS RPC_ENTRY
  182. RpcServerUseProtseqEpA( unsigned char *Protseq, unsigned int MaxCalls, unsigned char *Endpoint, void *SecurityDescriptor );
  183. RPCRTAPI RPC_STATUS RPC_ENTRY
  184. RpcServerUseProtseqEpW( unsigned short *Protseq, unsigned int MaxCalls, unsigned short *Endpoint, void *SecurityDescriptor );
  185. #define RpcServerUseProtseqEp WINELIB_NAME_AW(RpcServerUseProtseqEp)
  186. RPCRTAPI RPC_STATUS RPC_ENTRY
  187. RpcServerUseProtseqEpExA( unsigned char *Protseq, unsigned int MaxCalls, unsigned char *Endpoint, void *SecurityDescriptor,
  188. PRPC_POLICY Policy );
  189. RPCRTAPI RPC_STATUS RPC_ENTRY
  190. RpcServerUseProtseqEpExW( unsigned short *Protseq, unsigned int MaxCalls, unsigned short *Endpoint, void *SecurityDescriptor,
  191. PRPC_POLICY Policy );
  192. #define RpcServerUseProtseqEpEx WINELIB_NAME_AW(RpcServerUseProtseqEpEx)
  193. RPCRTAPI RPC_STATUS RPC_ENTRY
  194. RpcServerRegisterAuthInfoA( unsigned char *ServerPrincName, unsigned long AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,
  195. void *Arg );
  196. RPCRTAPI RPC_STATUS RPC_ENTRY
  197. RpcServerRegisterAuthInfoW( unsigned short *ServerPrincName, unsigned long AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,
  198. void *Arg );
  199. #define RpcServerRegisterAuthInfo WINELIB_NAME_AW(RpcServerRegisterAuthInfo)
  200. RPCRTAPI RPC_STATUS RPC_ENTRY
  201. RpcNetworkIsProtseqValidA( unsigned char *protseq );
  202. RPCRTAPI RPC_STATUS RPC_ENTRY
  203. RpcNetworkIsProtseqValidW( unsigned short *protseq );
  204. #define RpcNetworkIsProtseqValid WINELIB_NAME_AW(RpcNetworkIsProtseqValid)
  205. RPCRTAPI RPC_STATUS RPC_ENTRY
  206. RpcStringFreeA(unsigned char** String);
  207. RPCRTAPI RPC_STATUS RPC_ENTRY
  208. RpcStringFreeW(unsigned short** String);
  209. #define RpcStringFree WINELIB_NAME_AW(RpcStringFree)
  210. RPCRTAPI RPC_STATUS RPC_ENTRY
  211. UuidToStringA( UUID* Uuid, unsigned char** StringUuid );
  212. RPCRTAPI RPC_STATUS RPC_ENTRY
  213. UuidToStringW( UUID* Uuid, unsigned short** StringUuid );
  214. #define UuidToString WINELIB_NAME_AW(UuidToString)
  215. RPCRTAPI RPC_STATUS RPC_ENTRY
  216. UuidFromStringA( unsigned char* StringUuid, UUID* Uuid );
  217. RPCRTAPI RPC_STATUS RPC_ENTRY
  218. UuidFromStringW( unsigned short* StringUuid, UUID* Uuid );
  219. #define UuidFromString WINELIB_NAME_AW(UuidFromString)
  220. RPCRTAPI RPC_STATUS RPC_ENTRY
  221. UuidCreate( UUID* Uuid );
  222. RPCRTAPI RPC_STATUS RPC_ENTRY
  223. UuidCreateSequential( UUID* Uuid );
  224. RPCRTAPI RPC_STATUS RPC_ENTRY
  225. UuidCreateNil( UUID* Uuid );
  226. RPCRTAPI signed int RPC_ENTRY
  227. UuidCompare( UUID* Uuid1, UUID* Uuid2, RPC_STATUS* Status_ );
  228. RPCRTAPI int RPC_ENTRY
  229. UuidEqual( UUID* Uuid1, UUID* Uuid2, RPC_STATUS* Status_ );
  230. RPCRTAPI unsigned short RPC_ENTRY
  231. UuidHash(UUID* Uuid, RPC_STATUS* Status_ );
  232. RPCRTAPI int RPC_ENTRY
  233. UuidIsNil( UUID* Uuid, RPC_STATUS* Status_ );
  234. #include <rpcdcep.h>
  235. #endif /*__WINE_RPCDCE_H */