xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/windows/rpcdcep.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7  * Source: $(DRUNTIMESRC core/sys/windows/_rpcdcep.d)
8  */
9 module core.sys.windows.rpcdcep;
version(Windows)10 version (Windows):
11 @system:
12 
13 version (ANSI) {} else version = Unicode;
14 
15 import core.sys.windows.basetyps;
16 import core.sys.windows.w32api;
17 import core.sys.windows.windef;
18 
19 mixin DECLARE_HANDLE!("I_RPC_HANDLE");
20 alias long RPC_STATUS;
21 
22 enum RPC_NCA_FLAGS_DEFAULT=0;
23 enum RPC_NCA_FLAGS_IDEMPOTENT=1;
24 enum RPC_NCA_FLAGS_BROADCAST=2;
25 enum RPC_NCA_FLAGS_MAYBE=4;
26 enum RPCFLG_ASYNCHRONOUS=0x40000000;
27 enum RPCFLG_INPUT_SYNCHRONOUS=0x20000000;
28 enum RPC_FLAGS_VALID_BIT=0x8000;
29 
30 enum TRANSPORT_TYPE_CN=1;
31 enum TRANSPORT_TYPE_DG=2;
32 enum TRANSPORT_TYPE_LPC=4;
33 enum TRANSPORT_TYPE_WMSG=8;
34 
35 struct RPC_VERSION {
36     ushort MajorVersion;
37     ushort MinorVersion;
38 }
39 struct RPC_SYNTAX_IDENTIFIER {
40     GUID        SyntaxGUID;
41     RPC_VERSION SyntaxVersion;
42 }
43 alias RPC_SYNTAX_IDENTIFIER* PRPC_SYNTAX_IDENTIFIER;
44 
45 struct RPC_MESSAGE {
46     HANDLE Handle;
47     uint  DataRepresentation;
48     void* Buffer;
49     uint  BufferLength;
50     uint  ProcNum;
51     PRPC_SYNTAX_IDENTIFIER TransferSyntax;
52     void* RpcInterfaceInformation;
53     void* ReservedForRuntime;
54     void* ManagerEpv;
55     void* ImportContext;
56     uint  RpcFlags;
57 }
58 alias RPC_MESSAGE* PRPC_MESSAGE;
59 
60 extern (Windows) {
61 alias void function (PRPC_MESSAGE Message) RPC_DISPATCH_FUNCTION;
62 }
63 
64 struct RPC_DISPATCH_TABLE {
65     uint DispatchTableCount;
66     RPC_DISPATCH_FUNCTION* DispatchTable;
67     LONG_PTR Reserved;
68 }
69 alias RPC_DISPATCH_TABLE* PRPC_DISPATCH_TABLE;
70 
71 struct RPC_PROTSEQ_ENDPOINT {
72     ubyte* RpcProtocolSequence;
73     ubyte* Endpoint;
74 }
75 alias RPC_PROTSEQ_ENDPOINT* PRPC_PROTSEQ_ENDPOINT;
76 
77 struct RPC_SERVER_INTERFACE {
78     uint                  Length;
79     RPC_SYNTAX_IDENTIFIER InterfaceId;
80     RPC_SYNTAX_IDENTIFIER TransferSyntax;
81     PRPC_DISPATCH_TABLE   DispatchTable;
82     uint                  RpcProtseqEndpointCount;
83     PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
84     void*                 DefaultManagerEpv;
85 const(void)*          InterpreterInfo;
86 }
87 alias RPC_SERVER_INTERFACE* PRPC_SERVER_INTERFACE;
88 
89 struct RPC_CLIENT_INTERFACE {
90     uint                  Length;
91     RPC_SYNTAX_IDENTIFIER InterfaceId;
92     RPC_SYNTAX_IDENTIFIER TransferSyntax;
93     PRPC_DISPATCH_TABLE   DispatchTable;
94     uint                  RpcProtseqEndpointCount;
95     PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
96     ULONG_PTR             Reserved;
97 const(void)*          InterpreterInfo;
98 }
99 alias RPC_CLIENT_INTERFACE* PRPC_CLIENT_INTERFACE;
100 
101 alias TypeDef!(void*) I_RPC_MUTEX;
102 
103 struct RPC_TRANSFER_SYNTAX {
104     GUID   Uuid;
105     ushort VersMajor;
106     ushort VersMinor;
107 }
108 alias RPC_STATUS function(void*, void*, void*) RPC_BLOCKING_FN;
109 
110 extern (Windows) {
111     alias void function(void*) PRPC_RUNDOWN;
112 
113     int    I_RpcGetBuffer(RPC_MESSAGE*);
114     int    I_RpcSendReceive(RPC_MESSAGE*);
115     int    I_RpcSend(RPC_MESSAGE*);
116     int    I_RpcFreeBuffer(RPC_MESSAGE*);
117     void   I_RpcRequestMutex(I_RPC_MUTEX*);
118     void   I_RpcClearMutex(I_RPC_MUTEX);
119     void   I_RpcDeleteMutex(I_RPC_MUTEX);
120     void*  I_RpcAllocate(uint);
121     void   I_RpcFree(void*);
122     void   I_RpcPauseExecution(uint);
123     int    I_RpcMonitorAssociation(HANDLE, PRPC_RUNDOWN, void*);
124     int    I_RpcStopMonitorAssociation(HANDLE);
125     HANDLE I_RpcGetCurrentCallHandle();
126     int    I_RpcGetAssociationContext(void**);
127     int    I_RpcSetAssociationContext(void*);
128     int    I_RpcNsBindingSetEntryName(HANDLE, uint, wchar*);
129     int    I_RpcBindingInqDynamicEndpoint(HANDLE, wchar**);
130     int    I_RpcBindingInqTransportType(HANDLE, uint*);
131     int    I_RpcIfInqTransferSyntaxes(HANDLE, RPC_TRANSFER_SYNTAX*, uint,
132              uint*);
133     int    I_UuidCreate(GUID*);
134     int    I_RpcBindingCopy(HANDLE, HANDLE*);
135     int    I_RpcBindingIsClientLocal(HANDLE, uint*);
136     void   I_RpcSsDontSerializeContext();
137     int    I_RpcServerRegisterForwardFunction(int function (GUID*,
138              RPC_VERSION*, GUID*, ubyte*, void**));
139     int    I_RpcConnectionInqSockBuffSize(uint*, uint*);
140     int    I_RpcConnectionSetSockBuffSize(uint, uint);
141     int    I_RpcBindingSetAsync(HANDLE, RPC_BLOCKING_FN);
142     int    I_RpcAsyncSendReceive(RPC_MESSAGE*, void*);
143     int    I_RpcGetThreadWindowHandle(void**);
144     int    I_RpcServerThreadPauseListening();
145     int    I_RpcServerThreadContinueListening();
146     int    I_RpcServerUnregisterEndpointA(ubyte*, ubyte*);
147     int    I_RpcServerUnregisterEndpointW(ushort*, ushort*);
148 }
149 
version(Unicode)150 version (Unicode) {
151     alias I_RpcServerUnregisterEndpointW I_RpcServerUnregisterEndpoint;
152 } else {
153     alias I_RpcServerUnregisterEndpointA I_RpcServerUnregisterEndpoint;
154 }
155