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