Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

ioeapi.h

Go to the documentation of this file.
00001 /*++ 00002 00003 Copyright (c) 1998 Microsoft Corporation 00004 00005 Module Name: 00006 00007 ioeapi.h 00008 00009 Abstract: 00010 00011 This module contains the public structure and constant definitions. 00012 00013 Author: 00014 Michael Tsang (MikeTs) 1-Sep-1998 00015 00016 Environment: 00017 00018 Kernel mode 00019 00020 00021 Revision History: 00022 00023 00024 --*/ 00025 00026 #ifndef _IOEAPI_H 00027 #define _IOEAPI_H 00028 00029 // begin_ntddk begin_wdm begin_nthal begin_ntifs begin_ntndis begin_ntminiport begin_srv 00030 00031 // 00032 // Constants 00033 // 00034 #define STATUS_IOE_MESSAGE 0x11111111 //BUGBUG: shouldn't be here 00035 #define STATUS_IOE_MODULE_ALREADY_REGISTERED 0x22222222 00036 #define STATUS_IOE_DATABASE_NOT_READY 0x44444444 00037 00038 #define MAX_MSG_LEN 1023 00039 00040 // 00041 // DataBlkType values in IoErrLogErrBy* 00042 // 00043 #define IOEDATA_NONE 0x00000000 00044 #define IOEDATA_PRIVATE 0x00000001 00045 #define IOEDATA_WSTRING 0x00000002 00046 #define IOEDATA_MAX IOEDATA_WSTRING 00047 #define IOEDATA_TEXT 0x80000000 00048 00049 // 00050 // ErrLog ErrLogKey flags 00051 // 00052 #define IOEDATATAG_TYPE_MASK 0x000000ff 00053 #define IOEDATATAG_TYPE_DEVNODE 0x00000001 00054 #define IOEDATATAG_BITS IOEDATATAG_TYPE_MASK 00055 00056 // 00057 // Type Definitions 00058 // 00059 typedef struct _errid { 00060 GUID ComponentGuid; 00061 ULONG ErrCode; 00062 } ERRID, *PERRID; 00063 00064 typedef struct _errdata { 00065 ERRID ErrID; //globally unique error ID 00066 ULONG TextDataOffset; //offset to unicode string data 00067 ULONG DataBlkType; //type of associated data 00068 ULONG DataBlkLen; //length of associated data 00069 ULONG DataBlkOffset; //points to associated data 00070 GUID MofGuid; //MOF Guid to describe data 00071 } ERRDATA, *PERRDATA; 00072 00073 typedef struct _errinfo { 00074 ULONG Signature; //signature of the structure 00075 ULONG Version; //version of the structure 00076 ULONG Size; //size of the structure 00077 PVOID DataTag; //tag associated with the error data 00078 ULONG TagFlags; //tag flags 00079 ULONG NumErrEntries; //number of error entries 00080 ERRDATA ErrEntries[1]; //array of error data 00081 } ERRINFO, *PERRINFO; 00082 00083 #define SIG_ERRINFO 'IRRE' //signature of ERRINFO "ERRI" 00084 00085 typedef struct _infoblk { 00086 ULONG Signature; //signature of the structure 00087 ULONG Version; //version of the structure 00088 ULONG Size; //size of the structure 00089 ULONG NumErrInfos; //number of error info blocks 00090 ERRINFO ErrInfos[1]; //array of error info. 00091 } INFOBLK, *PINFOBLK; 00092 00093 #define SIG_INFOBLK 'KLBI' //signature of INFOBLK "IBLK" 00094 00095 typedef NTSTATUS (*PERRHANDLER)(PVOID, ULONG); 00096 00097 // 00098 // Exported Error Logging APIs 00099 // 00100 HANDLE 00101 IoErrInitErrLogByIrp( 00102 IN PIRP Irp, 00103 IN ULONG ulFlags 00104 ); 00105 00106 HANDLE 00107 IoErrInitErrLogByThreadID( 00108 IN PKTHREAD ThreadID, 00109 IN ULONG ulFlags 00110 ); 00111 00112 VOID 00113 IoErrLogErrByIrp( 00114 IN PIRP Irp, 00115 IN CONST GUID *ComponentGuid, 00116 IN ULONG ErrCode, 00117 IN PWSTR TextData OPTIONAL, 00118 IN ULONG DataBlkType, 00119 IN ULONG DataBlkLen OPTIONAL, 00120 IN PVOID DataBlock OPTIONAL, 00121 IN CONST GUID *MofGuid OPTIONAL 00122 ); 00123 00124 VOID 00125 IoErrLogErrByThreadID( 00126 IN PKTHREAD ThreadID, 00127 IN CONST GUID *ComponentGuid, 00128 IN ULONG ErrCode, 00129 IN PWSTR TextData OPTIONAL, 00130 IN ULONG DataBlkType, 00131 IN ULONG DataBlkLen OPTIONAL, 00132 IN PVOID DataBlock OPTIONAL, 00133 IN CONST GUID *MofGuid OPTIONAL 00134 ); 00135 00136 VOID 00137 IoErrPropagateErrLog( 00138 IN HANDLE ErrLogHandle 00139 ); 00140 00141 VOID 00142 IoErrTerminateErrLog( 00143 IN HANDLE ErrLogHandle 00144 ); 00145 00146 // 00147 // Exported Error Handling APIs 00148 // 00149 NTSTATUS 00150 IoErrRegisterErrHandlers( 00151 IN CONST GUID *ModuleGuid, 00152 IN ULONG NumErrHandlers, 00153 IN PERRHANDLER *HandlerTable 00154 ); 00155 00156 PERRINFO 00157 IoErrGetErrData( 00158 IN HANDLE ErrLogHandle 00159 ); 00160 00161 HANDLE 00162 IoErrSaveErrData( 00163 IN HANDLE ErrLogHandle, 00164 IN PVOID DataTag OPTIONAL, 00165 IN ULONG TagFlags OPTIONAL 00166 ); 00167 00168 PERRINFO 00169 IoErrGetSavedData( 00170 IN HANDLE SaveDataHandle 00171 ); 00172 00173 VOID 00174 IoErrFreeSavedData( 00175 IN HANDLE SaveDataHandle 00176 ); 00177 00178 NTSTATUS 00179 IoErrMatchErrCase( 00180 IN PERRINFO ErrInfo, 00181 OUT PULONG ErrCaseID, 00182 OUT PHANDLE ErrCaseHandle OPTIONAL 00183 ); 00184 00185 NTSTATUS 00186 IoErrFindErrCaseByID( 00187 IN ULONG ErrCaseID, 00188 OUT PHANDLE ErrCaseHandle 00189 ); 00190 00191 NTSTATUS 00192 IoErrHandleErrCase( 00193 IN PERRINFO ErrInfo, 00194 IN HANDLE ErrCaseHandle 00195 ); 00196 00197 NTSTATUS 00198 IoErrGetLongErrMessage( 00199 IN PERRINFO ErrInfo, 00200 IN HANDLE ErrCaseHandle, 00201 OUT PUNICODE_STRING unicodeMsg 00202 ); 00203 00204 NTSTATUS 00205 IoErrGetShortErrMessage( 00206 IN PERRINFO ErrInfo, 00207 IN HANDLE ErrCaseHandle, 00208 OUT PUNICODE_STRING unicodeMsg 00209 ); 00210 00211 // end_ntddk end_wdm end_nthal end_ntifs end_ntndis end_ntminiport end_ntsrv 00212 00213 BOOLEAN 00214 IoErrInitSystem( 00215 VOID 00216 ); 00217 00218 NTSTATUS 00219 IoErrRetrieveSavedData( 00220 OUT PINFOBLK InfoBlk, 00221 IN ULONG BuffSize, 00222 OUT PULONG DataSize OPTIONAL, 00223 IN PVOID DataTag OPTIONAL, 00224 IN ULONG TagFlags OPTIONAL 00225 ); 00226 00227 #endif //ifndef _IOEAPI_H

Generated on Sat May 15 19:40:29 2004 for test by doxygen 1.3.7