#include <winapifamily.h>
#ifndef __RPCDCEP_H__
#define __RPCDCEP_H__
#if _MSC_VER > 1000
#pragma once
#endif
#ifdef __cplusplus
extern
"C"
{
#endif
#if _MSC_VER >= 1200
#pragma warning(push)
#pragma warning(disable:4668) // #if not_defined treated as #if 0
#pragma warning(disable:
4668
)
#pragma warning(disable:4820) // padding added after data member
#endif
#pragma warning(disable:
4820
)
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
typedef
struct
{
unsigned
short
;
unsigned
short
;
}
;
typedef
struct
{
;
;
} RPC_SYNTAX_IDENTIFIER, __RPC_FAR * PRPC_SYNTAX_IDENTIFIER;
typedef
struct
{
;
unsigned
long
;
unsigned
int
;
unsigned
int
;
;
void __RPC_FAR * RpcInterfaceInformation;
void __RPC_FAR * ReservedForRuntime;
RPC_MGR_EPV __RPC_FAR * ManagerEpv;
void __RPC_FAR * ImportContext;
unsigned
long
;
} RPC_MESSAGE, __RPC_FAR * PRPC_MESSAGE;
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
typedef
RPC_ENTRY RPC_FORWARD_FUNCTION(
IN UUID __RPC_FAR * InterfaceId,
IN RPC_VERSION __RPC_FAR * InterfaceVersion,
IN UUID __RPC_FAR * ObjectId,
IN unsigned char __RPC_FAR * Rpcpro,
IN void __RPC_FAR * __RPC_FAR * ppDestEndpoint);
void
* * ppDestEndpoint);
enum
{
=
1
,
,
};
typedef
void
RPC_ENTRY RPC_ADDRESS_CHANGE_FN(
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#define RPC_CONTEXT_HANDLE_DEFAULT_GUARD ((void *)(ULONG_PTR)0xFFFFF00D)
#define RPC_CONTEXT_HANDLE_DEFAULT_FLAGS 0x00000000UL
#define RPC_CONTEXT_HANDLE_FLAGS 0x30000000UL
#define RPC_CONTEXT_HANDLE_SERIALIZE 0x10000000UL
#define RPC_CONTEXT_HANDLE_DONT_SERIALIZE 0x20000000UL
#if (NTDDI_VERSION >= NTDDI_VISTA)
#define RPC_TYPE_STRICT_CONTEXT_HANDLE 0x40000000UL
#endif // (NTDDI_VERSION >= NTDDI_VISTA)
#define RPC_NCA_FLAGS_DEFAULT 0x00000000 /* 0b000...000 */
#define RPC_NCA_FLAGS_IDEMPOTENT 0x00000001 /* 0b000...001 */
#define RPC_NCA_FLAGS_BROADCAST 0x00000002 /* 0b000...010 */
#define RPC_NCA_FLAGS_MAYBE 0x00000004 /* 0b000...100 */
#if (NTDDI_VERSION >= NTDDI_VISTA)
#define RPCFLG_HAS_GUARANTEE 0x00000010UL
#endif // (NTDDI_VERSION >= NTDDI_VISTA)
#define RPCFLG_WINRT_REMOTE_ASYNC 0x00000020UL
#define RPC_BUFFER_COMPLETE 0x00001000 /* used by pipes */
#define RPC_BUFFER_PARTIAL 0x00002000 /* used by pipes */
#define RPC_BUFFER_EXTRA 0x00004000 /* used by pipes */
#define RPC_BUFFER_ASYNC 0x00008000 /* used by async rpc */
#define RPC_BUFFER_NONOTIFY 0x00010000 /* used by async pipes */
#define RPCFLG_MESSAGE 0x01000000UL
#define RPCFLG_AUTO_COMPLETE 0x08000000UL
#define RPCFLG_LOCAL_CALL 0x10000000UL
#define RPCFLG_INPUT_SYNCHRONOUS 0x20000000UL
#define RPCFLG_ASYNCHRONOUS 0x40000000UL
#define RPCFLG_NON_NDR 0x80000000UL
#if (NTDDI_VERSION >= NTDDI_WINXP)
#define RPCFLG_HAS_MULTI_SYNTAXES 0x02000000UL
#define RPCFLG_HAS_CALLBACK 0x04000000UL
#endif // (NTDDI_VERSION >= NTDDI_WXP)
#if (NTDDI_VERSION >= NTDDI_VISTA)
#define RPCFLG_ACCESSIBILITY_BIT1 0x00100000UL
#define RPCFLG_ACCESSIBILITY_BIT2 0x00200000UL
#define RPCFLG_ACCESS_LOCAL 0x00400000UL
#define NDR_CUSTOM_OR_DEFAULT_ALLOCATOR 0x10000000UL
#define NDR_DEFAULT_ALLOCATOR 0x20000000UL
#endif // (NTDDI_VERSION >= NTDDI_VISTA)
#if (NTDDI_VERSION >= NTDDI_WIN8)
#define RPCFLG_NDR64_CONTAINS_ARM_LAYOUT 0x04000000UL
#endif
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
#define RPCFLG_SENDER_WAITING_FOR_REPLY 0x00800000UL
#endif // (NTDDI_VERSION >= NTDDI_WINBLUE)
#define RPC_FLAGS_VALID_BIT 0x00008000
typedef
void
(__RPC_STUB __RPC_FAR * RPC_DISPATCH_FUNCTION) (
IN OUT PRPC_MESSAGE Message
);
typedef
struct
{
unsigned
int
;
RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable;
;
} RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE;
typedef
struct
{
unsigned char __RPC_FAR * RpcProtocolSequence;
unsigned char __RPC_FAR * Endpoint;
} RPC_PROTSEQ_ENDPOINT, __RPC_FAR * PRPC_PROTSEQ_ENDPOINT;
#define NT351_INTERFACE_SIZE 0x40
#define RPC_INTERFACE_HAS_PIPES 0x0001
typedef
struct
{
unsigned
int
;
;
;
;
unsigned
int
;
;
RPC_MGR_EPV __RPC_FAR *DefaultManagerEpv;
void const __RPC_FAR *InterpreterInfo;
unsigned
int
;
} RPC_SERVER_INTERFACE, __RPC_FAR * PRPC_SERVER_INTERFACE;
typedef
struct
{
unsigned
int
;
;
;
;
unsigned
int
;
;
;
void const __RPC_FAR * InterpreterInfo;
unsigned
int
;
} RPC_CLIENT_INTERFACE, __RPC_FAR * PRPC_CLIENT_INTERFACE;
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#if (NTDDI_VERSION >= NTDDI_WINXP)
I_RpcNegotiateTransferSyntax
(
IN OUT RPC_MESSAGE __RPC_FAR * Message
);
#endif // (NTDDI_VERSION >= NTDDI_WINXP)
_Must_inspect_result_
(
IN OUT RPC_MESSAGE __RPC_FAR * Message
);
(
IN OUT RPC_MESSAGE __RPC_FAR * Message,
);
_Must_inspect_result_
(
IN OUT RPC_MESSAGE __RPC_FAR * Message
);
_Must_inspect_result_
(
IN OUT RPC_MESSAGE __RPC_FAR * Message
);
_Must_inspect_result_
(
IN OUT PRPC_MESSAGE Message
);
_Must_inspect_result_
(
IN OUT PRPC_MESSAGE Message,
);
_Must_inspect_result_
(
IN OUT RPC_MESSAGE __RPC_FAR * Message
);
_Must_inspect_result_
(
_In_ PRPC_MESSAGE Message,
unsigned
int
);
typedef
void
*
;
void
(
IN OUT I_RPC_MUTEX * Mutex
);
void
(
);
void
(
);
(
);
void
(
IN void __RPC_FAR * Object
);
#define RPC_SYSTEM_HANDLE_FREE_UNRETRIEVED 1
#define RPC_SYSTEM_HANDLE_FREE_RETRIEVED 2
#define RPC_SYSTEM_HANDLE_FREE_ALL 3
#define RPC_SYSTEM_HANDLE_FREE_ERROR_ON_CLOSE 4
unsigned
long
I_RpcFreeSystemHandleCollection
(
_In_ unsigned long FreeFlags
);
(
_In_ unsigned long AccessMask,
_Out_ unsigned long * HandleIndex
);
(
_Out_writes_bytes_(sizeof(HANDLE)) unsigned char* pMemory,
_In_ unsigned long AccessMask,
_In_ unsigned long HandleIndex,
);
void
(
);
void
(
IN unsigned long Milliseconds
);
(
void
);
typedef
enum
_LRPC_SYSTEM_HANDLE_MARSHAL_DIRECTION
{
,
MarshalDirectionUnmarshal
}
LRPC_SYSTEM_HANDLE_MARSHAL_DIRECTION
;
I_RpcSystemHandleTypeSpecificWork
(
_In_ unsigned char ActualType,
_In_ unsigned char IdlType,
_In_ LRPC_SYSTEM_HANDLE_MARSHAL_DIRECTION MarshalDirection
LRPC_SYSTEM_HANDLE_MARSHAL_DIRECTION
);
typedef
void
(__RPC_USER __RPC_FAR * PRPC_RUNDOWN) (
void __RPC_FAR * AssociationContext
void
* AssociationContext
);
_Must_inspect_result_
(
IN RPC_BINDING_HANDLE Handle,
IN PRPC_RUNDOWN RundownRoutine,
);
_Must_inspect_result_
I_RpcStopMonitorAssociation
(
IN RPC_BINDING_HANDLE Handle
);
I_RpcGetCurrentCallHandle
(
void
);
_Must_inspect_result_
I_RpcGetAssociationContext
(
IN RPC_BINDING_HANDLE BindingHandle,
OUT void __RPC_FAR * __RPC_FAR * AssociationContext
);
void
*
I_RpcGetServerContextList
(
IN RPC_BINDING_HANDLE BindingHandle
);
void
I_RpcSetServerContextList
(
IN RPC_BINDING_HANDLE BindingHandle,
OUT void * ServerContextList
);
(
IN unsigned long EntryNameSyntax,
IN unsigned short *EntryName,
IN RPC_SERVER_INTERFACE * RpcInterfaceInformation
);
I_RpcNsInterfaceUnexported
(
IN unsigned long EntryNameSyntax,
IN unsigned short *EntryName,
IN RPC_SERVER_INTERFACE * RpcInterfaceInformation
);
I_RpcBindingToStaticStringBindingW
(
IN RPC_BINDING_HANDLE Binding,
OUT unsigned short **StringBinding
);
I_RpcBindingInqSecurityContext
(
IN RPC_BINDING_HANDLE Binding,
OUT void **SecurityContextHandle
);
#if (NTDDI_VERSION >= NTDDI_VISTA)
typedef
struct
_RPC_SEC_CONTEXT_KEY_INFO
{
unsigned
long
;
unsigned
long
;
unsigned
long
;
}
, *
PRPC_SEC_CONTEXT_KEY_INFO
;
I_RpcBindingInqSecurityContextKeyInfo
(
_In_opt_ RPC_BINDING_HANDLE Binding,
);
#endif // (NTDDI_VERSION >= NTDDI_VISTA)
I_RpcBindingInqWireIdForSnego
(
_In_ RPC_BINDING_HANDLE Binding,
_Out_ unsigned char * WireId
);
#if (NTDDI_VERSION >= NTDDI_WS03)
I_RpcBindingInqMarshalledTargetInfo
(
_In_ RPC_BINDING_HANDLE Binding,
_Out_ unsigned long * MarshalledTargetInfoSize,
_Outptr_result_bytebuffer_(* MarshalledTargetInfoSize) RPC_CSTR * MarshalledTargetInfo
);
#endif // (NTDDI_VERSION >= NTDDI_WS03)
#if (NTDDI_VERSION >= NTDDI_WINXP)
I_RpcBindingInqLocalClientPID
(
IN RPC_BINDING_HANDLE Binding,
);
I_RpcBindingHandleToAsyncHandle
(
IN RPC_BINDING_HANDLE Binding,
);
#endif // (NTDDI_VERSION >= NTDDI_WINXP)
#ifdef RPC_UNICODE_SUPPORTED
_Must_inspect_result_
I_RpcNsBindingSetEntryNameW
(
_In_ RPC_BINDING_HANDLE Binding,
_In_ unsigned long EntryNameSyntax,
);
_Must_inspect_result_
I_RpcNsBindingSetEntryNameA
(
_In_ RPC_BINDING_HANDLE Binding,
_In_ unsigned long EntryNameSyntax,
);
I_RpcServerUseProtseqEp2A
(
_In_opt_ RPC_CSTR NetworkAddress,
_In_ unsigned int MaxCalls,
_In_opt_ void __RPC_FAR * SecurityDescriptor,
);
I_RpcServerUseProtseqEp2W
(
_In_opt_ RPC_WSTR NetworkAddress,
_In_ unsigned int MaxCalls,
_In_opt_ void __RPC_FAR * SecurityDescriptor,
);
(
_In_opt_ RPC_WSTR NetworkAddress,
_In_ unsigned int MaxCalls,
_In_opt_ void __RPC_FAR * SecurityDescriptor,
);
(
_In_opt_ RPC_CSTR NetworkAddress,
_In_ unsigned int MaxCalls,
_In_opt_ void __RPC_FAR * SecurityDescriptor,
);
#ifdef UNICODE
#define I_RpcNsBindingSetEntryName I_RpcNsBindingSetEntryNameW
#define I_RpcServerUseProtseqEp2 I_RpcServerUseProtseqEp2W
#define I_RpcServerUseProtseq2 I_RpcServerUseProtseq2W
#else
#define I_RpcNsBindingSetEntryName I_RpcNsBindingSetEntryNameA
#define I_RpcServerUseProtseqEp2 I_RpcServerUseProtseqEp2A
#define I_RpcServerUseProtseq2 I_RpcServerUseProtseq2A
#endif
#else
RPCRTAPI
RPC_STATUS
RPC_ENTRY
I_RpcNsBindingSetEntryName (
_In_ RPC_BINDING_HANDLE Binding,
_In_ unsigned long EntryNameSyntax,
_In_ RPC_CSTR EntryName
);
RPCRTAPI
RPC_STATUS
RPC_ENTRY
I_RpcServerUseProtseq2 (
_In_ RPC_CSTR NetworkAddress,
_In_ RPC_CSTR Protseq,
_In_ unsigned int MaxCalls,
_In_ void __RPC_FAR * SecurityDescriptor,
_In_ void * Policy
);
RPCRTAPI
RPC_STATUS
RPC_ENTRY
I_RpcServerUseProtseqEp2 (
_In_ RPC_CSTR NetworkAddress,
_In_ RPC_CSTR Protseq,
_In_ unsigned int MaxCalls,
_In_ RPC_CSTR Endpoint,
_In_ void __RPC_FAR *SecurityDescriptor,
_In_ void *Policy
);
#endif
(
_In_ RPC_IF_HANDLE IfSpec
);
#ifdef RPC_UNICODE_SUPPORTED
_Must_inspect_result_
I_RpcBindingInqDynamicEndpointW
(
_In_ RPC_BINDING_HANDLE Binding,
_Outptr_result_maybenull_ RPC_WSTR __RPC_FAR *DynamicEndpoint
);
_Must_inspect_result_
I_RpcBindingInqDynamicEndpointA
(
_In_ RPC_BINDING_HANDLE Binding,
_Outptr_result_maybenull_ RPC_CSTR __RPC_FAR *DynamicEndpoint
);
#ifdef UNICODE
#define I_RpcBindingInqDynamicEndpoint I_RpcBindingInqDynamicEndpointW
#else
#define I_RpcBindingInqDynamicEndpoint I_RpcBindingInqDynamicEndpointA
#endif
#else
RPCRTAPI
_Must_inspect_result_
RPC_STATUS
RPC_ENTRY
I_RpcBindingInqDynamicEndpoint (
_In_ RPC_BINDING_HANDLE Binding,
_Outptr_result_maybenull_ RPC_CSTR __RPC_FAR *DynamicEndpoint
);
#endif
#if (NTDDI_VERSION >= NTDDI_WINXP)
I_RpcServerCheckClientRestriction
(
IN RPC_BINDING_HANDLE Context
);
#endif // (NTDDI_VERSION >= NTDDI_WINXP)
#define TRANSPORT_TYPE_CN 0x01
#define TRANSPORT_TYPE_DG 0x02
#define TRANSPORT_TYPE_LPC 0x04
#define TRANSPORT_TYPE_WMSG 0x08
_Must_inspect_result_
I_RpcBindingInqTransportType
(
IN RPC_BINDING_HANDLE Binding,
OUT unsigned int __RPC_FAR * Type
);
typedef
struct
{
;
unsigned
short
;
unsigned
short
;
}
;
_Must_inspect_result_
I_RpcIfInqTransferSyntaxes
(
IN RPC_IF_HANDLE RpcIfHandle,
OUT RPC_TRANSFER_SYNTAX __RPC_FAR * TransferSyntaxes,
IN unsigned int TransferSyntaxSize,
OUT unsigned int __RPC_FAR * TransferSyntaxCount
);
_Must_inspect_result_
(
OUT UUID __RPC_FAR * Uuid
);
void
(
void
);
_Must_inspect_result_
(
IN RPC_BINDING_HANDLE SourceBinding,
OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
);
I_RpcBindingIsClientLocal
(
IN OPTIONAL RPC_BINDING_HANDLE BindingHandle,
OUT unsigned int __RPC_FAR * ClientLocalFlag
);
(
IN RPC_BINDING_HANDLE Binding,
);
(
_In_ RPC_WSTR ServerName,
_In_ RPC_WSTR ServiceName,
_In_ RPC_WSTR NetworkOptions,
_Out_ RPC_BINDING_HANDLE *Binding
);
void
I_RpcSsDontSerializeContext
(
void
);
_Must_inspect_result_
I_RpcLaunchDatagramReceiveThread
(
void __RPC_FAR * pAddress
);
_Must_inspect_result_
I_RpcServerRegisterForwardFunction
(
IN RPC_FORWARD_FUNCTION * pForwardFunction
);
RPC_ADDRESS_CHANGE_FN * RPC_ENTRY
I_RpcServerInqAddressChangeFn
(
void
);
I_RpcServerSetAddressChangeFn
(
IN RPC_ADDRESS_CHANGE_FN * pAddressChangeFn
);
#if (NTDDI_VERSION >= NTDDI_WINXP)
#define RPC_P_ADDR_FORMAT_TCP_IPV4 1
#define RPC_P_ADDR_FORMAT_TCP_IPV6 2
I_RpcServerInqLocalConnAddress
(
IN RPC_BINDING_HANDLE Binding,
IN OUT unsigned long *BufferSize,
OUT unsigned long *AddressFormat
);
I_RpcServerInqRemoteConnAddress
(
IN RPC_BINDING_HANDLE Binding,
IN OUT unsigned long *BufferSize,
OUT unsigned long *AddressFormat
);
void
I_RpcSessionStrictContextHandle
(
void
);
I_RpcTurnOnEEInfoPropagation
(
void
);
#endif // (NTDDI_VERSION >= NTDDI_WINXP)
_Must_inspect_result_
I_RpcConnectionInqSockBuffSize
(
OUT unsigned long __RPC_FAR * RecvBuffSize,
OUT unsigned long __RPC_FAR * SendBuffSize
);
_Must_inspect_result_
I_RpcConnectionSetSockBuffSize
(
IN unsigned long RecvBuffSize,
IN unsigned long SendBuffSize
);
typedef
void
(*
) (
IN unsigned int BufferLength,
unsigned
int
BufferLength,
);
typedef
void
(
__cdecl
*
) (
IN RPCLT_PDU_FILTER_FUNC pfnFilter
);
#ifndef WINNT
_Must_inspect_result_
I_RpcServerStartListening
(
void
*
);
_Must_inspect_result_
(
void
);
typedef
(*
) (
IN OPTIONAL void * hSyncEvent
);
_Must_inspect_result_
(
IN RPC_BINDING_HANDLE Binding,
IN RPC_BLOCKING_FN BlockingFn,
IN unsigned long ServerTid
);
_Must_inspect_result_
(
IN OPTIONAL void *Context,
IN OPTIONAL void * hWndClient
);
unsigned
int
(
);
_Must_inspect_result_
I_RpcServerUnregisterEndpointA
(
);
_Must_inspect_result_
I_RpcServerUnregisterEndpointW
(
);
#ifdef UNICODE
#define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointW
#else
#define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointA
#endif
#endif // WINNT
I_RpcServerInqTransportType
(
OUT unsigned int __RPC_FAR * Type
);
long
(
);
#if (NTDDI_VERSION >= NTDDI_WS03)
#define RPC_C_OPT_SESSION_ID (6)
#define RPC_C_OPT_COOKIE_AUTH (7)
#define RPC_C_OPT_RESOURCE_TYPE_UUID (8)
typedef
struct
_RPC_C_OPT_COOKIE_AUTH_DESCRIPTOR
{
unsigned
long
;
_Field_size_bytes_(BufferSize) char *Buffer; // Zero-terminated string
}
RPC_C_OPT_COOKIE_AUTH_DESCRIPTOR
;
typedef
struct
{
;
void
*
;
RPC_HTTP_REDIRECTOR_STAGE
;
unsigned
short
*
;
unsigned
short
*
;
unsigned
short
*
;
unsigned
short
*
;
unsigned
char
;
unsigned
char
;
unsigned
char
;
;
;
;
void
*
;
}
;
#endif // (NTDDI_VERSION >= NTDDI_WS03)
#if (NTDDI_VERSION >= NTDDI_WINXP)
typedef
(RPC_ENTRY *I_RpcProxyIsValidMachineFn)
(
__stdcall
*
I_RpcProxyIsValidMachineFn
)
(
_In_ RPC_WSTR DotMachine,
_In_ unsigned long PortNumber
);
typedef
(RPC_ENTRY *I_RpcProxyGetClientAddressFn)
(
__stdcall
*
I_RpcProxyGetClientAddressFn
)
(
OUT unsigned long *BufferLength
unsigned
long
*BufferLength
);
typedef
(RPC_ENTRY *I_RpcProxyGetConnectionTimeoutFn)
(
__stdcall
*
I_RpcProxyGetConnectionTimeoutFn
)
(
OUT unsigned long *ConnectionTimeout
unsigned
long
*ConnectionTimeout
);
#if (NTDDI_VERSION >= NTDDI_WS03)
typedef
(RPC_ENTRY *I_RpcPerformCalloutFn)
(
IN RDR_CALLOUT_STATE *CallOutState,
IN RPC_HTTP_REDIRECTOR_STAGE Stage
RPC_HTTP_REDIRECTOR_STAGE
Stage
);
typedef
void
(RPC_ENTRY *I_RpcFreeCalloutStateFn)
(
IN RDR_CALLOUT_STATE *CallOutState
);
typedef
(RPC_ENTRY *I_RpcProxyGetClientSessionAndResourceUUID)
(
__stdcall
*
I_RpcProxyGetClientSessionAndResourceUUID
)
(
_Out_opt_ int *SessionIdPresent,
_Out_opt_ UUID *SessionId,
_Out_ int *ResourceIdPresent,
);
#endif // (NTDDI_VERSION >= NTDDI_WS03)
#if (NTDDI_VERSION >= NTDDI_VISTA)
typedef
(RPC_ENTRY *I_RpcProxyFilterIfFn)
(
_In_ unsigned short IfMajorVersion,
unsigned
short
IfMajorVersion,
);
typedef
enum
{
=
1
,
RpcBackEndConnectionAttempts
,
RpcBackEndConnectionFailed
,
,
,
,
,
,
,
,
,
}
;
typedef
void
(RPC_ENTRY *I_RpcProxyUpdatePerfCounterFn)
(
__stdcall
*
I_RpcProxyUpdatePerfCounterFn
)
(
_In_ RpcPerfCounters Counter,
);
typedef
void
(RPC_ENTRY *I_RpcProxyUpdatePerfCounterBackendServerFn)
(
__stdcall
*
I_RpcProxyUpdatePerfCounterBackendServerFn
)
(
_In_ unsigned short* MachineName,
unsigned
short
* MachineName,
);
#endif // (NTDDI_VERSION >= NTDDI_VISTA)
#define RPC_PROXY_CONNECTION_TYPE_IN_PROXY 0
#define RPC_PROXY_CONNECTION_TYPE_OUT_PROXY 1
#if (NTDDI_VERSION >= NTDDI_WS03)
typedef
struct
tagI_RpcProxyCallbackInterface
{
I_RpcProxyIsValidMachineFn
;
I_RpcProxyGetClientAddressFn
;
I_RpcProxyGetConnectionTimeoutFn
;
;
;
I_RpcProxyGetClientSessionAndResourceUUID
GetClientSessionAndResourceUUIDFn
;
#if (NTDDI_VERSION >= NTDDI_VISTA)
;
I_RpcProxyUpdatePerfCounterFn
RpcProxyUpdatePerfCounterFn
;
I_RpcProxyUpdatePerfCounterBackendServerFn
RpcProxyUpdatePerfCounterBackendServerFn
;
#endif // (NTDDI_VERSION >= NTDDI_VISTA)
}
I_RpcProxyCallbackInterface
;
(
IN unsigned long ConnectionType,
IN unsigned short *ServerAddress,
IN unsigned short *ServerPort,
IN unsigned short *MinConnTimeout,
IN void *ConnectionParameter,
IN OPTIONAL RDR_CALLOUT_STATE *CallOutState,
IN I_RpcProxyCallbackInterface *ProxyCallbackInterface
I_RpcProxyCallbackInterface
*
);
#else
typedef struct tagI_RpcProxyCallbackInterface
{
I_RpcProxyIsValidMachineFn IsValidMachineFn;
I_RpcProxyGetClientAddressFn GetClientAddressFn;
I_RpcProxyGetConnectionTimeoutFn GetConnectionTimeoutFn;
} I_RpcProxyCallbackInterface;
RPCRTAPI
RPC_STATUS
RPC_ENTRY
I_RpcProxyNewConnection (
IN unsigned long ConnectionType,
IN unsigned short *ServerAddress,
IN unsigned short *ServerPort,
IN void *ConnectionParameter,
IN I_RpcProxyCallbackInterface *ProxyCallbackInterface
);
#endif // (NTDDI_VERSION >= NTDDI_WS03)
#endif // (NTDDI_VERSION >= NTDDI_WINXP)
#if (NTDDI_VERSION >= NTDDI_WS03)
I_RpcReplyToClientWithStatus
(
IN void *ConnectionParameter,
);
void
I_RpcRecordCalloutFailure
(
IN RDR_CALLOUT_STATE *CallOutState,
IN unsigned short *DllName
);
#endif // (NTDDI_VERSION >= NTDDI_WS03)
#if (NTDDI_VERSION >= NTDDI_WIN7)
I_RpcMgmtEnableDedicatedThreadPool
(
void
);
#endif // (NTDDI_VERSION >= NTDDI_WIN7)
#if (NTDDI_VERSION >= NTDDI_WIN7)
(
_Out_ void __RPC_FAR ** ppSecurityDescriptor
);
#endif // (NTDDI_VERSION >= NTDDI_WIN7)
#if (NTDDI_VERSION >= NTDDI_VISTA)
(
_In_opt_ RPC_BINDING_HANDLE Binding,
_In_ unsigned long DesiredAccess,
_Outptr_ void** ClientProcess
);
#endif // (NTDDI_VERSION >= NTDDI_VISTA)
#if (NTDDI_VERSION >= NTDDI_WIN8)
I_RpcBindingIsServerLocal
(
_In_ RPC_BINDING_HANDLE Binding,
_Out_ unsigned int * ServerLocalFlag
);
I_RpcBindingSetPrivateOption
(
_In_ RPC_BINDING_HANDLE hBinding,
_In_ unsigned long option,
_In_ ULONG_PTR optionValue
);
#define RPC_C_OPT_PRIVATE_SUPPRESS_WAKE 1
#define RPC_C_OPT_PRIVATE_DO_NOT_DISTURB 2
#define RPC_C_OPT_PRIVATE_BREAK_ON_SUSPEND 3
#endif // (NTDDI_VERSION >= NTDDI_WIN8)
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
I_RpcServerSubscribeForDisconnectNotification
(
_In_ RPC_BINDING_HANDLE Binding,
);
I_RpcServerGetAssociationID
(
_In_ RPC_BINDING_HANDLE Binding,
_Out_ unsigned long * AssociationID
);
long
I_RpcServerDisableExceptionFilter
(
void
);
#endif // (NTDDI_VERSION >= NTDDI_WINBLUE)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#if _MSC_VER >= 1200
#pragma warning(pop)
#endif
#ifdef __cplusplus
}
#endif
#if defined(__cplusplus)
#define I_RRPCUNINITIALIZENDROLE_EXPORT_NAME reinterpret_cast<LPCSTR>(static_cast<ULONG_PTR>(1000))
#else
#define I_RRPCUNINITIALIZENDROLE_EXPORT_NAME ((LPCSTR)(ULONG_PTR)1000)
#endif
#endif /* __RPCDCEP_H__ */