Fixed atom test to work on Windows.
[wine/multimedia.git] / include / rpcdcep.h
blob91714079ea8ec6d0360e9967ae8c141698c5895f
1 /*
2 * Copyright (C) 2000 Francois Gouget
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 #ifndef __WINE_RPCDCEP_H
20 #define __WINE_RPCDCEP_H
22 typedef struct _RPC_VERSION {
23 unsigned short MajorVersion;
24 unsigned short MinorVersion;
25 } RPC_VERSION;
27 typedef struct _RPC_SYNTAX_IDENTIFIER {
28 GUID SyntaxGUID;
29 RPC_VERSION SyntaxVersion;
30 } RPC_SYNTAX_IDENTIFIER, *PRPC_SYNTAX_IDENTIFIER;
32 typedef struct _RPC_MESSAGE
34 RPC_BINDING_HANDLE Handle;
35 unsigned long DataRepresentation;
36 void* Buffer;
37 unsigned int BufferLength;
38 unsigned int ProcNum;
39 PRPC_SYNTAX_IDENTIFIER TransferSyntax;
40 void* RpcInterfaceInformation;
41 void* ReservedForRuntime;
42 RPC_MGR_EPV* ManagerEpv;
43 void* ImportContext;
44 unsigned long RpcFlags;
45 } RPC_MESSAGE, *PRPC_MESSAGE;
47 typedef void (__RPC_STUB *RPC_DISPATCH_FUNCTION)(PRPC_MESSAGE Message);
49 typedef struct
51 unsigned int DispatchTableCount;
52 RPC_DISPATCH_FUNCTION* DispatchTable;
53 LONG_PTR Reserved;
54 } RPC_DISPATCH_TABLE, *PRPC_DISPATCH_TABLE;
56 typedef struct _RPC_PROTSEQ_ENDPOINT
58 unsigned char* RpcProtocolSequence;
59 unsigned char* Endpoint;
60 } RPC_PROTSEQ_ENDPOINT, *PRPC_PROTSEQ_ENDPOINT;
62 #define NT351_INTERFACE_SIZE 0x40
63 #define RPC_INTERFACE_HAS_PIPES 0x0001
65 typedef struct _RPC_SERVER_INTERFACE
67 unsigned int Length;
68 RPC_SYNTAX_IDENTIFIER InterfaceId;
69 RPC_SYNTAX_IDENTIFIER TransferSyntax;
70 PRPC_DISPATCH_TABLE DispatchTable;
71 unsigned int RpcProtseqEndpointCount;
72 PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
73 RPC_MGR_EPV* DefaultManagerEpv;
74 void const* InterpreterInfo;
75 unsigned int Flags;
76 } RPC_SERVER_INTERFACE, *PRPC_SERVER_INTERFACE;
78 typedef struct _RPC_CLIENT_INTERFACE
80 unsigned int Length;
81 RPC_SYNTAX_IDENTIFIER InterfaceId;
82 RPC_SYNTAX_IDENTIFIER TransferSyntax;
83 PRPC_DISPATCH_TABLE DispatchTable;
84 unsigned int RpcProtseqEndpointCount;
85 PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
86 ULONG_PTR Reserved;
87 void const* InterpreterInfo;
88 unsigned int Flags;
89 } RPC_CLIENT_INTERFACE, *PRPC_CLIENT_INTERFACE;
91 #define TRANSPORT_TYPE_CN 0x01
92 #define TRANSPORT_TYPE_DG 0x02
93 #define TRANSPORT_TYPE_LPC 0x04
94 #define TRANSPORT_TYPE_WMSG 0x08
96 #ifdef WINNT
97 typedef RPC_STATUS (*RPC_BLOCKING_FN)(void* hWnd, void* Context, HANDLE hSyncEvent);
98 #else
99 typedef RPC_STATUS (*RPC_BLOCKING_FN)(void* hWnd, void* Context, void* hSyncEvent);
100 #endif
102 RPCRTAPI RPC_STATUS RPC_ENTRY
103 I_RpcGetBuffer( RPC_MESSAGE* Message );
104 RPCRTAPI RPC_STATUS RPC_ENTRY
105 I_RpcGetBufferWithObject( RPC_MESSAGE* Message, UUID* ObjectUuid );
106 RPCRTAPI RPC_STATUS RPC_ENTRY
107 I_RpcSendReceive( RPC_MESSAGE* Message );
108 RPCRTAPI RPC_STATUS RPC_ENTRY
109 I_RpcFreeBuffer( RPC_MESSAGE* Message );
110 RPCRTAPI RPC_STATUS RPC_ENTRY
111 I_RpcSend( RPC_MESSAGE* Message );
112 RPCRTAPI RPC_STATUS RPC_ENTRY
113 I_RpcReceive( RPC_MESSAGE* Message );
115 RPCRTAPI void* RPC_ENTRY
116 I_RpcAllocate( unsigned int Size );
117 RPCRTAPI void RPC_ENTRY
118 I_RpcFree( void* Object );
120 RPCRTAPI RPC_BINDING_HANDLE RPC_ENTRY
121 I_RpcGetCurrentCallHandle( void );
123 RPCRTAPI RPC_STATUS RPC_ENTRY
124 I_RpcServerStartListening( void* hWnd );
125 RPCRTAPI RPC_STATUS RPC_ENTRY
126 I_RpcServerStopListening( void );
127 /* WINNT */
128 RPCRTAPI RPC_STATUS RPC_ENTRY
129 I_GetThreadWindowHandle( HWND* hWnd );
130 RPCRTAPI RPC_STATUS RPC_ENTRY
131 I_RpcAsyncSendReceive( RPC_MESSAGE* Message, void* Context, HWND hWnd );
133 #ifdef WINNT
134 RPCRTAPI RPC_STATUS RPC_ENTRY
135 I_RpcBindingSetAsync( RPC_BINDING_HANDLE Binding, RPC_BLOCKING_FN BlockingFn );
136 #else
137 RPCRTAPI RPC_STATUS RPC_ENTRY
138 I_RpcBindingSetAsync( RPC_BINDING_HANDLE Binding, RPC_BLOCKING_FN BlockingFn, unsigned long ServerTid );
139 #endif
141 /* WIN9x */
142 RPCRTAPI RPC_STATUS RPC_ENTRY
143 I_RpcSetThreadParams( int fClientFree, void* Context, void* hWndClient );
145 #ifdef WINNT
146 RPCRTAPI LONG RPC_ENTRY
147 I_RpcWindowProc( HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam );
148 #else
149 RPCRTAPI unsigned int RPC_ENTRY
150 I_RpcWindowProc( void* hWnd, unsigned int Message, unsigned int wParam, unsigned long lParam );
151 #endif
153 /* WINNT */
154 RPCRTAPI RPC_STATUS RPC_ENTRY
155 I_RpcSetWMsgEndpoint( WCHAR* Endpoint );
157 RPCRTAPI RPC_STATUS RPC_ENTRY
158 I_RpcBindingInqTransportType( RPC_BINDING_HANDLE Binding, unsigned int* Type );
160 #endif /*__WINE_RPCDCEP_H */