| /** |
| * This file has no copyright assigned and is placed in the Public Domain. |
| * This file is part of the w64 mingw-runtime package. |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| */ |
| #ifndef __RPCASYNC_H__ |
| #define __RPCASYNC_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 long Signature; |
| long Lock; |
| unsigned long 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 long 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; |
| long 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 long Flags; |
| unsigned long ServerPrincipalNameBufferLength; |
| unsigned short *ServerPrincipalName; |
| unsigned long ClientPrincipalNameBufferLength; |
| unsigned short *ClientPrincipalName; |
| unsigned long AuthenticationLevel; |
| unsigned long AuthenticationService; |
| WINBOOL NullSession; |
| } RPC_CALL_ATTRIBUTES_V1_W; |
| |
| typedef struct tagRPC_CALL_ATTRIBUTES_V1_A { |
| unsigned int Version; |
| unsigned long Flags; |
| unsigned long ServerPrincipalNameBufferLength; |
| unsigned char *ServerPrincipalName; |
| unsigned long ClientPrincipalNameBufferLength; |
| unsigned char *ClientPrincipalName; |
| unsigned long AuthenticationLevel; |
| unsigned long AuthenticationService; |
| WINBOOL NullSession; |
| } RPC_CALL_ATTRIBUTES_V1_A; |
| |
| #ifdef UNICODE |
| #define RPC_CALL_ATTRIBUTES_V1 RPC_CALL_ATTRIBUTES_V1_W |
| #define RpcServerInqCallAttributes RpcServerInqCallAttributesW |
| #else |
| #define RPC_CALL_ATTRIBUTES_V1 RPC_CALL_ATTRIBUTES_V1_A |
| #define RpcServerInqCallAttributes RpcServerInqCallAttributesA |
| #endif |
| |
| 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 long ExceptionCode); |
| int RPC_ENTRY I_RpcExceptionFilter(unsigned long ExceptionCode); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #ifdef __RPC_WIN64__ |
| #include <poppack.h> |
| #endif |
| #endif |