Mercurial > games > semicongine
diff fuhtark_test/include/winapi/rpcasync.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fuhtark_test/include/winapi/rpcasync.h Wed Nov 26 21:36:48 2025 +0700 @@ -0,0 +1,196 @@ +/** + * 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 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
