Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

813 lines
16 KiB

  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. #define TRANSPORT_TYPE_CN 0x01
  455. #define TRANSPORT_TYPE_DG 0x02
  456. #define TRANSPORT_TYPE_LPC 0x04
  457. #define TRANSPORT_TYPE_WMSG 0x08
  458. RPCRTAPI
  459. RPC_STATUS
  460. RPC_ENTRY
  461. I_RpcBindingInqTransportType (
  462. IN RPC_BINDING_HANDLE Binding,
  463. OUT unsigned int __RPC_FAR * Type
  464. );
  465. typedef struct _RPC_TRANSFER_SYNTAX
  466. {
  467. UUID Uuid;
  468. unsigned short VersMajor;
  469. unsigned short VersMinor;
  470. } RPC_TRANSFER_SYNTAX;
  471. RPCRTAPI
  472. RPC_STATUS
  473. RPC_ENTRY
  474. I_RpcIfInqTransferSyntaxes (
  475. IN RPC_IF_HANDLE RpcIfHandle,
  476. OUT RPC_TRANSFER_SYNTAX __RPC_FAR * TransferSyntaxes,
  477. IN unsigned int TransferSyntaxSize,
  478. OUT unsigned int __RPC_FAR * TransferSyntaxCount
  479. );
  480. RPCRTAPI
  481. RPC_STATUS
  482. RPC_ENTRY
  483. I_UuidCreate (
  484. OUT UUID __RPC_FAR * Uuid
  485. );
  486. RPCRTAPI
  487. RPC_STATUS
  488. RPC_ENTRY
  489. I_RpcBindingCopy (
  490. IN RPC_BINDING_HANDLE SourceBinding,
  491. OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
  492. );
  493. RPCRTAPI
  494. RPC_STATUS
  495. RPC_ENTRY
  496. I_RpcBindingIsClientLocal (
  497. IN RPC_BINDING_HANDLE BindingHandle OPTIONAL,
  498. OUT unsigned int __RPC_FAR * ClientLocalFlag
  499. );
  500. RPCRTAPI
  501. RPC_STATUS
  502. RPC_ENTRY
  503. I_RpcBindingInqConnId (
  504. IN RPC_BINDING_HANDLE Binding,
  505. OUT void **ConnId,
  506. OUT int *pfFirstCall
  507. );
  508. RPCRTAPI
  509. void
  510. RPC_ENTRY
  511. I_RpcSsDontSerializeContext (
  512. void
  513. );
  514. RPCRTAPI
  515. RPC_STATUS
  516. RPC_ENTRY
  517. I_RpcLaunchDatagramReceiveThread(
  518. void __RPC_FAR * pAddress
  519. );
  520. RPCRTAPI
  521. RPC_STATUS
  522. RPC_ENTRY
  523. I_RpcServerRegisterForwardFunction (
  524. IN RPC_FORWARD_FUNCTION * pForwardFunction
  525. );
  526. RPC_ADDRESS_CHANGE_FN * RPC_ENTRY
  527. I_RpcServerInqAddressChangeFn();
  528. RPC_STATUS RPC_ENTRY
  529. I_RpcServerSetAddressChangeFn(
  530. IN RPC_ADDRESS_CHANGE_FN * pAddressChangeFn
  531. );
  532. /* The return buffer will contain SOCKADDR_IN for IPv4 */
  533. #define RPC_P_ADDR_FORMAT_TCP_IPV4 1
  534. /* The return buffer will contain SOCKADDR_STORAGE for IPv6 */
  535. #define RPC_P_ADDR_FORMAT_TCP_IPV6 2
  536. RPCRTAPI
  537. RPC_STATUS
  538. RPC_ENTRY
  539. I_RpcServerInqLocalConnAddress (
  540. IN RPC_BINDING_HANDLE Binding,
  541. IN OUT void *Buffer,
  542. IN OUT unsigned long *BufferSize,
  543. OUT unsigned long *AddressFormat
  544. );
  545. RPCRTAPI
  546. RPC_STATUS
  547. RPC_ENTRY
  548. I_RpcTurnOnEEInfoPropagation (
  549. void
  550. );
  551. RPCRTAPI
  552. RPC_STATUS
  553. RPC_ENTRY
  554. I_RpcConnectionInqSockBuffSize(
  555. OUT unsigned long __RPC_FAR * RecvBuffSize,
  556. OUT unsigned long __RPC_FAR * SendBuffSize
  557. );
  558. RPCRTAPI
  559. RPC_STATUS
  560. RPC_ENTRY
  561. I_RpcConnectionSetSockBuffSize(
  562. IN unsigned long RecvBuffSize,
  563. IN unsigned long SendBuffSize
  564. );
  565. typedef
  566. void
  567. (*RPCLT_PDU_FILTER_FUNC) (
  568. IN void *Buffer,
  569. IN unsigned int BufferLength,
  570. IN int fDatagram
  571. );
  572. typedef
  573. void
  574. (__cdecl *RPC_SETFILTER_FUNC) (
  575. IN RPCLT_PDU_FILTER_FUNC pfnFilter
  576. );
  577. #ifndef WINNT
  578. RPCRTAPI
  579. RPC_STATUS
  580. RPC_ENTRY
  581. I_RpcServerStartListening(
  582. void * hWnd
  583. ) ;
  584. RPCRTAPI
  585. RPC_STATUS
  586. RPC_ENTRY
  587. I_RpcServerStopListening(
  588. ) ;
  589. typedef RPC_STATUS (*RPC_BLOCKING_FN) (
  590. IN void * hWnd,
  591. IN void * Context,
  592. IN OPTIONAL void * hSyncEvent
  593. ) ;
  594. RPCRTAPI
  595. RPC_STATUS
  596. RPC_ENTRY
  597. I_RpcBindingSetAsync(
  598. IN RPC_BINDING_HANDLE Binding,
  599. IN RPC_BLOCKING_FN BlockingFn,
  600. IN unsigned long ServerTid
  601. ) ;
  602. RPCRTAPI
  603. RPC_STATUS
  604. RPC_ENTRY
  605. I_RpcSetThreadParams(
  606. IN int fClientFree,
  607. IN OPTIONAL void *Context,
  608. IN OPTIONAL void * hWndClient
  609. );
  610. RPCRTAPI
  611. unsigned int
  612. RPC_ENTRY
  613. I_RpcWindowProc(
  614. IN void * hWnd,
  615. IN unsigned int Message,
  616. IN unsigned int wParam,
  617. IN unsigned long lParam
  618. ) ;
  619. RPCRTAPI
  620. RPC_STATUS
  621. RPC_ENTRY
  622. I_RpcServerUnregisterEndpointA (
  623. IN unsigned char * Protseq,
  624. IN unsigned char * Endpoint
  625. );
  626. RPCRTAPI
  627. RPC_STATUS
  628. RPC_ENTRY
  629. I_RpcServerUnregisterEndpointW (
  630. IN unsigned short * Protseq,
  631. IN unsigned short * Endpoint
  632. );
  633. #ifdef UNICODE
  634. #define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointW
  635. #else
  636. #define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointA
  637. #endif
  638. #endif // WINNT
  639. RPCRTAPI
  640. RPC_STATUS
  641. RPC_ENTRY
  642. I_RpcServerInqTransportType(
  643. OUT unsigned int __RPC_FAR * Type
  644. ) ;
  645. RPCRTAPI
  646. long
  647. RPC_ENTRY
  648. I_RpcMapWin32Status (
  649. IN RPC_STATUS Status
  650. );
  651. typedef RPC_STATUS
  652. (RPC_ENTRY *I_RpcProxyIsValidMachineFn)
  653. (
  654. IN char *pszMachine,
  655. IN char *pszDotMachine,
  656. IN unsigned long dwPortNumber
  657. );
  658. typedef RPC_STATUS
  659. (RPC_ENTRY *I_RpcProxyGetClientAddressFn)
  660. (
  661. IN void *Context,
  662. OUT char *Buffer,
  663. OUT unsigned long *BufferLength
  664. );
  665. typedef RPC_STATUS
  666. (RPC_ENTRY *I_RpcProxyGetConnectionTimeoutFn)
  667. (
  668. OUT unsigned long *ConnectionTimeout
  669. );
  670. typedef struct tagI_RpcProxyCallbackInterface
  671. {
  672. I_RpcProxyIsValidMachineFn IsValidMachineFn;
  673. I_RpcProxyGetClientAddressFn GetClientAddressFn;
  674. I_RpcProxyGetConnectionTimeoutFn GetConnectionTimeoutFn;
  675. } I_RpcProxyCallbackInterface;
  676. #define RPC_PROXY_CONNECTION_TYPE_IN_PROXY 0
  677. #define RPC_PROXY_CONNECTION_TYPE_OUT_PROXY 1
  678. RPCRTAPI
  679. RPC_STATUS
  680. RPC_ENTRY
  681. I_RpcProxyNewConnection (
  682. IN unsigned long ConnectionType,
  683. IN unsigned short *ServerAddress,
  684. IN unsigned short *ServerPort,
  685. IN void *ConnectionParameter,
  686. IN I_RpcProxyCallbackInterface *ProxyCallbackInterface
  687. );
  688. #ifdef __cplusplus
  689. }
  690. #endif
  691. #endif /* __RPCDCEP_H__ */