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