Embed:
(wiki syntax)
Show/hide line numbers
scsiwmi.h
00001 /* 00002 * scsiwmi.h 00003 * 00004 * SCSI WMILIB interface. 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 00023 #ifndef __SCSIWMI_H 00024 #define __SCSIWMI_H 00025 00026 #if __GNUC__ >=3 00027 #pragma GCC system_header 00028 #endif 00029 00030 #ifdef __cplusplus 00031 extern "C" { 00032 #endif 00033 00034 #pragma pack(push,4) 00035 00036 #include "ntddk.h" 00037 #include "srb.h" 00038 00039 00040 typedef struct _SCSIWMI_REQUEST_CONTEXT { 00041 PVOID UserContext; 00042 ULONG BufferSize; 00043 PUCHAR Buffer; 00044 UCHAR MinorFunction; 00045 UCHAR ReturnStatus; 00046 ULONG ReturnSize; 00047 } SCSIWMI_REQUEST_CONTEXT, *PSCSIWMI_REQUEST_CONTEXT; 00048 00049 #ifdef _GUID_DEFINED 00050 # warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead 00051 #endif 00052 00053 #if ! (defined _GUID_DEFINED || defined GUID_DEFINED) 00054 #define GUID_DEFINED 00055 typedef struct _GUID { 00056 unsigned long Data1; 00057 unsigned short Data2; 00058 unsigned short Data3; 00059 unsigned char Data4[ 8 ]; 00060 } GUID; 00061 #endif 00062 00063 #ifndef _LPCGUID_DEFINED 00064 #define _LPCGUID_DEFINED 00065 typedef const GUID *LPCGUID; 00066 #endif 00067 00068 typedef struct _SCSIWMIGUIDREGINFO { 00069 LPCGUID Guid; 00070 ULONG InstanceCount; 00071 ULONG Flags; 00072 } SCSIWMIGUIDREGINFO, *PSCSIWMIGUIDREGINFO; 00073 00074 typedef UCHAR DDKAPI 00075 (*PSCSIWMI_QUERY_REGINFO)( 00076 /*IN*/ PVOID DeviceContext, 00077 /*IN*/ PSCSIWMI_REQUEST_CONTEXT RequestContext, 00078 /*OUT*/ PWCHAR *MofResourceName); 00079 00080 typedef BOOLEAN DDKAPI 00081 (*PSCSIWMI_QUERY_DATABLOCK)( 00082 /*IN*/ PVOID Context, 00083 /*IN*/ PSCSIWMI_REQUEST_CONTEXT DispatchContext, 00084 /*IN*/ ULONG GuidIndex, 00085 /*IN*/ ULONG InstanceIndex, 00086 /*IN*/ ULONG InstanceCount, 00087 /*IN OUT*/ PULONG InstanceLengthArray, 00088 /*IN*/ ULONG BufferAvail, 00089 /*OUT*/ PUCHAR Buffer); 00090 00091 typedef BOOLEAN DDKAPI 00092 (*PSCSIWMI_SET_DATABLOCK)( 00093 /*IN*/ PVOID DeviceContext, 00094 /*IN*/ PSCSIWMI_REQUEST_CONTEXT RequestContext, 00095 /*IN*/ ULONG GuidIndex, 00096 /*IN*/ ULONG InstanceIndex, 00097 /*IN*/ ULONG BufferSize, 00098 /*IN*/ PUCHAR Buffer); 00099 00100 typedef BOOLEAN DDKAPI 00101 (*PSCSIWMI_SET_DATAITEM)( 00102 /*IN*/ PVOID DeviceContext, 00103 /*IN*/ PSCSIWMI_REQUEST_CONTEXT RequestContext, 00104 /*IN*/ ULONG GuidIndex, 00105 /*IN*/ ULONG InstanceIndex, 00106 /*IN*/ ULONG DataItemId, 00107 /*IN*/ ULONG BufferSize, 00108 /*IN*/ PUCHAR Buffer); 00109 00110 typedef BOOLEAN DDKAPI 00111 (*PSCSIWMI_EXECUTE_METHOD)( 00112 /*IN*/ PVOID DeviceContext, 00113 /*IN*/ PSCSIWMI_REQUEST_CONTEXT RequestContext, 00114 /*IN*/ ULONG GuidIndex, 00115 /*IN*/ ULONG InstanceIndex, 00116 /*IN*/ ULONG MethodId, 00117 /*IN*/ ULONG InBufferSize, 00118 /*IN*/ ULONG OutBufferSize, 00119 /*IN OUT*/ PUCHAR Buffer); 00120 00121 typedef enum _SCSIWMI_ENABLE_DISABLE_CONTROL { 00122 ScsiWmiEventControl, 00123 ScsiWmiDataBlockControl 00124 } SCSIWMI_ENABLE_DISABLE_CONTROL; 00125 00126 typedef BOOLEAN DDKAPI 00127 (*PSCSIWMI_FUNCTION_CONTROL)( 00128 /*IN*/ PVOID DeviceContext, 00129 /*IN*/ PSCSIWMI_REQUEST_CONTEXT RequestContext, 00130 /*IN*/ ULONG GuidIndex, 00131 /*IN*/ SCSIWMI_ENABLE_DISABLE_CONTROL Function, 00132 /*IN*/ BOOLEAN Enable); 00133 00134 typedef struct _SCSIWMILIB_CONTEXT { 00135 ULONG GuidCount; 00136 PSCSIWMIGUIDREGINFO GuidList; 00137 PSCSIWMI_QUERY_REGINFO QueryWmiRegInfo; 00138 PSCSIWMI_QUERY_DATABLOCK QueryWmiDataBlock; 00139 PSCSIWMI_SET_DATABLOCK SetWmiDataBlock; 00140 PSCSIWMI_SET_DATAITEM SetWmiDataItem; 00141 PSCSIWMI_EXECUTE_METHOD ExecuteWmiMethod; 00142 PSCSIWMI_FUNCTION_CONTROL WmiFunctionControl; 00143 } SCSI_WMILIB_CONTEXT, *PSCSI_WMILIB_CONTEXT; 00144 00145 SCSIPORTAPI 00146 BOOLEAN 00147 DDKAPI 00148 ScsiPortWmiDispatchFunction( 00149 /*IN*/ PSCSI_WMILIB_CONTEXT WmiLibInfo, 00150 /*IN*/ UCHAR MinorFunction, 00151 /*IN*/ PVOID DeviceContext, 00152 /*IN*/ PSCSIWMI_REQUEST_CONTEXT RequestContext, 00153 /*IN*/ PVOID DataPath, 00154 /*IN*/ ULONG BufferSize, 00155 /*IN*/ PVOID Buffer); 00156 00157 #define ScsiPortWmiFireAdapterEvent( \ 00158 HwDeviceExtension, \ 00159 Guid, \ 00160 InstanceIndex, \ 00161 EventDataSize, \ 00162 EventData) \ 00163 ScsiPortWmiFireLogicalUnitEvent( \ 00164 HwDeviceExtension, \ 00165 0xff, \ 00166 0, \ 00167 0, \ 00168 Guid, \ 00169 InstanceIndex, \ 00170 EventDataSize, \ 00171 EventData) 00172 00173 /* 00174 * ULONG 00175 * ScsiPortWmiGetReturnSize( 00176 * PSCSIWMI_REQUEST_CONTEXT RequestContext); 00177 */ 00178 #define ScsiPortWmiGetReturnSize(RequestContext) \ 00179 ((RequestContext)->ReturnSize) 00180 00181 /* UCHAR 00182 * ScsiPortWmiGetReturnStatus( 00183 * PSCSIWMI_REQUEST_CONTEXT RequestContext); 00184 */ 00185 #define ScsiPortWmiGetReturnStatus(RequestContext) \ 00186 ((RequestContext)->ReturnStatus) 00187 00188 SCSIPORTAPI 00189 VOID 00190 DDKAPI 00191 ScsiPortWmiPostProcess( 00192 /*IN*/ PSCSIWMI_REQUEST_CONTEXT RequestContext, 00193 /*IN*/ UCHAR SrbStatus, 00194 /*IN*/ ULONG BufferUsed); 00195 00196 SCSIPORTAPI 00197 VOID 00198 DDKAPI 00199 ScsiPortWmiFireLogicalUnitEvent( 00200 /*IN*/ PVOID HwDeviceExtension, 00201 /*IN*/ UCHAR PathId, 00202 /*IN*/ UCHAR TargetId, 00203 /*IN*/ UCHAR Lun, 00204 /*IN*/ LPGUID Guid, 00205 /*IN*/ ULONG InstanceIndex, 00206 /*IN*/ ULONG EventDataSize, 00207 /*IN*/ PVOID EventData); 00208 00209 #pragma pack(pop) 00210 00211 #ifdef __cplusplus 00212 } 00213 #endif 00214 00215 #endif /* __SCSIWMI_H */
Generated on Tue Jul 12 2022 19:59:55 by
1.7.2