ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

rpcasync.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.