123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- /**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
- #ifndef __RPCASYNC_H__
- #define __RPCASYNC_H__
- #include <_mingw_unicode.h>
- #ifdef __RPC_WIN64__
- #include <pshpack8.h>
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif
- #define RPC_ASYNC_VERSION_1_0 sizeof(RPC_ASYNC_STATE)
- typedef enum _RPC_NOTIFICATION_TYPES {
- RpcNotificationTypeNone,RpcNotificationTypeEvent,RpcNotificationTypeApc,RpcNotificationTypeIoc,RpcNotificationTypeHwnd,
- RpcNotificationTypeCallback
- } RPC_NOTIFICATION_TYPES;
- typedef enum _RPC_ASYNC_EVENT {
- RpcCallComplete,RpcSendComplete,RpcReceiveComplete
- } RPC_ASYNC_EVENT;
- struct _RPC_ASYNC_STATE;
- typedef void RPC_ENTRY RPCNOTIFICATION_ROUTINE(struct _RPC_ASYNC_STATE *pAsync,void *Context,RPC_ASYNC_EVENT Event);
- typedef RPCNOTIFICATION_ROUTINE *PFN_RPCNOTIFICATION_ROUTINE;
- typedef struct _RPC_ASYNC_STATE {
- unsigned int Size;
- unsigned __LONG32 Signature;
- __LONG32 Lock;
- unsigned __LONG32 Flags;
- void *StubInfo;
- void *UserInfo;
- void *RuntimeInfo;
- RPC_ASYNC_EVENT Event;
- RPC_NOTIFICATION_TYPES NotificationType;
- union {
- struct {
- PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;
- HANDLE hThread;
- } APC;
- struct {
- HANDLE hIOPort;
- DWORD dwNumberOfBytesTransferred;
- DWORD_PTR dwCompletionKey;
- LPOVERLAPPED lpOverlapped;
- } IOC;
- struct {
- HWND hWnd;
- UINT Msg;
- } HWND;
- HANDLE hEvent;
- PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;
- } u;
- LONG_PTR Reserved[4];
- } RPC_ASYNC_STATE,*PRPC_ASYNC_STATE;
- #define RPC_C_NOTIFY_ON_SEND_COMPLETE 0x1
- #define RPC_C_INFINITE_TIMEOUT INFINITE
- #define RpcAsyncGetCallHandle(pAsync) (((PRPC_ASYNC_STATE) pAsync)->RuntimeInfo)
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncInitializeHandle(PRPC_ASYNC_STATE pAsync,unsigned int Size);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncRegisterInfo(PRPC_ASYNC_STATE pAsync);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncGetCallStatus(PRPC_ASYNC_STATE pAsync);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncCompleteCall(PRPC_ASYNC_STATE pAsync,void *Reply);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncAbortCall(PRPC_ASYNC_STATE pAsync,unsigned __LONG32 ExceptionCode);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncCancelCall(PRPC_ASYNC_STATE pAsync,WINBOOL fAbort);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncCleanupThread(DWORD dwTimeout);
- typedef enum tagExtendedErrorParamTypes {
- eeptAnsiString = 1,eeptUnicodeString,eeptLongVal,eeptShortVal,eeptPointerVal,eeptNone,eeptBinary
- } ExtendedErrorParamTypes;
- #define MaxNumberOfEEInfoParams 4
- #define RPC_EEINFO_VERSION 1
- typedef struct tagBinaryParam {
- void *Buffer;
- short Size;
- } BinaryParam;
- typedef struct tagRPC_EE_INFO_PARAM {
- ExtendedErrorParamTypes ParameterType;
- union {
- LPSTR AnsiString;
- LPWSTR UnicodeString;
- __LONG32 LVal;
- short SVal;
- ULONGLONG PVal;
- BinaryParam BVal;
- } u;
- } RPC_EE_INFO_PARAM;
- #define EEInfoPreviousRecordsMissing 1
- #define EEInfoNextRecordsMissing 2
- #define EEInfoUseFileTime 4
- #define EEInfoGCCOM 11
- #define EEInfoGCFRS 12
- typedef struct tagRPC_EXTENDED_ERROR_INFO {
- ULONG Version;
- LPWSTR ComputerName;
- ULONG ProcessID;
- union {
- SYSTEMTIME SystemTime;
- FILETIME FileTime;
- } u;
- ULONG GeneratingComponent;
- ULONG Status;
- USHORT DetectionLocation;
- USHORT Flags;
- int NumberOfParameters;
- RPC_EE_INFO_PARAM Parameters[MaxNumberOfEEInfoParams];
- } RPC_EXTENDED_ERROR_INFO;
- typedef struct tagRPC_ERROR_ENUM_HANDLE {
- ULONG Signature;
- void *CurrentPos;
- void *Head;
- } RPC_ERROR_ENUM_HANDLE;
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorStartEnumeration(RPC_ERROR_ENUM_HANDLE *EnumHandle);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorGetNextRecord(RPC_ERROR_ENUM_HANDLE *EnumHandle,WINBOOL CopyStrings,RPC_EXTENDED_ERROR_INFO *ErrorInfo);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorEndEnumeration(RPC_ERROR_ENUM_HANDLE *EnumHandle);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorResetEnumeration(RPC_ERROR_ENUM_HANDLE *EnumHandle);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorGetNumberOfRecords(RPC_ERROR_ENUM_HANDLE *EnumHandle,int *Records);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorSaveErrorInfo(RPC_ERROR_ENUM_HANDLE *EnumHandle,PVOID *ErrorBlob,size_t *BlobSize);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorLoadErrorInfo(PVOID ErrorBlob,size_t BlobSize,RPC_ERROR_ENUM_HANDLE *EnumHandle);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorAddRecord(RPC_EXTENDED_ERROR_INFO *ErrorInfo);
- RPCRTAPI void RPC_ENTRY RpcErrorClearInformation(void);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcGetAuthorizationContextForClient(RPC_BINDING_HANDLE ClientBinding,WINBOOL ImpersonateOnReturn,PVOID Reserved1,PLARGE_INTEGER pExpirationTime,LUID Reserved2,DWORD Reserved3,PVOID Reserved4,PVOID *pAuthzClientContext);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcFreeAuthorizationContext(PVOID *pAuthzClientContext);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcSsContextLockExclusive(RPC_BINDING_HANDLE ServerBindingHandle,PVOID UserContext);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcSsContextLockShared(RPC_BINDING_HANDLE ServerBindingHandle,PVOID UserContext);
- #define RPC_CALL_ATTRIBUTES_VERSION (1)
- #define RPC_QUERY_SERVER_PRINCIPAL_NAME (2)
- #define RPC_QUERY_CLIENT_PRINCIPAL_NAME (4)
- typedef struct tagRPC_CALL_ATTRIBUTES_V1_W {
- unsigned int Version;
- unsigned __LONG32 Flags;
- unsigned __LONG32 ServerPrincipalNameBufferLength;
- unsigned short *ServerPrincipalName;
- unsigned __LONG32 ClientPrincipalNameBufferLength;
- unsigned short *ClientPrincipalName;
- unsigned __LONG32 AuthenticationLevel;
- unsigned __LONG32 AuthenticationService;
- WINBOOL NullSession;
- } RPC_CALL_ATTRIBUTES_V1_W;
- typedef struct tagRPC_CALL_ATTRIBUTES_V1_A {
- unsigned int Version;
- unsigned __LONG32 Flags;
- unsigned __LONG32 ServerPrincipalNameBufferLength;
- unsigned char *ServerPrincipalName;
- unsigned __LONG32 ClientPrincipalNameBufferLength;
- unsigned char *ClientPrincipalName;
- unsigned __LONG32 AuthenticationLevel;
- unsigned __LONG32 AuthenticationService;
- WINBOOL NullSession;
- } RPC_CALL_ATTRIBUTES_V1_A;
- #define RPC_CALL_ATTRIBUTES_V1 __MINGW_NAME_UAW(RPC_CALL_ATTRIBUTES_V1)
- #define RpcServerInqCallAttributes __MINGW_NAME_AW(RpcServerInqCallAttributes)
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerInqCallAttributesW(RPC_BINDING_HANDLE ClientBinding,void *RpcCallAttributes);
- RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerInqCallAttributesA(RPC_BINDING_HANDLE ClientBinding,void *RpcCallAttributes);
- typedef RPC_CALL_ATTRIBUTES_V1 RPC_CALL_ATTRIBUTES;
- RPC_STATUS RPC_ENTRY I_RpcAsyncSetHandle(PRPC_MESSAGE Message,PRPC_ASYNC_STATE pAsync);
- RPC_STATUS RPC_ENTRY I_RpcAsyncAbortCall(PRPC_ASYNC_STATE pAsync,unsigned __LONG32 ExceptionCode);
- int RPC_ENTRY I_RpcExceptionFilter(unsigned __LONG32 ExceptionCode);
- typedef union _RPC_ASYNC_NOTIFICATION_INFO {
- struct {
- PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;
- HANDLE hThread;
- } APC;
- struct {
- HANDLE hIOPort;
- DWORD dwNumberOfBytesTransferred;
- DWORD_PTR dwCompletionKey;
- LPOVERLAPPED lpOverlapped;
- } IOC;
- struct {
- HWND hWnd;
- UINT Msg;
- } HWND;
- HANDLE hEvent;
- PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;
- } RPC_ASYNC_NOTIFICATION_INFO, *PRPC_ASYNC_NOTIFICATION_INFO;
- RPC_STATUS RPC_ENTRY RpcBindingBind(
- PRPC_ASYNC_STATE pAsync,
- RPC_BINDING_HANDLE Binding,
- RPC_IF_HANDLE IfSpec
- );
- RPC_STATUS RPC_ENTRY RpcBindingUnbind(
- RPC_BINDING_HANDLE Binding
- );
- typedef enum _RpcCallType {
- rctInvalid,
- rctNormal,
- rctTraining,
- rctGuaranteed
- } RpcCallType;
- typedef enum _RpcLocalAddressFormat {
- rlafInvalid,
- rlafIPv4,
- rlafIPv6
- } RpcLocalAddressFormat;
- typedef enum _RPC_NOTIFICATIONS {
- RpcNotificationCallNone = 0,
- RpcNotificationClientDisconnect = 1,
- RpcNotificationCallCancel = 2
- } RPC_NOTIFICATIONS;
- typedef enum _RpcCallClientLocality {
- rcclInvalid,
- rcclLocal,
- rcclRemote,
- rcclClientUnknownLocality
- } RpcCallClientLocality;
- RPC_STATUS RPC_ENTRY RpcServerSubscribeForNotification(
- RPC_BINDING_HANDLE Binding,
- DWORD Notification,
- RPC_NOTIFICATION_TYPES NotificationType,
- RPC_ASYNC_NOTIFICATION_INFO *NotificationInfo
- );
- RPC_STATUS RPC_ENTRY RpcServerUnsubscribeForNotification(
- RPC_BINDING_HANDLE Binding,
- RPC_NOTIFICATIONS Notification,
- unsigned __LONG32 *NotificationsQueued
- );
- #if (_WIN32_WINNT >= 0x0600)
- typedef struct tagRPC_CALL_LOCAL_ADDRESS_V1_A {
- unsigned int Version;
- void *Buffer;
- unsigned __LONG32 BufferSize;
- RpcLocalAddressFormat AddressFormat;
- } RPC_CALL_LOCAL_ADDRESS_V1_A, RPC_CALL_LOCAL_ADDRESS_A;
- typedef struct tagRPC_CALL_LOCAL_ADDRESS_V1_W {
- unsigned int Version;
- void *Buffer;
- unsigned __LONG32 BufferSize;
- RpcLocalAddressFormat AddressFormat;
- } RPC_CALL_LOCAL_ADDRESS_V1_W, RPC_CALL_LOCAL_ADDRESS_W;
- #define RPC_CALL_LOCAL_ADDRESS_V1 __MINGW_NAME_AW(RPC_CALL_LOCAL_ADDRESS_V1_)
- #define RPC_CALL_LOCAL_ADDRESS __MINGW_NAME_AW(RPC_CALL_LOCAL_ADDRESS_)
- typedef struct tagRPC_CALL_ATTRIBUTES_V2A {
- unsigned int Version;
- unsigned __LONG32 Flags;
- unsigned __LONG32 ServerPrincipalNameBufferLength;
- unsigned short *ServerPrincipalName;
- unsigned __LONG32 ClientPrincipalNameBufferLength;
- unsigned short *ClientPrincipalName;
- unsigned __LONG32 AuthenticationLevel;
- unsigned __LONG32 AuthenticationService;
- WINBOOL NullSession;
- WINBOOL KernelMode;
- unsigned __LONG32 ProtocolSequence;
- RpcCallClientLocality IsClientLocal;
- HANDLE ClientPID;
- unsigned __LONG32 CallStatus;
- RpcCallType CallType;
- RPC_CALL_LOCAL_ADDRESS_A *CallLocalAddress;
- unsigned short OpNum;
- UUID InterfaceUuid;
- } RPC_CALL_ATTRIBUTES_V2_A, RPC_CALL_ATTRIBUTES_A;
- typedef struct tagRPC_CALL_ATTRIBUTES_V2W {
- unsigned int Version;
- unsigned __LONG32 Flags;
- unsigned __LONG32 ServerPrincipalNameBufferLength;
- unsigned short *ServerPrincipalName;
- unsigned __LONG32 ClientPrincipalNameBufferLength;
- unsigned short *ClientPrincipalName;
- unsigned __LONG32 AuthenticationLevel;
- unsigned __LONG32 AuthenticationService;
- WINBOOL NullSession;
- WINBOOL KernelMode;
- unsigned __LONG32 ProtocolSequence;
- RpcCallClientLocality IsClientLocal;
- HANDLE ClientPID;
- unsigned __LONG32 CallStatus;
- RpcCallType CallType;
- RPC_CALL_LOCAL_ADDRESS_W *CallLocalAddress;
- unsigned short OpNum;
- UUID InterfaceUuid;
- } RPC_CALL_ATTRIBUTES_V2_W, RPC_CALL_ATTRIBUTES_W;
- #define RPC_CALL_ATTRIBUTES_V2 __MINGW_NAME_AW(RPC_CALL_ATTRIBUTES_V2_)
- RPC_STATUS RPC_ENTRY RpcDiagnoseError(
- RPC_BINDING_HANDLE BindingHandle,
- RPC_IF_HANDLE IfSpec,
- RPC_STATUS RpcStatus,
- RPC_ERROR_ENUM_HANDLE *EnumHandle,
- ULONG Options,
- HWND ParentWindow
- );
- #endif /*(_WIN32_WINNT >= 0x0600)*/
- #ifdef __cplusplus
- }
- #endif
- #ifdef __RPC_WIN64__
- #include <poppack.h>
- #endif
- #endif
|