4 * SCSI WMILIB interface.
6 * This file is part of the w32api package.
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
34 typedef struct _SCSIWMI_REQUEST_CONTEXT
{
41 } SCSIWMI_REQUEST_CONTEXT
, *PSCSIWMI_REQUEST_CONTEXT
;
44 # warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead
47 #if ! (defined _GUID_DEFINED || defined GUID_DEFINED)
49 typedef struct _GUID
{
53 unsigned char Data4
[ 8 ];
57 typedef struct _SCSIWMIGUIDREGINFO
{
61 } SCSIWMIGUIDREGINFO
, *PSCSIWMIGUIDREGINFO
;
64 (NTAPI
*PSCSIWMI_QUERY_REGINFO
)(
65 IN PVOID DeviceContext
,
66 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
67 OUT PWCHAR
*MofResourceName
);
70 (NTAPI
*PSCSIWMI_QUERY_DATABLOCK
)(
72 IN PSCSIWMI_REQUEST_CONTEXT DispatchContext
,
74 IN ULONG InstanceIndex
,
75 IN ULONG InstanceCount
,
76 IN OUT PULONG InstanceLengthArray
,
81 (NTAPI
*PSCSIWMI_SET_DATABLOCK
)(
82 IN PVOID DeviceContext
,
83 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
85 IN ULONG InstanceIndex
,
90 (NTAPI
*PSCSIWMI_SET_DATAITEM
)(
91 IN PVOID DeviceContext
,
92 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
94 IN ULONG InstanceIndex
,
100 (NTAPI
*PSCSIWMI_EXECUTE_METHOD
)(
101 IN PVOID DeviceContext
,
102 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
104 IN ULONG InstanceIndex
,
106 IN ULONG InBufferSize
,
107 IN ULONG OutBufferSize
,
108 IN OUT PUCHAR Buffer
);
110 typedef enum _SCSIWMI_ENABLE_DISABLE_CONTROL
{
112 ScsiWmiDataBlockControl
113 } SCSIWMI_ENABLE_DISABLE_CONTROL
;
116 (NTAPI
*PSCSIWMI_FUNCTION_CONTROL
)(
117 IN PVOID DeviceContext
,
118 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
120 IN SCSIWMI_ENABLE_DISABLE_CONTROL Function
,
123 typedef struct _SCSIWMILIB_CONTEXT
{
125 PSCSIWMIGUIDREGINFO GuidList
;
126 PSCSIWMI_QUERY_REGINFO QueryWmiRegInfo
;
127 PSCSIWMI_QUERY_DATABLOCK QueryWmiDataBlock
;
128 PSCSIWMI_SET_DATABLOCK SetWmiDataBlock
;
129 PSCSIWMI_SET_DATAITEM SetWmiDataItem
;
130 PSCSIWMI_EXECUTE_METHOD ExecuteWmiMethod
;
131 PSCSIWMI_FUNCTION_CONTROL WmiFunctionControl
;
132 } SCSI_WMILIB_CONTEXT
, *PSCSI_WMILIB_CONTEXT
;
137 ScsiPortWmiDispatchFunction(
138 IN PSCSI_WMILIB_CONTEXT WmiLibInfo
,
139 IN UCHAR MinorFunction
,
140 IN PVOID DeviceContext
,
141 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
146 #define ScsiPortWmiFireAdapterEvent( \
152 ScsiPortWmiFireLogicalUnitEvent( \
164 * ScsiPortWmiGetReturnSize(
165 * PSCSIWMI_REQUEST_CONTEXT RequestContext);
167 #define ScsiPortWmiGetReturnSize(RequestContext) \
168 ((RequestContext)->ReturnSize)
171 * ScsiPortWmiGetReturnStatus(
172 * PSCSIWMI_REQUEST_CONTEXT RequestContext);
174 #define ScsiPortWmiGetReturnStatus(RequestContext) \
175 ((RequestContext)->ReturnStatus)
180 ScsiPortWmiPostProcess(
181 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
183 IN ULONG BufferUsed
);
188 ScsiPortWmiFireLogicalUnitEvent(
189 IN PVOID HwDeviceExtension
,
194 IN ULONG InstanceIndex
,
195 IN ULONG EventDataSize
,
204 #endif /* __SCSIWMI_H */