comparison fuhtark_test/include/winapi/rpcdcep.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 __RPCDCEP_H__
7 #define __RPCDCEP_H__
8
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12
13 typedef struct _RPC_VERSION {
14 unsigned short MajorVersion;
15 unsigned short MinorVersion;
16 } RPC_VERSION;
17
18 typedef struct _RPC_SYNTAX_IDENTIFIER {
19 GUID SyntaxGUID;
20 RPC_VERSION SyntaxVersion;
21 } RPC_SYNTAX_IDENTIFIER,*PRPC_SYNTAX_IDENTIFIER;
22
23 typedef struct _RPC_MESSAGE {
24 RPC_BINDING_HANDLE Handle;
25 unsigned long DataRepresentation;
26 void *Buffer;
27 unsigned int BufferLength;
28 unsigned int ProcNum;
29 PRPC_SYNTAX_IDENTIFIER TransferSyntax;
30 void *RpcInterfaceInformation;
31 void *ReservedForRuntime;
32 RPC_MGR_EPV *ManagerEpv;
33 void *ImportContext;
34 unsigned long RpcFlags;
35 } RPC_MESSAGE,*PRPC_MESSAGE;
36
37 typedef RPC_STATUS RPC_ENTRY RPC_FORWARD_FUNCTION(UUID *InterfaceId,RPC_VERSION *InterfaceVersion,UUID *ObjectId,unsigned char *Rpcpro,void **ppDestEndpoint);
38
39 enum RPC_ADDRESS_CHANGE_TYPE {
40 PROTOCOL_NOT_LOADED = 1,PROTOCOL_LOADED,PROTOCOL_ADDRESS_CHANGE
41 };
42
43 typedef void RPC_ENTRY RPC_ADDRESS_CHANGE_FN(void *arg);
44
45 #define RPC_CONTEXT_HANDLE_DEFAULT_GUARD ((void *) -4083)
46
47 #define RPC_CONTEXT_HANDLE_DEFAULT_FLAGS 0x00000000UL
48 #define RPC_CONTEXT_HANDLE_FLAGS 0x30000000UL
49 #define RPC_CONTEXT_HANDLE_SERIALIZE 0x10000000UL
50 #define RPC_CONTEXT_HANDLE_DONT_SERIALIZE 0x20000000UL
51
52 #define RPC_NCA_FLAGS_DEFAULT 0x00000000
53 #define RPC_NCA_FLAGS_IDEMPOTENT 0x00000001
54 #define RPC_NCA_FLAGS_BROADCAST 0x00000002
55 #define RPC_NCA_FLAGS_MAYBE 0x00000004
56
57 #define RPC_BUFFER_COMPLETE 0x00001000
58 #define RPC_BUFFER_PARTIAL 0x00002000
59 #define RPC_BUFFER_EXTRA 0x00004000
60 #define RPC_BUFFER_ASYNC 0x00008000
61 #define RPC_BUFFER_NONOTIFY 0x00010000
62
63 #define RPCFLG_MESSAGE 0x01000000UL
64 #define RPCFLG_AUTO_COMPLETE 0x08000000UL
65 #define RPCFLG_LOCAL_CALL 0x10000000UL
66 #define RPCFLG_INPUT_SYNCHRONOUS 0x20000000UL
67 #define RPCFLG_ASYNCHRONOUS 0x40000000UL
68 #define RPCFLG_NON_NDR 0x80000000UL
69
70 #define RPCFLG_HAS_MULTI_SYNTAXES 0x02000000UL
71 #define RPCFLG_HAS_CALLBACK 0x04000000UL
72
73 #define RPC_FLAGS_VALID_BIT 0x00008000
74
75 typedef void (__RPC_STUB *RPC_DISPATCH_FUNCTION)(PRPC_MESSAGE Message);
76
77 typedef struct {
78 unsigned int DispatchTableCount;
79 RPC_DISPATCH_FUNCTION *DispatchTable;
80 LONG_PTR Reserved;
81 } RPC_DISPATCH_TABLE,*PRPC_DISPATCH_TABLE;
82
83 typedef struct _RPC_PROTSEQ_ENDPOINT {
84 unsigned char *RpcProtocolSequence;
85 unsigned char *Endpoint;
86 } RPC_PROTSEQ_ENDPOINT,*PRPC_PROTSEQ_ENDPOINT;
87
88 #define NT351_INTERFACE_SIZE 0x40
89 #define RPC_INTERFACE_HAS_PIPES 0x0001
90
91 typedef struct _RPC_SERVER_INTERFACE {
92 unsigned int Length;
93 RPC_SYNTAX_IDENTIFIER InterfaceId;
94 RPC_SYNTAX_IDENTIFIER TransferSyntax;
95 PRPC_DISPATCH_TABLE DispatchTable;
96 unsigned int RpcProtseqEndpointCount;
97 PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
98 RPC_MGR_EPV *DefaultManagerEpv;
99 void const *InterpreterInfo;
100 unsigned int Flags;
101 } RPC_SERVER_INTERFACE,*PRPC_SERVER_INTERFACE;
102
103 typedef struct _RPC_CLIENT_INTERFACE {
104 unsigned int Length;
105 RPC_SYNTAX_IDENTIFIER InterfaceId;
106 RPC_SYNTAX_IDENTIFIER TransferSyntax;
107 PRPC_DISPATCH_TABLE DispatchTable;
108 unsigned int RpcProtseqEndpointCount;
109 PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
110 ULONG_PTR Reserved;
111 void const *InterpreterInfo;
112 unsigned int Flags;
113 } RPC_CLIENT_INTERFACE,*PRPC_CLIENT_INTERFACE;
114
115 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcNegotiateTransferSyntax(RPC_MESSAGE *Message);
116 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcGetBuffer(RPC_MESSAGE *Message);
117 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcGetBufferWithObject(RPC_MESSAGE *Message,UUID *ObjectUuid);
118 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcSendReceive(RPC_MESSAGE *Message);
119 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcFreeBuffer(RPC_MESSAGE *Message);
120 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcSend(PRPC_MESSAGE Message);
121 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcReceive(PRPC_MESSAGE Message,unsigned int Size);
122 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcFreePipeBuffer(RPC_MESSAGE *Message);
123 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcReallocPipeBuffer(PRPC_MESSAGE Message,unsigned int NewSize);
124
125 typedef void *I_RPC_MUTEX;
126
127 #ifdef UNICODE
128 #define I_RpcNsBindingSetEntryName I_RpcNsBindingSetEntryNameW
129 #define I_RpcServerUseProtseqEp2 I_RpcServerUseProtseqEp2W
130 #define I_RpcServerUseProtseq2 I_RpcServerUseProtseq2W
131 #define I_RpcBindingInqDynamicEndpoint I_RpcBindingInqDynamicEndpointW
132 #else
133 #define I_RpcNsBindingSetEntryName I_RpcNsBindingSetEntryNameA
134 #define I_RpcServerUseProtseqEp2 I_RpcServerUseProtseqEp2A
135 #define I_RpcServerUseProtseq2 I_RpcServerUseProtseq2A
136 #define I_RpcBindingInqDynamicEndpoint I_RpcBindingInqDynamicEndpointA
137 #endif
138
139 RPCRTAPI void RPC_ENTRY I_RpcRequestMutex(I_RPC_MUTEX *Mutex);
140 RPCRTAPI void RPC_ENTRY I_RpcClearMutex(I_RPC_MUTEX Mutex);
141 RPCRTAPI void RPC_ENTRY I_RpcDeleteMutex(I_RPC_MUTEX Mutex);
142 RPCRTAPI void *RPC_ENTRY I_RpcAllocate(unsigned int Size);
143 RPCRTAPI void RPC_ENTRY I_RpcFree(void *Object);
144 RPCRTAPI void RPC_ENTRY I_RpcPauseExecution(unsigned long Milliseconds);
145 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcGetExtendedError();
146
147 typedef void (__RPC_API *PRPC_RUNDOWN)(void *AssociationContext);
148
149 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcMonitorAssociation(RPC_BINDING_HANDLE Handle,PRPC_RUNDOWN RundownRoutine,void *Context);
150 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcStopMonitorAssociation(RPC_BINDING_HANDLE Handle);
151 RPCRTAPI RPC_BINDING_HANDLE RPC_ENTRY I_RpcGetCurrentCallHandle(void);
152 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcGetAssociationContext(RPC_BINDING_HANDLE BindingHandle,void **AssociationContext);
153 RPCRTAPI void *RPC_ENTRY I_RpcGetServerContextList(RPC_BINDING_HANDLE BindingHandle);
154 RPCRTAPI void RPC_ENTRY I_RpcSetServerContextList(RPC_BINDING_HANDLE BindingHandle,void *ServerContextList);
155 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcNsInterfaceExported(unsigned long EntryNameSyntax,unsigned short *EntryName,RPC_SERVER_INTERFACE *RpcInterfaceInformation);
156 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcNsInterfaceUnexported(unsigned long EntryNameSyntax,unsigned short *EntryName,RPC_SERVER_INTERFACE *RpcInterfaceInformation);
157 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcBindingToStaticStringBindingW(RPC_BINDING_HANDLE Binding,unsigned short **StringBinding);
158 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcBindingInqSecurityContext(RPC_BINDING_HANDLE Binding,void **SecurityContextHandle);
159 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcBindingInqWireIdForSnego(RPC_BINDING_HANDLE Binding,RPC_CSTR WireId);
160 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcBindingInqMarshalledTargetInfo (RPC_BINDING_HANDLE Binding,unsigned long *MarshalledTargetInfoLength,RPC_CSTR *MarshalledTargetInfo);
161 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcBindingInqLocalClientPID(RPC_BINDING_HANDLE Binding,unsigned long *Pid);
162 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcBindingHandleToAsyncHandle(RPC_BINDING_HANDLE Binding,void **AsyncHandle);
163 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcNsBindingSetEntryNameW(RPC_BINDING_HANDLE Binding,unsigned long EntryNameSyntax,RPC_WSTR EntryName);
164 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcNsBindingSetEntryNameA(RPC_BINDING_HANDLE Binding,unsigned long EntryNameSyntax,RPC_CSTR EntryName);
165 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcServerUseProtseqEp2A(RPC_CSTR NetworkAddress,RPC_CSTR Protseq,unsigned int MaxCalls,RPC_CSTR Endpoint,void *SecurityDescriptor,void *Policy);
166 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcServerUseProtseqEp2W(RPC_WSTR NetworkAddress,RPC_WSTR Protseq,unsigned int MaxCalls,RPC_WSTR Endpoint,void *SecurityDescriptor,void *Policy);
167 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcServerUseProtseq2W(RPC_WSTR NetworkAddress,RPC_WSTR Protseq,unsigned int MaxCalls,void *SecurityDescriptor,void *Policy);
168 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcServerUseProtseq2A(RPC_CSTR NetworkAddress,RPC_CSTR Protseq,unsigned int MaxCalls,void *SecurityDescriptor,void *Policy);
169 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcBindingInqDynamicEndpointW(RPC_BINDING_HANDLE Binding,RPC_WSTR *DynamicEndpoint);
170 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcBindingInqDynamicEndpointA(RPC_BINDING_HANDLE Binding,RPC_CSTR *DynamicEndpoint);
171 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcServerCheckClientRestriction(RPC_BINDING_HANDLE Context);
172
173 #define TRANSPORT_TYPE_CN 0x01
174 #define TRANSPORT_TYPE_DG 0x02
175 #define TRANSPORT_TYPE_LPC 0x04
176 #define TRANSPORT_TYPE_WMSG 0x08
177
178 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcBindingInqTransportType(RPC_BINDING_HANDLE Binding,unsigned int *Type);
179
180 typedef struct _RPC_TRANSFER_SYNTAX {
181 UUID Uuid;
182 unsigned short VersMajor;
183 unsigned short VersMinor;
184 } RPC_TRANSFER_SYNTAX;
185
186 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcIfInqTransferSyntaxes(RPC_IF_HANDLE RpcIfHandle,RPC_TRANSFER_SYNTAX *TransferSyntaxes,unsigned int TransferSyntaxSize,unsigned int *TransferSyntaxCount);
187 RPCRTAPI RPC_STATUS RPC_ENTRY I_UuidCreate(UUID *Uuid);
188 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcBindingCopy(RPC_BINDING_HANDLE SourceBinding,RPC_BINDING_HANDLE *DestinationBinding);
189 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcBindingIsClientLocal(RPC_BINDING_HANDLE BindingHandle,unsigned int *ClientLocalFlag);
190 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcBindingInqConnId(RPC_BINDING_HANDLE Binding,void **ConnId,int *pfFirstCall);
191 RPCRTAPI void RPC_ENTRY I_RpcSsDontSerializeContext(void);
192 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcLaunchDatagramReceiveThread(void *pAddress);
193 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcServerRegisterForwardFunction(RPC_FORWARD_FUNCTION *pForwardFunction);
194 RPC_ADDRESS_CHANGE_FN *RPC_ENTRY I_RpcServerInqAddressChangeFn();
195 RPC_STATUS RPC_ENTRY I_RpcServerSetAddressChangeFn(RPC_ADDRESS_CHANGE_FN *pAddressChangeFn);
196
197 #define RPC_P_ADDR_FORMAT_TCP_IPV4 1
198 #define RPC_P_ADDR_FORMAT_TCP_IPV6 2
199
200 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcServerInqLocalConnAddress(RPC_BINDING_HANDLE Binding,void *Buffer,unsigned long *BufferSize,unsigned long *AddressFormat);
201 RPCRTAPI void RPC_ENTRY I_RpcSessionStrictContextHandle();
202 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcTurnOnEEInfoPropagation(void);
203 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcConnectionInqSockBuffSize(unsigned long *RecvBuffSize,unsigned long *SendBuffSize);
204 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcConnectionSetSockBuffSize(unsigned long RecvBuffSize,unsigned long SendBuffSize);
205
206 typedef void (*RPCLT_PDU_FILTER_FUNC)(void *Buffer,unsigned int BufferLength,int fDatagram);
207 typedef void (__cdecl *RPC_SETFILTER_FUNC)(RPCLT_PDU_FILTER_FUNC pfnFilter);
208
209 #ifndef WINNT
210 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcServerStartListening(void *hWnd);
211 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcServerStopListening();
212
213 typedef RPC_STATUS (*RPC_BLOCKING_FN)(void *hWnd,void *Context,void *hSyncEvent);
214
215 #ifdef UNICODE
216 #define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointW
217 #else
218 #define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointA
219 #endif
220
221 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcBindingSetAsync(RPC_BINDING_HANDLE Binding,RPC_BLOCKING_FN BlockingFn,unsigned long ServerTid);
222 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcSetThreadParams(int fClientFree,void *Context,void *hWndClient);
223 RPCRTAPI unsigned int RPC_ENTRY I_RpcWindowProc(void *hWnd,unsigned int Message,unsigned int wParam,unsigned long lParam);
224 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcServerUnregisterEndpointA(RPC_CSTR Protseq,RPC_CSTR Endpoint);
225 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcServerUnregisterEndpointW(RPC_WSTR Protseq,RPC_WSTR Endpoint);
226 #endif
227
228 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcServerInqTransportType(unsigned int *Type);
229 RPCRTAPI long RPC_ENTRY I_RpcMapWin32Status(RPC_STATUS Status);
230
231 typedef struct _RPC_C_OPT_METADATA_DESCRIPTOR {
232 unsigned long BufferSize;
233 char *Buffer;
234 } RPC_C_OPT_METADATA_DESCRIPTOR;
235
236 typedef struct _RDR_CALLOUT_STATE {
237 RPC_STATUS LastError;
238 void *LastEEInfo;
239 RPC_HTTP_REDIRECTOR_STAGE LastCalledStage;
240 unsigned short *ServerName;
241 unsigned short *ServerPort;
242 unsigned short *RemoteUser;
243 unsigned short *AuthType;
244 unsigned char ResourceTypePresent;
245 unsigned char MetadataPresent;
246 unsigned char SessionIdPresent;
247 unsigned char InterfacePresent;
248 UUID ResourceType;
249 RPC_C_OPT_METADATA_DESCRIPTOR Metadata;
250 UUID SessionId;
251 RPC_SYNTAX_IDENTIFIER Interface;
252 void *CertContext;
253 } RDR_CALLOUT_STATE;
254
255 typedef RPC_STATUS (RPC_ENTRY *I_RpcProxyIsValidMachineFn)(char *pszMachine,char *pszDotMachine,unsigned long dwPortNumber);
256 typedef RPC_STATUS (RPC_ENTRY *I_RpcProxyGetClientAddressFn)(void *Context,char *Buffer,unsigned long *BufferLength);
257 typedef RPC_STATUS (RPC_ENTRY *I_RpcProxyGetConnectionTimeoutFn)(unsigned long *ConnectionTimeout);
258 typedef RPC_STATUS (RPC_ENTRY *I_RpcPerformCalloutFn)(void *Context,RDR_CALLOUT_STATE *CallOutState,RPC_HTTP_REDIRECTOR_STAGE Stage);
259 typedef void (RPC_ENTRY *I_RpcFreeCalloutStateFn)(RDR_CALLOUT_STATE *CallOutState);
260
261 typedef struct tagI_RpcProxyCallbackInterface {
262 I_RpcProxyIsValidMachineFn IsValidMachineFn;
263 I_RpcProxyGetClientAddressFn GetClientAddressFn;
264 I_RpcProxyGetConnectionTimeoutFn GetConnectionTimeoutFn;
265 I_RpcPerformCalloutFn PerformCalloutFn;
266 I_RpcFreeCalloutStateFn FreeCalloutStateFn;
267 } I_RpcProxyCallbackInterface;
268
269 #define RPC_PROXY_CONNECTION_TYPE_IN_PROXY 0
270 #define RPC_PROXY_CONNECTION_TYPE_OUT_PROXY 1
271
272 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcProxyNewConnection(unsigned long ConnectionType,unsigned short *ServerAddress,unsigned short *ServerPort,unsigned short *MinConnTimeout,void *ConnectionParameter,RDR_CALLOUT_STATE *CallOutState,I_RpcProxyCallbackInterface *ProxyCallbackInterface);
273 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcReplyToClientWithStatus(void *ConnectionParameter,RPC_STATUS RpcStatus);
274 RPCRTAPI void RPC_ENTRY I_RpcRecordCalloutFailure(RPC_STATUS RpcStatus,RDR_CALLOUT_STATE *CallOutState,unsigned short *DllName);
275
276 #ifdef __cplusplus
277 }
278 #endif
279 #endif