2 * Copyright (C) 2007 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18 #ifndef __WINE_RPCASYNC_H
19 #define __WINE_RPCASYNC_H
23 #pragma warning(disable:4820)
26 typedef struct tagRPC_ERROR_ENUM_HANDLE
31 } RPC_ERROR_ENUM_HANDLE
;
33 typedef enum tagExtendedErrorParamTypes
42 } ExtendedErrorParamTypes
;
44 #define MaxNumberOfEEInfoParams 4
45 #define RPC_EEINFO_VERSION 1
47 typedef struct tagBinaryParam
53 typedef struct tagRPC_EE_INFO_PARAM
55 ExtendedErrorParamTypes ParameterType
;
67 #define EEInfoPreviousRecordsMissing 0x1
68 #define EEInfoNextRecordsMissing 0x2
69 #define EEInfoUseFileTime 0x4
71 #define EEInfoGCCOM 11
72 #define EEInfoGCFRS 12
74 typedef struct tagRPC_EXTENDED_ERROR_INFO
81 SYSTEMTIME SystemTime
;
84 ULONG GeneratingComponent
;
86 USHORT DetectionLocation
;
88 int NumberOfParameters
;
89 RPC_EE_INFO_PARAM Parameters
[MaxNumberOfEEInfoParams
];
90 } RPC_EXTENDED_ERROR_INFO
;
92 #define RPC_ASYNC_VERSION_1_0 sizeof(RPC_ASYNC_STATE)
94 typedef enum _RPC_NOTIFICATION_TYPES
96 RpcNotificationTypeNone
,
97 RpcNotificationTypeEvent
,
98 RpcNotificationTypeApc
,
99 RpcNotificationTypeIoc
,
100 RpcNotificationTypeHwnd
,
101 RpcNotificationTypeCallback
,
102 } RPC_NOTIFICATION_TYPES
;
104 typedef enum _RPC_ASYNC_EVENT
113 struct _RPC_ASYNC_STATE
;
115 typedef void RPC_ENTRY
RPCNOTIFICATION_ROUTINE(struct _RPC_ASYNC_STATE
*,void *,RPC_ASYNC_EVENT
);
116 typedef RPCNOTIFICATION_ROUTINE
*PFN_RPCNOTIFICATION_ROUTINE
;
118 typedef union _RPC_ASYNC_NOTIFICATION_INFO
122 PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine
;
128 DWORD dwNumberOfBytesTransferred
;
129 DWORD_PTR dwCompletionKey
;
130 LPOVERLAPPED lpOverlapped
;
138 PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine
;
139 } RPC_ASYNC_NOTIFICATION_INFO
, *PRPC_ASYNC_NOTIFICATION_INFO
;
141 #define RPC_C_NOTIFY_ON_SEND_COMPLETE 0x1
142 #define RPC_C_INFINITE_TIMEOUT INFINITE
144 typedef struct _RPC_ASYNC_STATE
153 RPC_ASYNC_EVENT Event
;
154 RPC_NOTIFICATION_TYPES NotificationType
;
155 RPC_ASYNC_NOTIFICATION_INFO u
;
156 LONG_PTR Reserved
[4];
157 } RPC_ASYNC_STATE
, *PRPC_ASYNC_STATE
;
159 #define RpcAsyncGetCallHandle(async) (((PRPC_ASYNC_STATE)async)->RuntimeInfo)
165 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcAsyncInitializeHandle(PRPC_ASYNC_STATE
,unsigned int);
166 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcAsyncRegisterInfo(PRPC_ASYNC_STATE
);
167 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcAsyncGetCallStatus(PRPC_ASYNC_STATE
);
168 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcAsyncCompleteCall(PRPC_ASYNC_STATE
,void *);
169 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcAsyncAbortCall(PRPC_ASYNC_STATE
,ULONG
);
170 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcAsyncCancelCall(PRPC_ASYNC_STATE
,BOOL
);
171 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcAsyncCleanupThread(DWORD
);
172 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcErrorStartEnumeration(RPC_ERROR_ENUM_HANDLE
*);
173 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcErrorGetNextRecord(RPC_ERROR_ENUM_HANDLE
*,BOOL
,RPC_EXTENDED_ERROR_INFO
*);
174 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcErrorEndEnumeration(RPC_ERROR_ENUM_HANDLE
*);
175 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcErrorResetEnumeration(RPC_ERROR_ENUM_HANDLE
*);
176 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcErrorGetNumberOfRecords(RPC_ERROR_ENUM_HANDLE
*,int*);
177 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcErrorSaveErrorInfo(RPC_ERROR_ENUM_HANDLE
*,PVOID
*,SIZE_T
*);
178 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcErrorLoadErrorInfo(PVOID
,SIZE_T
,RPC_ERROR_ENUM_HANDLE
*);
179 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcErrorAddRecord(RPC_EXTENDED_ERROR_INFO
*);
180 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcErrorClearInformation(void);
181 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcGetAuthorizationContextForClient(RPC_BINDING_HANDLE
,BOOL
,LPVOID
,PLARGE_INTEGER
,LUID
,DWORD
,PVOID
,PVOID
*);
182 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcFreeAuthorizationContext(PVOID
*);
183 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcSsContextLockExclusive(RPC_BINDING_HANDLE
,PVOID
);
184 RPCRTAPI RPC_STATUS RPC_ENTRY
RpcSsContextLockShared(RPC_BINDING_HANDLE
,PVOID
);
186 RPCRTAPI RPC_STATUS RPC_ENTRY
I_RpcAsyncSetHandle(PRPC_MESSAGE
,PRPC_ASYNC_STATE
);
187 RPCRTAPI RPC_STATUS RPC_ENTRY
I_RpcAsyncAbortCall(PRPC_ASYNC_STATE
,ULONG
);
188 RPCRTAPI
int RPC_ENTRY
I_RpcExceptionFilter(ULONG
);