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

scsiwmi.h
Go to the documentation of this file.
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 #include "srb.h"
00027 
00028 #ifdef __cplusplus
00029 extern "C" {
00030 #endif
00031 
00032 #pragma pack(push,4)
00033 
00034 typedef struct _SCSIWMI_REQUEST_CONTEXT {
00035   PVOID  UserContext;
00036   ULONG  BufferSize;
00037   PUCHAR  Buffer;
00038   UCHAR  MinorFunction;
00039   UCHAR  ReturnStatus;
00040   ULONG  ReturnSize;
00041 } SCSIWMI_REQUEST_CONTEXT, *PSCSIWMI_REQUEST_CONTEXT;
00042 
00043 #ifdef _GUID_DEFINED
00044 # warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead
00045 #endif
00046 
00047 #if ! (defined _GUID_DEFINED || defined GUID_DEFINED)
00048 #define GUID_DEFINED
00049 typedef struct _GUID {
00050     unsigned long  Data1;
00051     unsigned short Data2;
00052     unsigned short Data3;
00053     unsigned char  Data4[ 8 ];
00054 } GUID;
00055 #endif
00056 
00057 typedef struct _SCSIWMIGUIDREGINFO {
00058   LPCGUID  Guid;
00059   ULONG  InstanceCount;
00060   ULONG  Flags;
00061 } SCSIWMIGUIDREGINFO, *PSCSIWMIGUIDREGINFO;
00062 
00063 typedef UCHAR
00064 (NTAPI *PSCSIWMI_QUERY_REGINFO)(
00065     IN PVOID  DeviceContext,
00066     IN PSCSIWMI_REQUEST_CONTEXT  RequestContext,
00067     OUT PWCHAR  *MofResourceName);
00068 
00069 typedef BOOLEAN
00070 (NTAPI *PSCSIWMI_QUERY_DATABLOCK)(
00071   IN PVOID  Context,
00072   IN PSCSIWMI_REQUEST_CONTEXT  DispatchContext,
00073   IN ULONG  GuidIndex,
00074   IN ULONG  InstanceIndex,
00075   IN ULONG  InstanceCount,
00076   IN OUT PULONG  InstanceLengthArray,
00077   IN ULONG  BufferAvail,
00078   OUT PUCHAR  Buffer);
00079 
00080 typedef BOOLEAN
00081 (NTAPI *PSCSIWMI_SET_DATABLOCK)(
00082   IN PVOID  DeviceContext,
00083   IN PSCSIWMI_REQUEST_CONTEXT  RequestContext,
00084   IN ULONG  GuidIndex,
00085   IN ULONG  InstanceIndex,
00086   IN ULONG  BufferSize,
00087   IN PUCHAR  Buffer);
00088 
00089 typedef BOOLEAN
00090 (NTAPI *PSCSIWMI_SET_DATAITEM)(
00091   IN PVOID  DeviceContext,
00092   IN PSCSIWMI_REQUEST_CONTEXT  RequestContext,
00093   IN ULONG  GuidIndex,
00094   IN ULONG  InstanceIndex,
00095   IN ULONG  DataItemId,
00096   IN ULONG  BufferSize,
00097   IN PUCHAR  Buffer);
00098 
00099 typedef BOOLEAN
00100 (NTAPI *PSCSIWMI_EXECUTE_METHOD)(
00101   IN PVOID  DeviceContext,
00102   IN PSCSIWMI_REQUEST_CONTEXT  RequestContext,
00103   IN ULONG  GuidIndex,
00104   IN ULONG  InstanceIndex,
00105   IN ULONG  MethodId,
00106   IN ULONG  InBufferSize,
00107   IN ULONG  OutBufferSize,
00108   IN OUT PUCHAR  Buffer);
00109 
00110 typedef enum _SCSIWMI_ENABLE_DISABLE_CONTROL {
00111     ScsiWmiEventControl,
00112     ScsiWmiDataBlockControl
00113 } SCSIWMI_ENABLE_DISABLE_CONTROL;
00114 
00115 typedef BOOLEAN
00116 (NTAPI *PSCSIWMI_FUNCTION_CONTROL)(
00117   IN PVOID  DeviceContext,
00118   IN PSCSIWMI_REQUEST_CONTEXT  RequestContext,
00119   IN ULONG  GuidIndex,
00120   IN SCSIWMI_ENABLE_DISABLE_CONTROL  Function,
00121   IN BOOLEAN  Enable);
00122 
00123 typedef struct _SCSIWMILIB_CONTEXT {
00124   ULONG  GuidCount;
00125   PSCSIWMIGUIDREGINFO  GuidList;
00126   PSCSIWMI_QUERY_REGINFO  QueryWmiRegInfo;
00127   PSCSIWMI_QUERY_DATABLOCK  QueryWmiDataBlock;
00128   PSCSIWMI_SET_DATABLOCK  SetWmiDataBlock;
00129   PSCSIWMI_SET_DATAITEM  SetWmiDataItem;
00130   PSCSIWMI_EXECUTE_METHOD  ExecuteWmiMethod;
00131   PSCSIWMI_FUNCTION_CONTROL  WmiFunctionControl;
00132 } SCSI_WMILIB_CONTEXT, *PSCSI_WMILIB_CONTEXT;
00133 
00134 SCSIPORTAPI
00135 BOOLEAN
00136 NTAPI
00137 ScsiPortWmiDispatchFunction(
00138   IN PSCSI_WMILIB_CONTEXT  WmiLibInfo,
00139   IN UCHAR  MinorFunction,
00140   IN PVOID  DeviceContext,
00141   IN PSCSIWMI_REQUEST_CONTEXT  RequestContext,
00142   IN PVOID  DataPath,
00143   IN ULONG  BufferSize,
00144   IN PVOID  Buffer);
00145 
00146 #define ScsiPortWmiFireAdapterEvent(  \
00147   HwDeviceExtension,                  \
00148   Guid,                               \
00149   InstanceIndex,                      \
00150   EventDataSize,                      \
00151   EventData)                          \
00152     ScsiPortWmiFireLogicalUnitEvent(  \
00153       HwDeviceExtension,                \
00154       0xff,                             \
00155       0,                                \
00156       0,                                \
00157       Guid,                             \
00158       InstanceIndex,                    \
00159       EventDataSize,                    \
00160       EventData)
00161 
00162 /*
00163  * ULONG
00164  * ScsiPortWmiGetReturnSize(
00165  *   PSCSIWMI_REQUEST_CONTEXT  RequestContext);
00166  */
00167 #define ScsiPortWmiGetReturnSize(RequestContext) \
00168   ((RequestContext)->ReturnSize)
00169 
00170 /* UCHAR
00171  * ScsiPortWmiGetReturnStatus(
00172  *   PSCSIWMI_REQUEST_CONTEXT  RequestContext);
00173  */
00174 #define ScsiPortWmiGetReturnStatus(RequestContext) \
00175   ((RequestContext)->ReturnStatus)
00176 
00177 SCSIPORTAPI
00178 VOID
00179 NTAPI
00180 ScsiPortWmiPostProcess(
00181   IN PSCSIWMI_REQUEST_CONTEXT  RequestContext,
00182   IN UCHAR  SrbStatus,
00183   IN ULONG  BufferUsed);
00184 
00185 SCSIPORTAPI
00186 VOID
00187 NTAPI
00188 ScsiPortWmiFireLogicalUnitEvent(
00189   IN PVOID  HwDeviceExtension,
00190   IN UCHAR  PathId,
00191   IN UCHAR  TargetId,
00192   IN UCHAR  Lun,
00193   IN LPGUID  Guid,
00194   IN ULONG  InstanceIndex,
00195   IN ULONG  EventDataSize,
00196   IN PVOID  EventData);
00197 
00198 #pragma pack(pop)
00199 
00200 #ifdef __cplusplus
00201 }
00202 #endif
00203 
00204 #endif /* __SCSIWMI_H */

Generated on Sun May 27 2012 04:30: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.