|
|
1.1 ! root 1: /*********************************************************/ ! 2: /** Microsoft LAN Manager **/ ! 3: /** Copyright(c) Microsoft Corp., 1987-1990 **/ ! 4: /** **/ ! 5: /** Prototypes for the RPC Runtime APIs. **/ ! 6: /** **/ ! 7: /*********************************************************/ ! 8: ! 9: #ifndef __RPCBSE_H__ ! 10: #define __RPCBSE_H__ ! 11: ! 12: ! 13: #define IN ! 14: #define OUT ! 15: #define OPTIONAL ! 16: ! 17: typedef RPC_HANDLE handle_t; ! 18: typedef RPC_HANDLE PAPI * PRPC_HANDLE; ! 19: typedef char small; ! 20: typedef unsigned char byte; ! 21: typedef unsigned char boolean; ! 22: ! 23: typedef struct _RPC_VERSION { ! 24: unsigned short MajorVersion; ! 25: unsigned short MinorVersion; ! 26: } RPC_VERSION; ! 27: ! 28: #ifndef GUID_DEFINED ! 29: #define GUID_DEFINED ! 30: typedef struct _GUID { ! 31: unsigned long Data1; ! 32: unsigned short Data2; ! 33: unsigned short Data3; ! 34: unsigned char Data4[8]; ! 35: } GUID; ! 36: #endif ! 37: ! 38: typedef struct _RPC_SYNTAX_IDENTIFIER { ! 39: GUID SyntaxGUID; ! 40: RPC_VERSION SyntaxVersion; ! 41: } RPC_SYNTAX_IDENTIFIER, PAPI * PRPC_SYNTAX_IDENTIFIER; ! 42: ! 43: typedef struct _RPC_PROTOCOL { ! 44: unsigned char MajorProtocol; ! 45: unsigned char MinorProtocol; ! 46: } RPC_PROTOCOL, PAPI * PRPC_PROTOCOL; ! 47: ! 48: #define RPC_STACK_TYPE_V1 0 ! 49: ! 50: #define OSF_RPC_V20_VERS 5 ! 51: #define OSF_RPC_V20_VERS_MINOR 0 ! 52: ! 53: #define RPC_TRANSPORT_NAMEPIPE 1 ! 54: #define RPC_TRANSPORT_LPC 2 ! 55: #define RPC_TRANSPORT_TCP 3 ! 56: #define RPC_TRANSPORT_DNET 4 ! 57: #define RPC_TRANSPORT_NETBIOS 5 ! 58: ! 59: // RPC protocol level security should be assigned number between 1 and 255. ! 60: ! 61: #define RPC_SECURITY_DS_HACK 250 ! 62: ! 63: // Transport level security should be assigned numbers greater than 255. ! 64: ! 65: #define RPC_SECURITY_QOS 500 ! 66: ! 67: typedef struct _RPC_PROTOCOL_STACK { ! 68: unsigned long StackType; ! 69: RPC_SYNTAX_IDENTIFIER InterfaceID; ! 70: unsigned long TransferSyntaxCount; ! 71: PRPC_SYNTAX_IDENTIFIER TransferSyntaxes; ! 72: unsigned long SecurityType; ! 73: unsigned long SecurityInfoLength; ! 74: unsigned char PAPI * SecurityInfo; ! 75: unsigned long RPCProtocolCount; ! 76: PRPC_PROTOCOL RPCProtocols; ! 77: unsigned long TransportType; ! 78: unsigned long TransportInfoLength; ! 79: unsigned char PAPI * TransportInfo; ! 80: } RPC_PROTOCOL_STACK, PAPI * PRPC_PROTOCOL_STACK; ! 81: ! 82: typedef struct { ! 83: unsigned char PAPI * UserName; ! 84: unsigned char PAPI * ComputerName; ! 85: unsigned short Privilege; ! 86: unsigned long AuthFlags; ! 87: } RPC_CLIENT_INFORMATION1, PAPI * PRPC_CLIENT_INFORMATION1; ! 88: ! 89: typedef struct { ! 90: unsigned int Count; ! 91: unsigned long TransportTypes[1]; ! 92: } RPC_CONFIG_TRANSPORT, PAPI * PRPC_CONFIG_TRANSPORT; ! 93: ! 94: typedef struct{ ! 95: unsigned long ConfigResourceWait; ! 96: } RPC_CONFIG_RESOURCE_WAIT, PAPI * PRPC_CONFIG_RESOURCE_WAIT; ! 97: ! 98: typedef struct { ! 99: RPC_HANDLE BindingHandle; ! 100: RPC_HANDLE PreviousCallHandle; ! 101: } RPC_CLIENT_CALL_INFORMATION, PAPI * PRPC_CLIENT_CALL_INFORMATION; ! 102: ! 103: typedef struct{ ! 104: RPC_HANDLE PreviousCallHandle; ! 105: RPC_SYNTAX_IDENTIFIER InterfaceID; ! 106: RPC_SYNTAX_IDENTIFIER TransferSyntax; ! 107: unsigned long DataRepresentation; ! 108: } RPC_SERVER_CALL_INFORMATION, PAPI * PRPC_SERVER_CALL_INFORMATION; ! 109: ! 110: typedef struct{ ! 111: RPC_SYNTAX_IDENTIFIER InterfaceID; ! 112: RPC_SYNTAX_IDENTIFIER TransferSyntax; ! 113: } RPC_CLIENT_BINDING_INFORMATION, PAPI * PRPC_CLIENT_BINDING_INFORMATION; ! 114: ! 115: typedef struct{ ! 116: RPC_HANDLE ServerHandle; ! 117: RPC_HANDLE AddressHandle; ! 118: RPC_HANDLE InterfaceHandle; ! 119: } RPC_SERVER_BINDING_INFORMATION, PAPI * PRPC_SERVER_BINDING_INFORMATION; ! 120: ! 121: typedef struct { ! 122: RPC_HANDLE Handle; ! 123: unsigned long DataRepresentation; ! 124: void PAPI * Buffer; ! 125: unsigned int BufferLength; ! 126: unsigned int ProcNum; ! 127: PRPC_SYNTAX_IDENTIFIER TransferSyntax; ! 128: long reserved; ! 129: } RPC_MESSAGE, PAPI * PRPC_MESSAGE; ! 130: ! 131: typedef enum { ! 132: RpcStopWhenUnbind = 1, ! 133: RpcStopWhenCallsComplete, ! 134: RpcStopImmediate ! 135: } RPC_STOP_FLAG; ! 136: ! 137: typedef enum { ! 138: RpcMinimizeResourceUsage, ! 139: RpcNormalResourceUsage, ! 140: RpcMaximizeSpeed ! 141: } RPC_RESOURCE_USAGE; ! 142: ! 143: typedef enum { ! 144: RpcScopeLocal = 0, ! 145: RpcScopeDomain = 1 ! 146: } RPC_SCOPE; ! 147: ! 148: typedef enum { ! 149: RpcConfigTransport = 1, ! 150: RpcConfigResourceWait = 2 ! 151: } RPC_CONFIG; ! 152: ! 153: typedef enum { ! 154: RpcResponseTypeReply = 0, ! 155: RpcResponseTypeRemoteFault = 1 ! 156: } RPC_RESPONSE_TYPES; ! 157: ! 158: ! 159: typedef void (PAPI * RPC_DISPATCH_FUNCTION) (IN OUT PRPC_MESSAGE Message); ! 160: ! 161: typedef struct { ! 162: unsigned int DispatchTableCount; ! 163: RPC_DISPATCH_FUNCTION PAPI * DispatchTable; ! 164: int Reserved; ! 165: } RPC_DISPATCH_TABLE, PAPI * PRPC_DISPATCH_TABLE; ! 166: ! 167: typedef enum _RPC_CLIENT_PRIORITY { ! 168: RpcPriorityReject = 0, ! 169: RpcPriorityNormal = 10, ! 170: RpcPriorityHigh = 20, ! 171: RpcPriorityCritical = 30 ! 172: } RPC_CLIENT_PRIORITY; ! 173: ! 174: typedef ! 175: int /* RPC_CLIENT_PRIORITY -- BUGBUG: Glock 1.2 replace int with this*/ ! 176: (PAPI * RPC_NEW_CLIENT_EVENT) ( ! 177: IN RPC_HANDLE CallHandle ! 178: ); ! 179: ! 180: typedef enum _RPC_THREAD_EVENT_TYPE { ! 181: RpcCreateThreadRequest, ! 182: RpcDeleteThreadNotify, ! 183: RpcInitializeThread, ! 184: RpcFinalizeThread ! 185: } RPC_THREAD_EVENT_TYPE; ! 186: ! 187: typedef ! 188: unsigned int ! 189: (PAPI * RPC_THREAD_EVENT) ( ! 190: IN RPC_THREAD_EVENT_TYPE Event ! 191: ); ! 192: ! 193: typedef ! 194: void ! 195: (PAPI * RPC_MANAGER_ERROR_EVENT) ( ! 196: IN void PAPI * ErrorObject, ! 197: IN RPC_STATUS ErrorCode ! 198: ); ! 199: ! 200: typedef struct { ! 201: RPC_HANDLE CallHandle; ! 202: unsigned int ProcNum; ! 203: } RPC_REPLY_FAILED_INFORMATION, PAPI * PRPC_REPLY_FAILED_INFORMATION; ! 204: ! 205: typedef struct { ! 206: unsigned int Count; ! 207: RPC_NEW_CLIENT_EVENT NewClientEvent; ! 208: RPC_THREAD_EVENT ThreadEvent; ! 209: RPC_MANAGER_ERROR_EVENT ManagerErrorEvent; ! 210: } RPC_EVENT_HANDLERS, PAPI * PRPC_EVENT_HANDLERS; ! 211: ! 212: typedef ! 213: void ! 214: (PAPI * PRPC_RUNDOWN) ( ! 215: void PAPI * AssociationContext ! 216: ); ! 217: ! 218: ! 219: /*** Server API's ***/ ! 220: ! 221: RPC_STATUS RPC_ENTRY ! 222: RpcCreateServer ( ! 223: IN PRPC_EVENT_HANDLERS EventHandlers OPTIONAL, ! 224: OUT PRPC_HANDLE ServerHandle ! 225: ); ! 226: ! 227: RPC_STATUS RPC_ENTRY ! 228: RpcDeleteServer ( ! 229: IN RPC_HANDLE ServerHandle, ! 230: IN RPC_STOP_FLAG StopFlag ! 231: ); ! 232: ! 233: #define RPC_ADDRESS_AVOID_DEADLOCK 1 ! 234: ! 235: RPC_STATUS RPC_ENTRY ! 236: RpcAddAddress ( ! 237: IN RPC_HANDLE ServerHandle, ! 238: IN PRPC_PROTOCOL_STACK RequestedAddress, ! 239: IN unsigned int AddressFlags, ! 240: OUT PRPC_HANDLE AddressHandle, ! 241: IN void PAPI * SecurityDescriptor, ! 242: IN RPC_RESOURCE_USAGE ResourceUsage, ! 243: IN unsigned long Timeout OPTIONAL ! 244: ); ! 245: ! 246: RPC_STATUS RPC_ENTRY ! 247: RpcRemoveAddress ( ! 248: IN RPC_HANDLE AddressHandle, ! 249: IN RPC_STOP_FLAG StopFlag ! 250: ); ! 251: ! 252: RPC_STATUS RPC_ENTRY ! 253: RpcAddInterface ( ! 254: IN RPC_HANDLE ServerHandle, ! 255: IN PRPC_PROTOCOL_STACK ProtocolStack, ! 256: OUT PRPC_HANDLE InterfaceHandle, ! 257: IN void PAPI * SecurityDescriptor, ! 258: IN PRPC_DISPATCH_TABLE DispatchTable ! 259: ); ! 260: ! 261: RPC_STATUS RPC_ENTRY ! 262: RpcRemoveInterface ( ! 263: IN RPC_HANDLE InterfaceHandle, ! 264: IN RPC_STOP_FLAG StopFlag ! 265: ); ! 266: ! 267: RPC_STATUS RPC_ENTRY ! 268: RpcMonitorAssociation ( ! 269: IN RPC_HANDLE Handle, ! 270: IN PRPC_RUNDOWN RundownRoutine, ! 271: IN void *pContext ! 272: ); ! 273: ! 274: RPC_STATUS RPC_ENTRY ! 275: RpcStopMonitorAssociation ( ! 276: IN RPC_HANDLE Handle ! 277: ); ! 278: ! 279: ! 280: RPC_STATUS RPC_ENTRY ! 281: RpcExport ( ! 282: IN RPC_HANDLE ExportHandle, ! 283: IN RPC_SCOPE Scope, ! 284: IN PRPC_PROTOCOL_STACK ProtocolStack ! 285: ); ! 286: ! 287: ! 288: RPC_STATUS RPC_ENTRY ! 289: RpcWithdraw ( ! 290: IN RPC_HANDLE WithdrawHandle, ! 291: IN PRPC_PROTOCOL_STACK ProtocolStack ! 292: ); ! 293: ! 294: RPC_STATUS RPC_ENTRY ! 295: RpcQueryClient ( ! 296: IN RPC_HANDLE Handle, ! 297: IN unsigned int ClientInformationLevel, ! 298: OUT void PAPI * ClientInformation, ! 299: IN OUT unsigned int PAPI * ClientInformationLength ! 300: ); ! 301: ! 302: RPC_HANDLE RPC_ENTRY ! 303: RpcGetCurrentCallHandle( ! 304: OUT PRPC_SERVER_CALL_INFORMATION CallInformation OPTIONAL ! 305: ); ! 306: ! 307: RPC_STATUS RPC_ENTRY ! 308: RpcGetAssociationContext ( ! 309: OUT void PAPI * PAPI * AssociationContext ! 310: ); ! 311: ! 312: RPC_STATUS RPC_ENTRY ! 313: RpcSetAssociationContext ( ! 314: OUT void PAPI * AssociationContext ! 315: ); ! 316: ! 317: ! 318: /*** The following are client side API's ***/ ! 319: ! 320: RPC_STATUS RPC_ENTRY ! 321: RpcImport ( ! 322: IN unsigned char PAPI * DomainName, ! 323: IN RPC_SCOPE Scope, ! 324: IN PRPC_PROTOCOL_STACK ProtocolStack, ! 325: IN PRPC_DISPATCH_TABLE CallBackTable OPTIONAL, ! 326: OUT PRPC_HANDLE BindingHandle ! 327: ); ! 328: ! 329: RPC_STATUS RPC_ENTRY ! 330: RpcBindToInterface ( ! 331: IN PRPC_PROTOCOL_STACK InterfaceInstance, ! 332: IN PRPC_DISPATCH_TABLE CallBackTable OPTIONAL, ! 333: OUT PRPC_HANDLE BindingHandle ! 334: ); ! 335: ! 336: RPC_STATUS RPC_ENTRY ! 337: RpcUnbind ( ! 338: IN RPC_HANDLE BindingHandle ! 339: ); ! 340: ! 341: RPC_STATUS RPC_ENTRY ! 342: RpcDuplicateBinding ( ! 343: IN RPC_HANDLE Binding, ! 344: OUT PRPC_HANDLE NewBinding ! 345: ); ! 346: ! 347: ! 348: RPC_STATUS RPC_ENTRY ! 349: RpcQueryCall ( ! 350: IN RPC_HANDLE CallHandle, ! 351: OUT void PAPI * CallInformation, ! 352: IN OUT unsigned int PAPI * CallInformationLength ! 353: ); ! 354: ! 355: RPC_STATUS RPC_ENTRY ! 356: RpcQueryBinding ( ! 357: IN RPC_HANDLE Handle, ! 358: OUT void PAPI * BindingInformation, ! 359: IN OUT unsigned int PAPI * BindingInformationLength ! 360: ); ! 361: ! 362: RPC_STATUS RPC_ENTRY ! 363: RpcQueryProtocolStack ( ! 364: IN RPC_HANDLE Handle, ! 365: OUT PRPC_PROTOCOL_STACK ProtocolStack, ! 366: IN OUT unsigned int PAPI * ProtocolStackLength ! 367: ); ! 368: ! 369: RPC_STATUS RPC_ENTRY ! 370: RpcQueryConfig ( ! 371: IN RPC_CONFIG ConfigType, ! 372: OUT void PAPI * ConfigInformation, ! 373: IN OUT unsigned int PAPI * ConfigInformationLength ! 374: ); ! 375: ! 376: RPC_STATUS RPC_ENTRY ! 377: RpcSetConfig ( ! 378: IN RPC_CONFIG ConfigType, ! 379: OUT void PAPI * ConfigInformation ! 380: ); ! 381: ! 382: RPC_STATUS RPC_ENTRY ! 383: RpcGetBuffer ( ! 384: IN OUT PRPC_MESSAGE Message ! 385: ); ! 386: ! 387: RPC_STATUS RPC_ENTRY ! 388: RpcFreeBuffer ( ! 389: IN OUT PRPC_MESSAGE Message ! 390: ); ! 391: ! 392: RPC_STATUS RPC_ENTRY ! 393: RpcSendReceive ( ! 394: IN OUT PRPC_MESSAGE Message ! 395: ); ! 396: ! 397: void RPC_ENTRY ! 398: RpcRaiseException ( ! 399: RPC_STATUS exception ! 400: ); ! 401: ! 402: #endif /* __RPCBSE_H__ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.