RpcDceP.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826
  1. /*++
  2. Copyright (c) Microsoft Corporation. All rights reserved.
  3. Module Name:
  4. rpcdcep.h
  5. Abstract:
  6. This module contains the private RPC runtime APIs for use by the
  7. stubs and by support libraries. Applications must not call these
  8. routines.
  9. --*/
  10. #ifndef __RPCDCEP_H__
  11. #define __RPCDCEP_H__
  12. #if _MSC_VER > 1000
  13. #pragma once
  14. #endif
  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif
  18. typedef struct _RPC_VERSION {
  19. unsigned short MajorVersion;
  20. unsigned short MinorVersion;
  21. } RPC_VERSION;
  22. typedef struct _RPC_SYNTAX_IDENTIFIER {
  23. GUID SyntaxGUID;
  24. RPC_VERSION SyntaxVersion;
  25. } RPC_SYNTAX_IDENTIFIER, __RPC_FAR * PRPC_SYNTAX_IDENTIFIER;
  26. typedef struct _RPC_MESSAGE
  27. {
  28. RPC_BINDING_HANDLE Handle;
  29. unsigned long DataRepresentation;
  30. void __RPC_FAR * Buffer;
  31. unsigned int BufferLength;
  32. unsigned int ProcNum;
  33. PRPC_SYNTAX_IDENTIFIER TransferSyntax;
  34. void __RPC_FAR * RpcInterfaceInformation;
  35. void __RPC_FAR * ReservedForRuntime;
  36. RPC_MGR_EPV __RPC_FAR * ManagerEpv;
  37. void __RPC_FAR * ImportContext;
  38. unsigned long RpcFlags;
  39. } RPC_MESSAGE, __RPC_FAR * PRPC_MESSAGE;
  40. typedef RPC_STATUS
  41. RPC_ENTRY RPC_FORWARD_FUNCTION(
  42. IN UUID __RPC_FAR * InterfaceId,
  43. IN RPC_VERSION __RPC_FAR * InterfaceVersion,
  44. IN UUID __RPC_FAR * ObjectId,
  45. IN unsigned char __RPC_FAR * Rpcpro,
  46. IN void __RPC_FAR * __RPC_FAR * ppDestEndpoint);
  47. enum RPC_ADDRESS_CHANGE_TYPE
  48. {
  49. PROTOCOL_NOT_LOADED = 1,
  50. PROTOCOL_LOADED,
  51. PROTOCOL_ADDRESS_CHANGE
  52. };
  53. typedef void
  54. RPC_ENTRY RPC_ADDRESS_CHANGE_FN(
  55. IN void * arg
  56. );
  57. /*
  58. * New context handle flavors.
  59. */
  60. #define RPC_CONTEXT_HANDLE_DEFAULT_GUARD ((void *) -4083) /* FFFFF00D */
  61. #define RPC_CONTEXT_HANDLE_DEFAULT_FLAGS 0x00000000UL
  62. #define RPC_CONTEXT_HANDLE_FLAGS 0x30000000UL
  63. #define RPC_CONTEXT_HANDLE_SERIALIZE 0x10000000UL
  64. #define RPC_CONTEXT_HANDLE_DONT_SERIALIZE 0x20000000UL
  65. /*
  66. * Types of function calls for datagram rpc
  67. */
  68. #define RPC_NCA_FLAGS_DEFAULT 0x00000000 /* 0b000...000 */
  69. #define RPC_NCA_FLAGS_IDEMPOTENT 0x00000001 /* 0b000...001 */
  70. #define RPC_NCA_FLAGS_BROADCAST 0x00000002 /* 0b000...010 */
  71. #define RPC_NCA_FLAGS_MAYBE 0x00000004 /* 0b000...100 */
  72. #define RPC_BUFFER_COMPLETE 0x00001000 /* used by pipes */
  73. #define RPC_BUFFER_PARTIAL 0x00002000 /* used by pipes */
  74. #define RPC_BUFFER_EXTRA 0x00004000 /* used by pipes */
  75. #define RPC_BUFFER_ASYNC 0x00008000 /* used by async rpc */
  76. #define RPC_BUFFER_NONOTIFY 0x00010000 /* used by async pipes */
  77. #define RPCFLG_MESSAGE 0x01000000UL
  78. #define RPCFLG_AUTO_COMPLETE 0x08000000UL
  79. #define RPCFLG_LOCAL_CALL 0x10000000UL
  80. #define RPCFLG_INPUT_SYNCHRONOUS 0x20000000UL
  81. #define RPCFLG_ASYNCHRONOUS 0x40000000UL
  82. #define RPCFLG_NON_NDR 0x80000000UL
  83. #define RPCFLG_HAS_MULTI_SYNTAXES 0x02000000UL
  84. #define RPCFLG_HAS_CALLBACK 0x04000000UL
  85. #define RPC_FLAGS_VALID_BIT 0x00008000
  86. typedef
  87. void
  88. (__RPC_STUB __RPC_FAR * RPC_DISPATCH_FUNCTION) (
  89. IN OUT PRPC_MESSAGE Message
  90. );
  91. typedef struct {
  92. unsigned int DispatchTableCount;
  93. RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable;
  94. LONG_PTR Reserved;
  95. } RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE;
  96. typedef struct _RPC_PROTSEQ_ENDPOINT
  97. {
  98. unsigned char __RPC_FAR * RpcProtocolSequence;
  99. unsigned char __RPC_FAR * Endpoint;
  100. } RPC_PROTSEQ_ENDPOINT, __RPC_FAR * PRPC_PROTSEQ_ENDPOINT;
  101. /*
  102. Both of these types MUST start with the InterfaceId and TransferSyntax.
  103. Look at RpcIfInqId and I_RpcIfInqTransferSyntaxes to see why.
  104. */
  105. #define NT351_INTERFACE_SIZE 0x40
  106. #define RPC_INTERFACE_HAS_PIPES 0x0001
  107. typedef struct _RPC_SERVER_INTERFACE
  108. {
  109. unsigned int Length;
  110. RPC_SYNTAX_IDENTIFIER InterfaceId;
  111. RPC_SYNTAX_IDENTIFIER TransferSyntax;
  112. PRPC_DISPATCH_TABLE DispatchTable;
  113. unsigned int RpcProtseqEndpointCount;
  114. PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
  115. RPC_MGR_EPV __RPC_FAR *DefaultManagerEpv;
  116. void const __RPC_FAR *InterpreterInfo;
  117. unsigned int Flags ;
  118. } RPC_SERVER_INTERFACE, __RPC_FAR * PRPC_SERVER_INTERFACE;
  119. typedef struct _RPC_CLIENT_INTERFACE
  120. {
  121. unsigned int Length;
  122. RPC_SYNTAX_IDENTIFIER InterfaceId;
  123. RPC_SYNTAX_IDENTIFIER TransferSyntax;
  124. PRPC_DISPATCH_TABLE DispatchTable;
  125. unsigned int RpcProtseqEndpointCount;
  126. PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
  127. ULONG_PTR Reserved;
  128. void const __RPC_FAR * InterpreterInfo;
  129. unsigned int Flags ;
  130. } RPC_CLIENT_INTERFACE, __RPC_FAR * PRPC_CLIENT_INTERFACE;
  131. RPCRTAPI
  132. RPC_STATUS
  133. RPC_ENTRY
  134. I_RpcNegotiateTransferSyntax (
  135. IN OUT RPC_MESSAGE __RPC_FAR * Message
  136. );
  137. RPCRTAPI
  138. RPC_STATUS
  139. RPC_ENTRY
  140. I_RpcGetBuffer (
  141. IN OUT RPC_MESSAGE __RPC_FAR * Message
  142. );
  143. RPCRTAPI
  144. RPC_STATUS
  145. RPC_ENTRY
  146. I_RpcGetBufferWithObject (
  147. IN OUT RPC_MESSAGE __RPC_FAR * Message,
  148. IN UUID * ObjectUuid
  149. );
  150. RPCRTAPI
  151. RPC_STATUS
  152. RPC_ENTRY
  153. I_RpcSendReceive (
  154. IN OUT RPC_MESSAGE __RPC_FAR * Message
  155. );
  156. RPCRTAPI
  157. RPC_STATUS
  158. RPC_ENTRY
  159. I_RpcFreeBuffer (
  160. IN OUT RPC_MESSAGE __RPC_FAR * Message
  161. );
  162. RPCRTAPI
  163. RPC_STATUS
  164. RPC_ENTRY
  165. I_RpcSend (
  166. IN OUT PRPC_MESSAGE Message
  167. ) ;
  168. RPCRTAPI
  169. RPC_STATUS
  170. RPC_ENTRY
  171. I_RpcReceive (
  172. IN OUT PRPC_MESSAGE Message,
  173. IN unsigned int Size
  174. ) ;
  175. RPCRTAPI
  176. RPC_STATUS
  177. RPC_ENTRY
  178. I_RpcFreePipeBuffer (
  179. IN OUT RPC_MESSAGE __RPC_FAR * Message
  180. ) ;
  181. RPCRTAPI
  182. RPC_STATUS
  183. RPC_ENTRY
  184. I_RpcReallocPipeBuffer (
  185. IN PRPC_MESSAGE Message,
  186. IN unsigned int NewSize
  187. ) ;
  188. typedef void * I_RPC_MUTEX;
  189. RPCRTAPI
  190. void
  191. RPC_ENTRY
  192. I_RpcRequestMutex (
  193. IN OUT I_RPC_MUTEX * Mutex
  194. );
  195. RPCRTAPI
  196. void
  197. RPC_ENTRY
  198. I_RpcClearMutex (
  199. IN I_RPC_MUTEX Mutex
  200. );
  201. RPCRTAPI
  202. void
  203. RPC_ENTRY
  204. I_RpcDeleteMutex (
  205. IN I_RPC_MUTEX Mutex
  206. );
  207. RPCRTAPI
  208. void __RPC_FAR *
  209. RPC_ENTRY
  210. I_RpcAllocate (
  211. IN unsigned int Size
  212. );
  213. RPCRTAPI
  214. void
  215. RPC_ENTRY
  216. I_RpcFree (
  217. IN void __RPC_FAR * Object
  218. );
  219. RPCRTAPI
  220. void
  221. RPC_ENTRY
  222. I_RpcPauseExecution (
  223. IN unsigned long Milliseconds
  224. );
  225. RPCRTAPI
  226. RPC_STATUS
  227. RPC_ENTRY
  228. I_RpcGetExtendedError (
  229. );
  230. typedef
  231. void
  232. (__RPC_USER __RPC_FAR * PRPC_RUNDOWN) (
  233. void __RPC_FAR * AssociationContext
  234. );
  235. RPCRTAPI
  236. RPC_STATUS
  237. RPC_ENTRY
  238. I_RpcMonitorAssociation (
  239. IN RPC_BINDING_HANDLE Handle,
  240. IN PRPC_RUNDOWN RundownRoutine,
  241. IN void * Context
  242. );
  243. RPCRTAPI
  244. RPC_STATUS
  245. RPC_ENTRY
  246. I_RpcStopMonitorAssociation (
  247. IN RPC_BINDING_HANDLE Handle
  248. );
  249. RPCRTAPI
  250. RPC_BINDING_HANDLE
  251. RPC_ENTRY
  252. I_RpcGetCurrentCallHandle(
  253. void
  254. );
  255. RPCRTAPI
  256. RPC_STATUS
  257. RPC_ENTRY
  258. I_RpcGetAssociationContext (
  259. IN RPC_BINDING_HANDLE BindingHandle,
  260. OUT void __RPC_FAR * __RPC_FAR * AssociationContext
  261. );
  262. RPCRTAPI
  263. void *
  264. RPC_ENTRY
  265. I_RpcGetServerContextList (
  266. IN RPC_BINDING_HANDLE BindingHandle
  267. );
  268. RPCRTAPI
  269. void
  270. RPC_ENTRY
  271. I_RpcSetServerContextList (
  272. IN RPC_BINDING_HANDLE BindingHandle,
  273. OUT void * ServerContextList
  274. );
  275. RPCRTAPI
  276. RPC_STATUS
  277. RPC_ENTRY
  278. I_RpcNsInterfaceExported (
  279. IN unsigned long EntryNameSyntax,
  280. IN unsigned short *EntryName,
  281. IN RPC_SERVER_INTERFACE * RpcInterfaceInformation
  282. );
  283. RPCRTAPI
  284. RPC_STATUS
  285. RPC_ENTRY
  286. I_RpcNsInterfaceUnexported (
  287. IN unsigned long EntryNameSyntax,
  288. IN unsigned short *EntryName,
  289. IN RPC_SERVER_INTERFACE * RpcInterfaceInformation
  290. );
  291. RPCRTAPI
  292. RPC_STATUS
  293. RPC_ENTRY
  294. I_RpcBindingToStaticStringBindingW (
  295. IN RPC_BINDING_HANDLE Binding,
  296. OUT unsigned short **StringBinding
  297. );
  298. RPCRTAPI
  299. RPC_STATUS
  300. RPC_ENTRY
  301. I_RpcBindingInqSecurityContext (
  302. IN RPC_BINDING_HANDLE Binding,
  303. OUT void **SecurityContextHandle
  304. );
  305. RPCRTAPI
  306. RPC_STATUS
  307. RPC_ENTRY
  308. I_RpcBindingInqWireIdForSnego (
  309. IN RPC_BINDING_HANDLE Binding,
  310. OUT unsigned char *WireId
  311. );
  312. RPCRTAPI
  313. RPC_STATUS
  314. RPC_ENTRY
  315. I_RpcBindingInqLocalClientPID (
  316. IN RPC_BINDING_HANDLE Binding,
  317. OUT unsigned long *Pid
  318. );
  319. RPCRTAPI
  320. RPC_STATUS
  321. RPC_ENTRY
  322. I_RpcBindingHandleToAsyncHandle (
  323. IN RPC_BINDING_HANDLE Binding,
  324. OUT void **AsyncHandle
  325. );
  326. #ifdef RPC_UNICODE_SUPPORTED
  327. RPCRTAPI
  328. RPC_STATUS
  329. RPC_ENTRY
  330. I_RpcNsBindingSetEntryNameW (
  331. IN RPC_BINDING_HANDLE Binding,
  332. IN unsigned long EntryNameSyntax,
  333. IN unsigned short __RPC_FAR * EntryName
  334. );
  335. RPCRTAPI
  336. RPC_STATUS
  337. RPC_ENTRY
  338. I_RpcNsBindingSetEntryNameA (
  339. IN RPC_BINDING_HANDLE Binding,
  340. IN unsigned long EntryNameSyntax,
  341. IN unsigned char __RPC_FAR * EntryName
  342. );
  343. RPCRTAPI
  344. RPC_STATUS
  345. RPC_ENTRY
  346. I_RpcServerUseProtseqEp2A (
  347. IN unsigned char __RPC_FAR * NetworkAddress,
  348. IN unsigned char __RPC_FAR * Protseq,
  349. IN unsigned int MaxCalls,
  350. IN unsigned char __RPC_FAR * Endpoint,
  351. IN void __RPC_FAR * SecurityDescriptor,
  352. IN void *Policy
  353. );
  354. RPCRTAPI
  355. RPC_STATUS
  356. RPC_ENTRY
  357. I_RpcServerUseProtseqEp2W (
  358. IN unsigned short __RPC_FAR * NetworkAddress,
  359. IN unsigned short __RPC_FAR * Protseq,
  360. IN unsigned int MaxCalls,
  361. IN unsigned short __RPC_FAR * Endpoint,
  362. IN void __RPC_FAR * SecurityDescriptor,
  363. IN void * Policy
  364. );
  365. RPCRTAPI
  366. RPC_STATUS
  367. RPC_ENTRY
  368. I_RpcServerUseProtseq2W (
  369. IN unsigned short __RPC_FAR * NetworkAddress,
  370. IN unsigned short __RPC_FAR * Protseq,
  371. IN unsigned int MaxCalls,
  372. IN void __RPC_FAR * SecurityDescriptor,
  373. IN void * Policy
  374. );
  375. RPCRTAPI
  376. RPC_STATUS
  377. RPC_ENTRY
  378. I_RpcServerUseProtseq2A (
  379. IN unsigned char __RPC_FAR * NetworkAddress,
  380. IN unsigned char __RPC_FAR * Protseq,
  381. IN unsigned int MaxCalls,
  382. IN void __RPC_FAR * SecurityDescriptor,
  383. IN void * Policy
  384. );
  385. #ifdef UNICODE
  386. #define I_RpcNsBindingSetEntryName I_RpcNsBindingSetEntryNameW
  387. #define I_RpcServerUseProtseqEp2 I_RpcServerUseProtseqEp2W
  388. #define I_RpcServerUseProtseq2 I_RpcServerUseProtseq2W
  389. #else
  390. #define I_RpcNsBindingSetEntryName I_RpcNsBindingSetEntryNameA
  391. #define I_RpcServerUseProtseqEp2 I_RpcServerUseProtseqEp2A
  392. #define I_RpcServerUseProtseq2 I_RpcServerUseProtseq2A
  393. #endif
  394. #else
  395. RPCRTAPI
  396. RPC_STATUS
  397. RPC_ENTRY
  398. I_RpcNsBindingSetEntryName (
  399. IN RPC_BINDING_HANDLE Binding,
  400. IN unsigned long EntryNameSyntax,
  401. IN unsigned char __RPC_FAR * EntryName
  402. );
  403. RPCRTAPI
  404. RPC_STATUS
  405. RPC_ENTRY
  406. I_RpcServerUseProtseq2 (
  407. IN unsigned char __RPC_FAR * NetworkAddress,
  408. IN unsigned char __RPC_FAR * Protseq,
  409. IN unsigned int MaxCalls,
  410. IN void __RPC_FAR * SecurityDescriptor,
  411. IN void * Policy
  412. );
  413. RPCRTAPI
  414. RPC_STATUS
  415. RPC_ENTRY
  416. I_RpcServerUseProtseqEp2 (
  417. IN unsigned char __RPC_FAR * NetworkAddress,
  418. IN unsigned char __RPC_FAR * Protseq,
  419. IN unsigned int MaxCalls,
  420. IN unsigned char __RPC_FAR * Endpoint,
  421. IN void __RPC_FAR * SecurityDescriptor,
  422. IN void * Policy
  423. );
  424. #endif
  425. #ifdef RPC_UNICODE_SUPPORTED
  426. RPCRTAPI
  427. RPC_STATUS
  428. RPC_ENTRY
  429. I_RpcBindingInqDynamicEndpointW (
  430. IN RPC_BINDING_HANDLE Binding,
  431. OUT unsigned short __RPC_FAR * __RPC_FAR * DynamicEndpoint
  432. );
  433. RPCRTAPI
  434. RPC_STATUS
  435. RPC_ENTRY
  436. I_RpcBindingInqDynamicEndpointA (
  437. IN RPC_BINDING_HANDLE Binding,
  438. OUT unsigned char __RPC_FAR * __RPC_FAR * DynamicEndpoint
  439. );
  440. #ifdef UNICODE
  441. #define I_RpcBindingInqDynamicEndpoint I_RpcBindingInqDynamicEndpointW
  442. #else
  443. #define I_RpcBindingInqDynamicEndpoint I_RpcBindingInqDynamicEndpointA
  444. #endif
  445. #else
  446. RPCRTAPI
  447. RPC_STATUS
  448. RPC_ENTRY
  449. I_RpcBindingInqDynamicEndpoint (
  450. IN RPC_BINDING_HANDLE Binding,
  451. OUT unsigned char __RPC_FAR * __RPC_FAR * DynamicEndpoint
  452. );
  453. #endif
  454. RPCRTAPI
  455. RPC_STATUS
  456. RPC_ENTRY
  457. I_RpcServerCheckClientRestriction (
  458. IN RPC_BINDING_HANDLE Context
  459. );
  460. #define TRANSPORT_TYPE_CN 0x01
  461. #define TRANSPORT_TYPE_DG 0x02
  462. #define TRANSPORT_TYPE_LPC 0x04
  463. #define TRANSPORT_TYPE_WMSG 0x08
  464. RPCRTAPI
  465. RPC_STATUS
  466. RPC_ENTRY
  467. I_RpcBindingInqTransportType (
  468. IN RPC_BINDING_HANDLE Binding,
  469. OUT unsigned int __RPC_FAR * Type
  470. );
  471. typedef struct _RPC_TRANSFER_SYNTAX
  472. {
  473. UUID Uuid;
  474. unsigned short VersMajor;
  475. unsigned short VersMinor;
  476. } RPC_TRANSFER_SYNTAX;
  477. RPCRTAPI
  478. RPC_STATUS
  479. RPC_ENTRY
  480. I_RpcIfInqTransferSyntaxes (
  481. IN RPC_IF_HANDLE RpcIfHandle,
  482. OUT RPC_TRANSFER_SYNTAX __RPC_FAR * TransferSyntaxes,
  483. IN unsigned int TransferSyntaxSize,
  484. OUT unsigned int __RPC_FAR * TransferSyntaxCount
  485. );
  486. RPCRTAPI
  487. RPC_STATUS
  488. RPC_ENTRY
  489. I_UuidCreate (
  490. OUT UUID __RPC_FAR * Uuid
  491. );
  492. RPCRTAPI
  493. RPC_STATUS
  494. RPC_ENTRY
  495. I_RpcBindingCopy (
  496. IN RPC_BINDING_HANDLE SourceBinding,
  497. OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
  498. );
  499. RPCRTAPI
  500. RPC_STATUS
  501. RPC_ENTRY
  502. I_RpcBindingIsClientLocal (
  503. IN RPC_BINDING_HANDLE BindingHandle OPTIONAL,
  504. OUT unsigned int __RPC_FAR * ClientLocalFlag
  505. );
  506. RPCRTAPI
  507. RPC_STATUS
  508. RPC_ENTRY
  509. I_RpcBindingInqConnId (
  510. IN RPC_BINDING_HANDLE Binding,
  511. OUT void **ConnId,
  512. OUT int *pfFirstCall
  513. );
  514. RPCRTAPI
  515. void
  516. RPC_ENTRY
  517. I_RpcSsDontSerializeContext (
  518. void
  519. );
  520. RPCRTAPI
  521. RPC_STATUS
  522. RPC_ENTRY
  523. I_RpcLaunchDatagramReceiveThread(
  524. void __RPC_FAR * pAddress
  525. );
  526. RPCRTAPI
  527. RPC_STATUS
  528. RPC_ENTRY
  529. I_RpcServerRegisterForwardFunction (
  530. IN RPC_FORWARD_FUNCTION * pForwardFunction
  531. );
  532. RPC_ADDRESS_CHANGE_FN * RPC_ENTRY
  533. I_RpcServerInqAddressChangeFn();
  534. RPC_STATUS RPC_ENTRY
  535. I_RpcServerSetAddressChangeFn(
  536. IN RPC_ADDRESS_CHANGE_FN * pAddressChangeFn
  537. );
  538. /* The return buffer will contain SOCKADDR_IN for IPv4 */
  539. #define RPC_P_ADDR_FORMAT_TCP_IPV4 1
  540. /* The return buffer will contain SOCKADDR_STORAGE for IPv6 */
  541. #define RPC_P_ADDR_FORMAT_TCP_IPV6 2
  542. RPCRTAPI
  543. RPC_STATUS
  544. RPC_ENTRY
  545. I_RpcServerInqLocalConnAddress (
  546. IN RPC_BINDING_HANDLE Binding,
  547. IN OUT void *Buffer,
  548. IN OUT unsigned long *BufferSize,
  549. OUT unsigned long *AddressFormat
  550. );
  551. RPCRTAPI
  552. void
  553. RPC_ENTRY
  554. I_RpcSessionStrictContextHandle (
  555. );
  556. RPCRTAPI
  557. RPC_STATUS
  558. RPC_ENTRY
  559. I_RpcTurnOnEEInfoPropagation (
  560. void
  561. );
  562. RPCRTAPI
  563. RPC_STATUS
  564. RPC_ENTRY
  565. I_RpcConnectionInqSockBuffSize(
  566. OUT unsigned long __RPC_FAR * RecvBuffSize,
  567. OUT unsigned long __RPC_FAR * SendBuffSize
  568. );
  569. RPCRTAPI
  570. RPC_STATUS
  571. RPC_ENTRY
  572. I_RpcConnectionSetSockBuffSize(
  573. IN unsigned long RecvBuffSize,
  574. IN unsigned long SendBuffSize
  575. );
  576. typedef
  577. void
  578. (*RPCLT_PDU_FILTER_FUNC) (
  579. IN void *Buffer,
  580. IN unsigned int BufferLength,
  581. IN int fDatagram
  582. );
  583. typedef
  584. void
  585. (__cdecl *RPC_SETFILTER_FUNC) (
  586. IN RPCLT_PDU_FILTER_FUNC pfnFilter
  587. );
  588. #ifndef WINNT
  589. RPCRTAPI
  590. RPC_STATUS
  591. RPC_ENTRY
  592. I_RpcServerStartListening(
  593. void * hWnd
  594. ) ;
  595. RPCRTAPI
  596. RPC_STATUS
  597. RPC_ENTRY
  598. I_RpcServerStopListening(
  599. ) ;
  600. typedef RPC_STATUS (*RPC_BLOCKING_FN) (
  601. IN void * hWnd,
  602. IN void * Context,
  603. IN OPTIONAL void * hSyncEvent
  604. ) ;
  605. RPCRTAPI
  606. RPC_STATUS
  607. RPC_ENTRY
  608. I_RpcBindingSetAsync(
  609. IN RPC_BINDING_HANDLE Binding,
  610. IN RPC_BLOCKING_FN BlockingFn,
  611. IN unsigned long ServerTid
  612. ) ;
  613. RPCRTAPI
  614. RPC_STATUS
  615. RPC_ENTRY
  616. I_RpcSetThreadParams(
  617. IN int fClientFree,
  618. IN OPTIONAL void *Context,
  619. IN OPTIONAL void * hWndClient
  620. );
  621. RPCRTAPI
  622. unsigned int
  623. RPC_ENTRY
  624. I_RpcWindowProc(
  625. IN void * hWnd,
  626. IN unsigned int Message,
  627. IN unsigned int wParam,
  628. IN unsigned long lParam
  629. ) ;
  630. RPCRTAPI
  631. RPC_STATUS
  632. RPC_ENTRY
  633. I_RpcServerUnregisterEndpointA (
  634. IN unsigned char * Protseq,
  635. IN unsigned char * Endpoint
  636. );
  637. RPCRTAPI
  638. RPC_STATUS
  639. RPC_ENTRY
  640. I_RpcServerUnregisterEndpointW (
  641. IN unsigned short * Protseq,
  642. IN unsigned short * Endpoint
  643. );
  644. #ifdef UNICODE
  645. #define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointW
  646. #else
  647. #define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointA
  648. #endif
  649. #endif // WINNT
  650. RPCRTAPI
  651. RPC_STATUS
  652. RPC_ENTRY
  653. I_RpcServerInqTransportType(
  654. OUT unsigned int __RPC_FAR * Type
  655. ) ;
  656. RPCRTAPI
  657. long
  658. RPC_ENTRY
  659. I_RpcMapWin32Status (
  660. IN RPC_STATUS Status
  661. );
  662. typedef RPC_STATUS
  663. (RPC_ENTRY *I_RpcProxyIsValidMachineFn)
  664. (
  665. IN char *pszMachine,
  666. IN char *pszDotMachine,
  667. IN unsigned long dwPortNumber
  668. );
  669. typedef RPC_STATUS
  670. (RPC_ENTRY *I_RpcProxyGetClientAddressFn)
  671. (
  672. IN void *Context,
  673. OUT char *Buffer,
  674. OUT unsigned long *BufferLength
  675. );
  676. typedef RPC_STATUS
  677. (RPC_ENTRY *I_RpcProxyGetConnectionTimeoutFn)
  678. (
  679. OUT unsigned long *ConnectionTimeout
  680. );
  681. typedef struct tagI_RpcProxyCallbackInterface
  682. {
  683. I_RpcProxyIsValidMachineFn IsValidMachineFn;
  684. I_RpcProxyGetClientAddressFn GetClientAddressFn;
  685. I_RpcProxyGetConnectionTimeoutFn GetConnectionTimeoutFn;
  686. } I_RpcProxyCallbackInterface;
  687. #define RPC_PROXY_CONNECTION_TYPE_IN_PROXY 0
  688. #define RPC_PROXY_CONNECTION_TYPE_OUT_PROXY 1
  689. RPCRTAPI
  690. RPC_STATUS
  691. RPC_ENTRY
  692. I_RpcProxyNewConnection (
  693. IN unsigned long ConnectionType,
  694. IN unsigned short *ServerAddress,
  695. IN unsigned short *ServerPort,
  696. IN void *ConnectionParameter,
  697. IN I_RpcProxyCallbackInterface *ProxyCallbackInterface
  698. );
  699. #ifdef __cplusplus
  700. }
  701. #endif
  702. #endif /* __RPCDCEP_H__ */