|
|
Microsoft Windows NT Build 511 (SDK Final Release) 07-24-1993
/*++
Copyright (c) 1991-1993 Microsoft Corporation
Module Name:
rpcdcep.h
Abstract:
This module contains the private RPC runtime APIs for use by the
stubs and by support libraries. Applications must not call these
routines.
Author:
Michael Montague (mikemon) 25-Sep-1991
Revision History:
--*/
#ifndef __RPCDCEP_H__
#define __RPCDCEP_H__
// Set the packing level for RPC structures for Dos and Windows.
#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
#pragma pack(2)
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef struct _RPC_VERSION {
unsigned short MajorVersion;
unsigned short MinorVersion;
} RPC_VERSION;
typedef struct _RPC_SYNTAX_IDENTIFIER {
GUID SyntaxGUID;
RPC_VERSION SyntaxVersion;
} RPC_SYNTAX_IDENTIFIER, __RPC_FAR * PRPC_SYNTAX_IDENTIFIER;
typedef struct _RPC_MESSAGE
{
RPC_BINDING_HANDLE Handle;
unsigned long DataRepresentation;
void __RPC_FAR * Buffer;
unsigned int BufferLength;
unsigned int ProcNum;
PRPC_SYNTAX_IDENTIFIER TransferSyntax;
void __RPC_FAR * RpcInterfaceInformation;
void __RPC_FAR * ReservedForRuntime;
RPC_MGR_EPV __RPC_FAR * ManagerEpv;
void __RPC_FAR * ImportContext;
unsigned long RpcFlags;
} RPC_MESSAGE, __RPC_FAR * PRPC_MESSAGE;
typedef
void
(__RPC_STUB __RPC_FAR * RPC_DISPATCH_FUNCTION) (
IN OUT PRPC_MESSAGE Message
);
typedef struct {
unsigned int DispatchTableCount;
RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable;
int Reserved;
} RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE;
typedef struct _RPC_PROTSEQ_ENDPOINT
{
unsigned char __RPC_FAR * RpcProtocolSequence;
unsigned char __RPC_FAR * Endpoint;
} RPC_PROTSEQ_ENDPOINT, __RPC_FAR * PRPC_PROTSEQ_ENDPOINT;
/*
Both of this types MUST start with the InterfaceId and TransferSyntax.
Look at RpcIfInqId and I_RpcIfInqTransferSyntaxes to see why.
*/
typedef struct _RPC_SERVER_INTERFACE
{
unsigned int Length;
RPC_SYNTAX_IDENTIFIER InterfaceId;
RPC_SYNTAX_IDENTIFIER TransferSyntax;
PRPC_DISPATCH_TABLE DispatchTable;
unsigned int RpcProtseqEndpointCount;
PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
void __RPC_FAR * MopInterfaceInformation;
} RPC_SERVER_INTERFACE, __RPC_FAR * PRPC_SERVER_INTERFACE;
typedef struct _RPC_CLIENT_INTERFACE
{
unsigned int Length;
RPC_SYNTAX_IDENTIFIER InterfaceId;
RPC_SYNTAX_IDENTIFIER TransferSyntax;
PRPC_DISPATCH_TABLE DispatchTable;
unsigned int RpcProtseqEndpointCount;
PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
void __RPC_FAR * MopInterfaceInformation;
} RPC_CLIENT_INTERFACE, __RPC_FAR * PRPC_CLIENT_INTERFACE;
RPC_STATUS RPC_ENTRY
I_RpcGetBuffer (
IN OUT RPC_MESSAGE __RPC_FAR * Message
);
RPC_STATUS RPC_ENTRY
I_RpcSendReceive (
IN OUT RPC_MESSAGE __RPC_FAR * Message
);
RPC_STATUS RPC_ENTRY
I_RpcFreeBuffer (
IN OUT RPC_MESSAGE __RPC_FAR * Message
);
typedef void * I_RPC_MUTEX;
void RPC_ENTRY
I_RpcRequestMutex (
IN OUT I_RPC_MUTEX * Mutex
);
void RPC_ENTRY
I_RpcClearMutex (
IN I_RPC_MUTEX Mutex
);
void RPC_ENTRY
I_RpcDeleteMutex (
IN I_RPC_MUTEX Mutex
);
void __RPC_FAR * RPC_ENTRY
I_RpcAllocate (
IN unsigned int Size
);
void RPC_ENTRY
I_RpcFree (
IN void __RPC_FAR * Object
);
void RPC_ENTRY
I_RpcPauseExecution (
IN unsigned long Milliseconds
);
typedef
void
(__RPC_USER __RPC_FAR * PRPC_RUNDOWN) (
void __RPC_FAR * AssociationContext
);
RPC_STATUS RPC_ENTRY
I_RpcMonitorAssociation (
IN RPC_BINDING_HANDLE Handle,
IN PRPC_RUNDOWN RundownRoutine,
IN void * Context
);
RPC_STATUS RPC_ENTRY
I_RpcStopMonitorAssociation (
IN RPC_BINDING_HANDLE Handle
);
RPC_BINDING_HANDLE RPC_ENTRY
I_RpcGetCurrentCallHandle(
void
);
RPC_STATUS RPC_ENTRY
I_RpcGetAssociationContext (
OUT void __RPC_FAR * __RPC_FAR * AssociationContext
);
RPC_STATUS RPC_ENTRY
I_RpcSetAssociationContext (
IN void __RPC_FAR * AssociationContext
);
#ifdef RPC_UNICODE_SUPPORTED
RPC_STATUS RPC_ENTRY
I_RpcNsBindingSetEntryName (
IN RPC_BINDING_HANDLE Binding,
IN unsigned long EntryNameSyntax,
IN unsigned short __RPC_FAR * EntryName
);
#else /* RPC_UNICODE_SUPPORTED */
RPC_STATUS RPC_ENTRY
I_RpcNsBindingSetEntryName (
IN RPC_BINDING_HANDLE Binding,
IN unsigned long EntryNameSyntax,
IN unsigned char __RPC_FAR * EntryName
);
#endif /* RPC_UNICODE_SUPPORTED */
#ifdef RPC_UNICODE_SUPPORTED
RPC_STATUS RPC_ENTRY
I_RpcBindingInqDynamicEndpoint (
IN RPC_BINDING_HANDLE Binding,
OUT unsigned short __RPC_FAR * __RPC_FAR * DynamicEndpoint
);
#else /* RPC_UNICODE_SUPPORTED */
RPC_STATUS RPC_ENTRY
I_RpcBindingInqDynamicEndpoint (
IN RPC_BINDING_HANDLE Binding,
OUT unsigned char __RPC_FAR * __RPC_FAR * DynamicEndpoint
);
#endif /* RPC_UNICODE_SUPPORTED */
typedef struct _RPC_TRANSFER_SYNTAX
{
UUID Uuid;
unsigned short VersMajor;
unsigned short VersMinor;
} RPC_TRANSFER_SYNTAX;
RPC_STATUS RPC_ENTRY
I_RpcIfInqTransferSyntaxes (
IN RPC_IF_HANDLE RpcIfHandle,
OUT RPC_TRANSFER_SYNTAX __RPC_FAR * TransferSyntaxes,
IN unsigned int TransferSyntaxSize,
OUT unsigned int __RPC_FAR * TransferSyntaxCount
);
RPC_STATUS RPC_ENTRY
I_UuidCreate (
OUT UUID __RPC_FAR * Uuid
);
RPC_STATUS RPC_ENTRY
I_RpcBindingCopy (
IN RPC_BINDING_HANDLE SourceBinding,
OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
);
RPC_STATUS RPC_ENTRY
I_RpcBindingIsClientLocal (
IN RPC_BINDING_HANDLE BindingHandle OPTIONAL,
OUT unsigned int __RPC_FAR * ClientLocalFlag
);
void RPC_ENTRY
I_RpcSsDontSerializeContext (
void
);
/* Functions to do performace timing */
extern unsigned long TraceCallTime; /* Time to call the trace system */
extern unsigned long ChargeCallTime; /* Time to call the Charge API */
typedef enum {
TIME_RUNTIME = 0,
TIME_STUB,
TIME_TRANSPORT,
TIME_USER,
TIME_MAX,
TIME_LOST
} TIME_SLOT;
void RPC_ENTRY
I_RpcTimeReset(
void
);
void RPC_ENTRY
I_RpcTimeCharge(
IN TIME_SLOT Account
);
unsigned long * RPC_ENTRY
I_RpcTimeGet(
char __RPC_FAR * ApiName
);
#ifdef __cplusplus
}
#endif
// Reset the packing level for Dos and Windows.
#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
#pragma pack()
#endif
#endif /* __RPCDCEP_H__ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.