Leaked source code of windows server 2003
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.

822 lines
18 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_RpcBindingInqMarshalledTargetInfo (
  316. IN RPC_BINDING_HANDLE Binding,
  317. OUT unsigned long *MarshalledTargetInfoLength,
  318. OUT unsigned char **MarshalledTargetInfo
  319. );
  320. RPCRTAPI
  321. RPC_STATUS
  322. RPC_ENTRY
  323. I_RpcBindingInqLocalClientPID (
  324. IN RPC_BINDING_HANDLE Binding,
  325. OUT unsigned long *Pid
  326. );
  327. RPCRTAPI
  328. RPC_STATUS
  329. RPC_ENTRY
  330. I_RpcBindingHandleToAsyncHandle (
  331. IN RPC_BINDING_HANDLE Binding,
  332. OUT void **AsyncHandle
  333. );
  334. #ifdef RPC_UNICODE_SUPPORTED
  335. RPCRTAPI
  336. RPC_STATUS
  337. RPC_ENTRY
  338. I_RpcNsBindingSetEntryNameW (
  339. IN RPC_BINDING_HANDLE Binding,
  340. IN unsigned long EntryNameSyntax,
  341. IN unsigned short __RPC_FAR * EntryName
  342. );
  343. RPCRTAPI
  344. RPC_STATUS
  345. RPC_ENTRY
  346. I_RpcNsBindingSetEntryNameA (
  347. IN RPC_BINDING_HANDLE Binding,
  348. IN unsigned long EntryNameSyntax,
  349. IN unsigned char __RPC_FAR * EntryName
  350. );
  351. RPCRTAPI
  352. RPC_STATUS
  353. RPC_ENTRY
  354. I_RpcServerUseProtseqEp2A (
  355. IN unsigned char __RPC_FAR * NetworkAddress,
  356. IN unsigned char __RPC_FAR * Protseq,
  357. IN unsigned int MaxCalls,
  358. IN unsigned char __RPC_FAR * Endpoint,
  359. IN void __RPC_FAR * SecurityDescriptor,
  360. IN void *Policy
  361. );
  362. RPCRTAPI
  363. RPC_STATUS
  364. RPC_ENTRY
  365. I_RpcServerUseProtseqEp2W (
  366. IN unsigned short __RPC_FAR * NetworkAddress,
  367. IN unsigned short __RPC_FAR * Protseq,
  368. IN unsigned int MaxCalls,
  369. IN unsigned short __RPC_FAR * Endpoint,
  370. IN void __RPC_FAR * SecurityDescriptor,
  371. IN void * Policy
  372. );
  373. RPCRTAPI
  374. RPC_STATUS
  375. RPC_ENTRY
  376. I_RpcServerUseProtseq2W (
  377. IN unsigned short __RPC_FAR * NetworkAddress,
  378. IN unsigned short __RPC_FAR * Protseq,
  379. IN unsigned int MaxCalls,
  380. IN void __RPC_FAR * SecurityDescriptor,
  381. IN void * Policy
  382. );
  383. RPCRTAPI
  384. RPC_STATUS
  385. RPC_ENTRY
  386. I_RpcServerUseProtseq2A (
  387. IN unsigned char __RPC_FAR * NetworkAddress,
  388. IN unsigned char __RPC_FAR * Protseq,
  389. IN unsigned int MaxCalls,
  390. IN void __RPC_FAR * SecurityDescriptor,
  391. IN void * Policy
  392. );
  393. #ifdef UNICODE
  394. #define I_RpcNsBindingSetEntryName I_RpcNsBindingSetEntryNameW
  395. #define I_RpcServerUseProtseqEp2 I_RpcServerUseProtseqEp2W
  396. #define I_RpcServerUseProtseq2 I_RpcServerUseProtseq2W
  397. #else
  398. #define I_RpcNsBindingSetEntryName I_RpcNsBindingSetEntryNameA
  399. #define I_RpcServerUseProtseqEp2 I_RpcServerUseProtseqEp2A
  400. #define I_RpcServerUseProtseq2 I_RpcServerUseProtseq2A
  401. #endif
  402. #else
  403. RPCRTAPI
  404. RPC_STATUS
  405. RPC_ENTRY
  406. I_RpcNsBindingSetEntryName (
  407. IN RPC_BINDING_HANDLE Binding,
  408. IN unsigned long EntryNameSyntax,
  409. IN unsigned char __RPC_FAR * EntryName
  410. );
  411. RPCRTAPI
  412. RPC_STATUS
  413. RPC_ENTRY
  414. I_RpcServerUseProtseq2 (
  415. IN unsigned char __RPC_FAR * NetworkAddress,
  416. IN unsigned char __RPC_FAR * Protseq,
  417. IN unsigned int MaxCalls,
  418. IN void __RPC_FAR * SecurityDescriptor,
  419. IN void * Policy
  420. );
  421. RPCRTAPI
  422. RPC_STATUS
  423. RPC_ENTRY
  424. I_RpcServerUseProtseqEp2 (
  425. IN unsigned char __RPC_FAR * NetworkAddress,
  426. IN unsigned char __RPC_FAR * Protseq,
  427. IN unsigned int MaxCalls,
  428. IN unsigned char __RPC_FAR * Endpoint,
  429. IN void __RPC_FAR * SecurityDescriptor,
  430. IN void * Policy
  431. );
  432. #endif
  433. #ifdef RPC_UNICODE_SUPPORTED
  434. RPCRTAPI
  435. RPC_STATUS
  436. RPC_ENTRY
  437. I_RpcBindingInqDynamicEndpointW (
  438. IN RPC_BINDING_HANDLE Binding,
  439. OUT unsigned short __RPC_FAR * __RPC_FAR * DynamicEndpoint
  440. );
  441. RPCRTAPI
  442. RPC_STATUS
  443. RPC_ENTRY
  444. I_RpcBindingInqDynamicEndpointA (
  445. IN RPC_BINDING_HANDLE Binding,
  446. OUT unsigned char __RPC_FAR * __RPC_FAR * DynamicEndpoint
  447. );
  448. #ifdef UNICODE
  449. #define I_RpcBindingInqDynamicEndpoint I_RpcBindingInqDynamicEndpointW
  450. #else
  451. #define I_RpcBindingInqDynamicEndpoint I_RpcBindingInqDynamicEndpointA
  452. #endif
  453. #else
  454. RPCRTAPI
  455. RPC_STATUS
  456. RPC_ENTRY
  457. I_RpcBindingInqDynamicEndpoint (
  458. IN RPC_BINDING_HANDLE Binding,
  459. OUT unsigned char __RPC_FAR * __RPC_FAR * DynamicEndpoint
  460. );
  461. #endif
  462. #define TRANSPORT_TYPE_CN 0x01
  463. #define TRANSPORT_TYPE_DG 0x02
  464. #define TRANSPORT_TYPE_LPC 0x04
  465. #define TRANSPORT_TYPE_WMSG 0x08
  466. RPCRTAPI
  467. RPC_STATUS
  468. RPC_ENTRY
  469. I_RpcBindingInqTransportType (
  470. IN RPC_BINDING_HANDLE Binding,
  471. OUT unsigned int __RPC_FAR * Type
  472. );
  473. typedef struct _RPC_TRANSFER_SYNTAX
  474. {
  475. UUID Uuid;
  476. unsigned short VersMajor;
  477. unsigned short VersMinor;
  478. } RPC_TRANSFER_SYNTAX;
  479. RPCRTAPI
  480. RPC_STATUS
  481. RPC_ENTRY
  482. I_RpcIfInqTransferSyntaxes (
  483. IN RPC_IF_HANDLE RpcIfHandle,
  484. OUT RPC_TRANSFER_SYNTAX __RPC_FAR * TransferSyntaxes,
  485. IN unsigned int TransferSyntaxSize,
  486. OUT unsigned int __RPC_FAR * TransferSyntaxCount
  487. );
  488. RPCRTAPI
  489. RPC_STATUS
  490. RPC_ENTRY
  491. I_UuidCreate (
  492. OUT UUID __RPC_FAR * Uuid
  493. );
  494. RPCRTAPI
  495. RPC_STATUS
  496. RPC_ENTRY
  497. I_RpcBindingCopy (
  498. IN RPC_BINDING_HANDLE SourceBinding,
  499. OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
  500. );
  501. RPCRTAPI
  502. RPC_STATUS
  503. RPC_ENTRY
  504. I_RpcBindingIsClientLocal (
  505. IN RPC_BINDING_HANDLE BindingHandle OPTIONAL,
  506. OUT unsigned int __RPC_FAR * ClientLocalFlag
  507. );
  508. RPCRTAPI
  509. RPC_STATUS
  510. RPC_ENTRY
  511. I_RpcBindingInqConnId (
  512. IN RPC_BINDING_HANDLE Binding,
  513. OUT void **ConnId,
  514. OUT int *pfFirstCall
  515. );
  516. RPCRTAPI
  517. void
  518. RPC_ENTRY
  519. I_RpcSsDontSerializeContext (
  520. void
  521. );
  522. RPCRTAPI
  523. RPC_STATUS
  524. RPC_ENTRY
  525. I_RpcLaunchDatagramReceiveThread(
  526. void __RPC_FAR * pAddress
  527. );
  528. RPCRTAPI
  529. RPC_STATUS
  530. RPC_ENTRY
  531. I_RpcServerRegisterForwardFunction (
  532. IN RPC_FORWARD_FUNCTION * pForwardFunction
  533. );
  534. RPC_ADDRESS_CHANGE_FN * RPC_ENTRY
  535. I_RpcServerInqAddressChangeFn();
  536. RPC_STATUS RPC_ENTRY
  537. I_RpcServerSetAddressChangeFn(
  538. IN RPC_ADDRESS_CHANGE_FN * pAddressChangeFn
  539. );
  540. /* The return buffer will contain SOCKADDR_IN for IPv4 */
  541. #define RPC_P_ADDR_FORMAT_TCP_IPV4 1
  542. /* The return buffer will contain SOCKADDR_STORAGE for IPv6 */
  543. #define RPC_P_ADDR_FORMAT_TCP_IPV6 2
  544. RPCRTAPI
  545. RPC_STATUS
  546. RPC_ENTRY
  547. I_RpcServerInqLocalConnAddress (
  548. IN RPC_BINDING_HANDLE Binding,
  549. IN OUT void *Buffer,
  550. IN OUT unsigned long *BufferSize,
  551. OUT unsigned long *AddressFormat
  552. );
  553. RPCRTAPI
  554. RPC_STATUS
  555. RPC_ENTRY
  556. I_RpcTurnOnEEInfoPropagation (
  557. void
  558. );
  559. RPCRTAPI
  560. RPC_STATUS
  561. RPC_ENTRY
  562. I_RpcConnectionInqSockBuffSize(
  563. OUT unsigned long __RPC_FAR * RecvBuffSize,
  564. OUT unsigned long __RPC_FAR * SendBuffSize
  565. );
  566. RPCRTAPI
  567. RPC_STATUS
  568. RPC_ENTRY
  569. I_RpcConnectionSetSockBuffSize(
  570. IN unsigned long RecvBuffSize,
  571. IN unsigned long SendBuffSize
  572. );
  573. typedef
  574. void
  575. (*RPCLT_PDU_FILTER_FUNC) (
  576. IN void *Buffer,
  577. IN unsigned int BufferLength,
  578. IN int fDatagram
  579. );
  580. typedef
  581. void
  582. (__cdecl *RPC_SETFILTER_FUNC) (
  583. IN RPCLT_PDU_FILTER_FUNC pfnFilter
  584. );
  585. #ifndef WINNT
  586. RPCRTAPI
  587. RPC_STATUS
  588. RPC_ENTRY
  589. I_RpcServerStartListening(
  590. void * hWnd
  591. ) ;
  592. RPCRTAPI
  593. RPC_STATUS
  594. RPC_ENTRY
  595. I_RpcServerStopListening(
  596. ) ;
  597. typedef RPC_STATUS (*RPC_BLOCKING_FN) (
  598. IN void * hWnd,
  599. IN void * Context,
  600. IN OPTIONAL void * hSyncEvent
  601. ) ;
  602. RPCRTAPI
  603. RPC_STATUS
  604. RPC_ENTRY
  605. I_RpcBindingSetAsync(
  606. IN RPC_BINDING_HANDLE Binding,
  607. IN RPC_BLOCKING_FN BlockingFn,
  608. IN unsigned long ServerTid
  609. ) ;
  610. RPCRTAPI
  611. RPC_STATUS
  612. RPC_ENTRY
  613. I_RpcSetThreadParams(
  614. IN int fClientFree,
  615. IN OPTIONAL void *Context,
  616. IN OPTIONAL void * hWndClient
  617. );
  618. RPCRTAPI
  619. unsigned int
  620. RPC_ENTRY
  621. I_RpcWindowProc(
  622. IN void * hWnd,
  623. IN unsigned int Message,
  624. IN unsigned int wParam,
  625. IN unsigned long lParam
  626. ) ;
  627. RPCRTAPI
  628. RPC_STATUS
  629. RPC_ENTRY
  630. I_RpcServerUnregisterEndpointA (
  631. IN unsigned char * Protseq,
  632. IN unsigned char * Endpoint
  633. );
  634. RPCRTAPI
  635. RPC_STATUS
  636. RPC_ENTRY
  637. I_RpcServerUnregisterEndpointW (
  638. IN unsigned short * Protseq,
  639. IN unsigned short * Endpoint
  640. );
  641. #ifdef UNICODE
  642. #define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointW
  643. #else
  644. #define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointA
  645. #endif
  646. #endif // WINNT
  647. RPCRTAPI
  648. RPC_STATUS
  649. RPC_ENTRY
  650. I_RpcServerInqTransportType(
  651. OUT unsigned int __RPC_FAR * Type
  652. ) ;
  653. RPCRTAPI
  654. long
  655. RPC_ENTRY
  656. I_RpcMapWin32Status (
  657. IN RPC_STATUS Status
  658. );
  659. typedef RPC_STATUS
  660. (RPC_ENTRY *I_RpcProxyIsValidMachineFn)
  661. (
  662. IN char *pszMachine,
  663. IN char *pszDotMachine,
  664. IN unsigned long dwPortNumber
  665. );
  666. typedef RPC_STATUS
  667. (RPC_ENTRY *I_RpcProxyGetClientAddressFn)
  668. (
  669. IN void *Context,
  670. OUT char *Buffer,
  671. OUT unsigned long *BufferLength
  672. );
  673. typedef RPC_STATUS
  674. (RPC_ENTRY *I_RpcProxyGetConnectionTimeoutFn)
  675. (
  676. OUT unsigned long *ConnectionTimeout
  677. );
  678. typedef struct tagI_RpcProxyCallbackInterface
  679. {
  680. I_RpcProxyIsValidMachineFn IsValidMachineFn;
  681. I_RpcProxyGetClientAddressFn GetClientAddressFn;
  682. I_RpcProxyGetConnectionTimeoutFn GetConnectionTimeoutFn;
  683. } I_RpcProxyCallbackInterface;
  684. #define RPC_PROXY_CONNECTION_TYPE_IN_PROXY 0
  685. #define RPC_PROXY_CONNECTION_TYPE_OUT_PROXY 1
  686. RPCRTAPI
  687. RPC_STATUS
  688. RPC_ENTRY
  689. I_RpcProxyNewConnection (
  690. IN unsigned long ConnectionType,
  691. IN unsigned short *ServerAddress,
  692. IN unsigned short *ServerPort,
  693. IN void *ConnectionParameter,
  694. IN I_RpcProxyCallbackInterface *ProxyCallbackInterface
  695. );
  696. #ifdef __cplusplus
  697. }
  698. #endif
  699. #endif /* __RPCDCEP_H__ */