Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenrpcasync.h
Go to the documentation of this file.
00001 /* 00002 * Copyright (C) 2007 Francois Gouget 00003 * 00004 * This library is free software; you can redistribute it and/or 00005 * modify it under the terms of the GNU Lesser General Public 00006 * License as published by the Free Software Foundation; either 00007 * version 2.1 of the License, or (at your option) any later version. 00008 * 00009 * This library is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 * Lesser General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU Lesser General Public 00015 * License along with this library; if not, write to the Free Software 00016 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 00017 */ 00018 #ifndef __WINE_RPCASYNC_H 00019 #define __WINE_RPCASYNC_H 00020 00021 #ifdef _MSC_VER 00022 #pragma warning(push) 00023 #pragma warning(disable:4820) 00024 #endif 00025 00026 typedef struct tagRPC_ERROR_ENUM_HANDLE 00027 { 00028 ULONG Signature; 00029 void* CurrentPos; 00030 void* Head; 00031 } RPC_ERROR_ENUM_HANDLE; 00032 00033 typedef enum tagExtendedErrorParamTypes 00034 { 00035 eeptAnsiString = 1, 00036 eeptUnicodeString, 00037 eeptLongVal, 00038 eeptShortVal, 00039 eeptPointerVal, 00040 eeptNone, 00041 eeptBinary 00042 } ExtendedErrorParamTypes; 00043 00044 #define MaxNumberOfEEInfoParams 4 00045 #define RPC_EEINFO_VERSION 1 00046 00047 typedef struct tagBinaryParam 00048 { 00049 void *Buffer; 00050 short Size; 00051 } BinaryParam; 00052 00053 typedef struct tagRPC_EE_INFO_PARAM 00054 { 00055 ExtendedErrorParamTypes ParameterType; 00056 union 00057 { 00058 LPSTR AnsiString; 00059 LPWSTR UnicodeString; 00060 LONG LVal; 00061 short SVal; 00062 ULONGLONG PVal; 00063 BinaryParam BVal; 00064 } u; 00065 } RPC_EE_INFO_PARAM; 00066 00067 #define EEInfoPreviousRecordsMissing 0x1 00068 #define EEInfoNextRecordsMissing 0x2 00069 #define EEInfoUseFileTime 0x4 00070 00071 #define EEInfoGCCOM 11 00072 #define EEInfoGCFRS 12 00073 00074 typedef struct tagRPC_EXTENDED_ERROR_INFO 00075 { 00076 ULONG Version; 00077 LPWSTR ComputerName; 00078 ULONG ProcessID; 00079 union 00080 { 00081 SYSTEMTIME SystemTime; 00082 FILETIME FileTime; 00083 } u; 00084 ULONG GeneratingComponent; 00085 ULONG Status; 00086 USHORT DetectionLocation; 00087 USHORT Flags; 00088 int NumberOfParameters; 00089 RPC_EE_INFO_PARAM Parameters[MaxNumberOfEEInfoParams]; 00090 } RPC_EXTENDED_ERROR_INFO; 00091 00092 #define RPC_ASYNC_VERSION_1_0 sizeof(RPC_ASYNC_STATE) 00093 00094 typedef enum _RPC_NOTIFICATION_TYPES 00095 { 00096 RpcNotificationTypeNone, 00097 RpcNotificationTypeEvent, 00098 RpcNotificationTypeApc, 00099 RpcNotificationTypeIoc, 00100 RpcNotificationTypeHwnd, 00101 RpcNotificationTypeCallback, 00102 } RPC_NOTIFICATION_TYPES; 00103 00104 typedef enum _RPC_ASYNC_EVENT 00105 { 00106 RpcCallComplete, 00107 RpcSendComplete, 00108 RpcReceiveComplete, 00109 RpcClientDisconnect, 00110 RpcClientCancel, 00111 } RPC_ASYNC_EVENT; 00112 00113 struct _RPC_ASYNC_STATE; 00114 00115 typedef void RPC_ENTRY RPCNOTIFICATION_ROUTINE(struct _RPC_ASYNC_STATE *,void *,RPC_ASYNC_EVENT); 00116 typedef RPCNOTIFICATION_ROUTINE *PFN_RPCNOTIFICATION_ROUTINE; 00117 00118 typedef union _RPC_ASYNC_NOTIFICATION_INFO 00119 { 00120 struct 00121 { 00122 PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine; 00123 HANDLE hThread; 00124 } APC; 00125 struct 00126 { 00127 HANDLE hIOPort; 00128 DWORD dwNumberOfBytesTransferred; 00129 DWORD_PTR dwCompletionKey; 00130 LPOVERLAPPED lpOverlapped; 00131 } IOC; 00132 struct 00133 { 00134 HWND hWnd; 00135 UINT Msg; 00136 } HWND; 00137 HANDLE hEvent; 00138 PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine; 00139 } RPC_ASYNC_NOTIFICATION_INFO, *PRPC_ASYNC_NOTIFICATION_INFO; 00140 00141 #define RPC_C_NOTIFY_ON_SEND_COMPLETE 0x1 00142 #define RPC_C_INFINITE_TIMEOUT INFINITE 00143 00144 typedef struct _RPC_ASYNC_STATE 00145 { 00146 unsigned int Size; 00147 ULONG Signature; 00148 LONG Lock; 00149 ULONG Flags; 00150 void *StubInfo; 00151 void *UserInfo; 00152 void *RuntimeInfo; 00153 RPC_ASYNC_EVENT Event; 00154 RPC_NOTIFICATION_TYPES NotificationType; 00155 RPC_ASYNC_NOTIFICATION_INFO u; 00156 LONG_PTR Reserved[4]; 00157 } RPC_ASYNC_STATE, *PRPC_ASYNC_STATE; 00158 00159 #define RpcAsyncGetCallHandle(async) (((PRPC_ASYNC_STATE)async)->RuntimeInfo) 00160 00161 #ifdef __cplusplus 00162 extern "C" { 00163 #endif 00164 00165 RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncInitializeHandle(PRPC_ASYNC_STATE,unsigned int); 00166 RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncRegisterInfo(PRPC_ASYNC_STATE); 00167 RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncGetCallStatus(PRPC_ASYNC_STATE); 00168 RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncCompleteCall(PRPC_ASYNC_STATE,void *); 00169 RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncAbortCall(PRPC_ASYNC_STATE,ULONG); 00170 RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncCancelCall(PRPC_ASYNC_STATE,BOOL); 00171 RPCRTAPI RPC_STATUS RPC_ENTRY RpcAsyncCleanupThread(DWORD); 00172 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorStartEnumeration(RPC_ERROR_ENUM_HANDLE*); 00173 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorGetNextRecord(RPC_ERROR_ENUM_HANDLE*,BOOL,RPC_EXTENDED_ERROR_INFO*); 00174 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorEndEnumeration(RPC_ERROR_ENUM_HANDLE*); 00175 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorResetEnumeration(RPC_ERROR_ENUM_HANDLE*); 00176 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorGetNumberOfRecords(RPC_ERROR_ENUM_HANDLE*,int*); 00177 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorSaveErrorInfo(RPC_ERROR_ENUM_HANDLE*,PVOID*,SIZE_T*); 00178 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorLoadErrorInfo(PVOID,SIZE_T,RPC_ERROR_ENUM_HANDLE*); 00179 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorAddRecord(RPC_EXTENDED_ERROR_INFO*); 00180 RPCRTAPI RPC_STATUS RPC_ENTRY RpcErrorClearInformation(void); 00181 RPCRTAPI RPC_STATUS RPC_ENTRY RpcGetAuthorizationContextForClient(RPC_BINDING_HANDLE,BOOL,LPVOID,PLARGE_INTEGER,LUID,DWORD,PVOID,PVOID*); 00182 RPCRTAPI RPC_STATUS RPC_ENTRY RpcFreeAuthorizationContext(PVOID*); 00183 RPCRTAPI RPC_STATUS RPC_ENTRY RpcSsContextLockExclusive(RPC_BINDING_HANDLE,PVOID); 00184 RPCRTAPI RPC_STATUS RPC_ENTRY RpcSsContextLockShared(RPC_BINDING_HANDLE,PVOID); 00185 00186 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcAsyncSetHandle(PRPC_MESSAGE,PRPC_ASYNC_STATE); 00187 RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcAsyncAbortCall(PRPC_ASYNC_STATE,ULONG); 00188 RPCRTAPI int RPC_ENTRY I_RpcExceptionFilter(ULONG); 00189 00190 #ifdef __cplusplus 00191 } 00192 #endif 00193 00194 #ifdef _MSC_VER 00195 #pragma warning(pop) 00196 #endif 00197 00198 #endif Generated on Sun May 27 2012 04:32:16 for ReactOS by
1.7.6.1
|