comparison 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
comparison
equal deleted inserted replaced
1499:1f58458b7ef7 1500:91c8c3b7cbf0
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
5 */
6 #ifndef __RPCASYNC_H__
7 #define __RPCASYNC_H__
8
9 #ifdef __RPC_WIN64__
10 #include <pshpack8.h>
11 #endif
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16
17 #define RPC_ASYNC_VERSION_1_0 sizeof(RPC_ASYNC_STATE)
18
19 typedef enum _RPC_NOTIFICATION_TYPES {
20 RpcNotificationTypeNone,RpcNotificationTypeEvent,RpcNotificationTypeApc,RpcNotificationTypeIoc,RpcNotificationTypeHwnd,
21 RpcNotificationTypeCallback
22 } RPC_NOTIFICATION_TYPES;
23
24 typedef enum _RPC_ASYNC_EVENT {
25 RpcCallComplete,RpcSendComplete,RpcReceiveComplete
26 } RPC_ASYNC_EVENT;
27
28 struct _RPC_ASYNC_STATE;
29
30 typedef void RPC_ENTRY RPCNOTIFICATION_ROUTINE(struct _RPC_ASYNC_STATE *pAsync,void *Context,RPC_ASYNC_EVENT Event);
31 typedef RPCNOTIFICATION_ROUTINE *PFN_RPCNOTIFICATION_ROUTINE;
32
33 typedef struct _RPC_ASYNC_STATE {
34 unsigned int Size;
35 unsigned long Signature;
36 long Lock;
37 unsigned long Flags;
38 void *StubInfo;
39 void *UserInfo;
40 void *RuntimeInfo;
41 RPC_ASYNC_EVENT Event;
42 RPC_NOTIFICATION_TYPES NotificationType;
43 union {
44 struct {
45 PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;
46 HANDLE hThread;
47 } APC;
48 struct {
49 HANDLE hIOPort;
50 DWORD dwNumberOfBytesTransferred;
51 DWORD_PTR dwCompletionKey;
52 LPOVERLAPPED lpOverlapped;
53 } IOC;
54 struct {
55 HWND hWnd;
56 UINT Msg;
57 } HWND;
58 HANDLE hEvent;
59 PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;
60 } u;
61 LONG_PTR Reserved[4];
62 } RPC_ASYNC_STATE,*PRPC_ASYNC_STATE;
63
64 #define RPC_C_NOTIFY_ON_SEND_COMPLETE 0x1
65 #define RPC_C_INFINITE_TIMEOUT INFINITE
66
67 #define RpcAsyncGetCallHandle(pAsync) (((PRPC_ASYNC_STATE) pAsync)->RuntimeInfo)
68
69 RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncInitializeHandle(PRPC_ASYNC_STATE pAsync,unsigned int Size);
70 RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncRegisterInfo(PRPC_ASYNC_STATE pAsync);
71 RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncGetCallStatus(PRPC_ASYNC_STATE pAsync);
72 RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncCompleteCall(PRPC_ASYNC_STATE pAsync,void *Reply);
73 RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncAbortCall(PRPC_ASYNC_STATE pAsync,unsigned long ExceptionCode);
74 RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncCancelCall(PRPC_ASYNC_STATE pAsync,WINBOOL fAbort);
75 RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncCleanupThread(DWORD dwTimeout);
76
77 typedef enum tagExtendedErrorParamTypes {
78 eeptAnsiString = 1,eeptUnicodeString,eeptLongVal,eeptShortVal,eeptPointerVal,eeptNone,eeptBinary
79 } ExtendedErrorParamTypes;
80
81 #define MaxNumberOfEEInfoParams 4
82 #define RPC_EEINFO_VERSION 1
83
84 typedef struct tagBinaryParam {
85 void *Buffer;
86 short Size;
87 } BinaryParam;
88
89 typedef struct tagRPC_EE_INFO_PARAM {
90 ExtendedErrorParamTypes ParameterType;
91 union {
92 LPSTR AnsiString;
93 LPWSTR UnicodeString;
94 long LVal;
95 short SVal;
96 ULONGLONG PVal;
97 BinaryParam BVal;
98 } u;
99 } RPC_EE_INFO_PARAM;
100
101 #define EEInfoPreviousRecordsMissing 1
102 #define EEInfoNextRecordsMissing 2
103 #define EEInfoUseFileTime 4
104
105 #define EEInfoGCCOM 11
106 #define EEInfoGCFRS 12
107
108 typedef struct tagRPC_EXTENDED_ERROR_INFO {
109 ULONG Version;
110 LPWSTR ComputerName;
111 ULONG ProcessID;
112 union {
113 SYSTEMTIME SystemTime;
114 FILETIME FileTime;
115 } u;
116 ULONG GeneratingComponent;
117 ULONG Status;
118 USHORT DetectionLocation;
119 USHORT Flags;
120 int NumberOfParameters;
121 RPC_EE_INFO_PARAM Parameters[MaxNumberOfEEInfoParams];
122 } RPC_EXTENDED_ERROR_INFO;
123
124 typedef struct tagRPC_ERROR_ENUM_HANDLE {
125 ULONG Signature;
126 void *CurrentPos;
127 void *Head;
128 } RPC_ERROR_ENUM_HANDLE;
129
130 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorStartEnumeration(RPC_ERROR_ENUM_HANDLE *EnumHandle);
131 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorGetNextRecord(RPC_ERROR_ENUM_HANDLE *EnumHandle,WINBOOL CopyStrings,RPC_EXTENDED_ERROR_INFO *ErrorInfo);
132 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorEndEnumeration(RPC_ERROR_ENUM_HANDLE *EnumHandle);
133 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorResetEnumeration(RPC_ERROR_ENUM_HANDLE *EnumHandle);
134 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorGetNumberOfRecords(RPC_ERROR_ENUM_HANDLE *EnumHandle,int *Records);
135 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorSaveErrorInfo(RPC_ERROR_ENUM_HANDLE *EnumHandle,PVOID *ErrorBlob,size_t *BlobSize);
136 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorLoadErrorInfo(PVOID ErrorBlob,size_t BlobSize,RPC_ERROR_ENUM_HANDLE *EnumHandle);
137 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorAddRecord(RPC_EXTENDED_ERROR_INFO *ErrorInfo);
138 RPCRTAPI void RPC_ENTRY RpcErrorClearInformation(void);
139 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);
140 RPCRTAPI RPC_STATUS RPC_ENTRY RpcFreeAuthorizationContext(PVOID *pAuthzClientContext);
141 RPCRTAPI RPC_STATUS RPC_ENTRY RpcSsContextLockExclusive(RPC_BINDING_HANDLE ServerBindingHandle,PVOID UserContext);
142 RPCRTAPI RPC_STATUS RPC_ENTRY RpcSsContextLockShared(RPC_BINDING_HANDLE ServerBindingHandle,PVOID UserContext);
143
144 #define RPC_CALL_ATTRIBUTES_VERSION (1)
145 #define RPC_QUERY_SERVER_PRINCIPAL_NAME (2)
146 #define RPC_QUERY_CLIENT_PRINCIPAL_NAME (4)
147
148 typedef struct tagRPC_CALL_ATTRIBUTES_V1_W {
149 unsigned int Version;
150 unsigned long Flags;
151 unsigned long ServerPrincipalNameBufferLength;
152 unsigned short *ServerPrincipalName;
153 unsigned long ClientPrincipalNameBufferLength;
154 unsigned short *ClientPrincipalName;
155 unsigned long AuthenticationLevel;
156 unsigned long AuthenticationService;
157 WINBOOL NullSession;
158 } RPC_CALL_ATTRIBUTES_V1_W;
159
160 typedef struct tagRPC_CALL_ATTRIBUTES_V1_A {
161 unsigned int Version;
162 unsigned long Flags;
163 unsigned long ServerPrincipalNameBufferLength;
164 unsigned char *ServerPrincipalName;
165 unsigned long ClientPrincipalNameBufferLength;
166 unsigned char *ClientPrincipalName;
167 unsigned long AuthenticationLevel;
168 unsigned long AuthenticationService;
169 WINBOOL NullSession;
170 } RPC_CALL_ATTRIBUTES_V1_A;
171
172 #ifdef UNICODE
173 #define RPC_CALL_ATTRIBUTES_V1 RPC_CALL_ATTRIBUTES_V1_W
174 #define RpcServerInqCallAttributes RpcServerInqCallAttributesW
175 #else
176 #define RPC_CALL_ATTRIBUTES_V1 RPC_CALL_ATTRIBUTES_V1_A
177 #define RpcServerInqCallAttributes RpcServerInqCallAttributesA
178 #endif
179
180 RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerInqCallAttributesW(RPC_BINDING_HANDLE ClientBinding,void *RpcCallAttributes);
181 RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerInqCallAttributesA(RPC_BINDING_HANDLE ClientBinding,void *RpcCallAttributes);
182
183 typedef RPC_CALL_ATTRIBUTES_V1 RPC_CALL_ATTRIBUTES;
184
185 RPC_STATUS RPC_ENTRY I_RpcAsyncSetHandle(PRPC_MESSAGE Message,PRPC_ASYNC_STATE pAsync);
186 RPC_STATUS RPC_ENTRY I_RpcAsyncAbortCall(PRPC_ASYNC_STATE pAsync,unsigned long ExceptionCode);
187 int RPC_ENTRY I_RpcExceptionFilter(unsigned long ExceptionCode);
188
189 #ifdef __cplusplus
190 }
191 #endif
192
193 #ifdef __RPC_WIN64__
194 #include <poppack.h>
195 #endif
196 #endif