diff options
| author | 2023-12-12 11:41:26 -0500 | |
|---|---|---|
| committer | 2023-12-12 11:41:26 -0500 | |
| commit | ff489bd82ff313bcfd7dc2ab585ed31cec909ebd (patch) | |
| tree | 300e031693a5ddb990a32068ab0596382349aeea /tcc/include/winapi/ddk/scsiwmi.h | |
| parent | init (diff) | |
fix software to compile properly on Windows XP x86
Diffstat (limited to 'tcc/include/winapi/ddk/scsiwmi.h')
| -rw-r--r-- | tcc/include/winapi/ddk/scsiwmi.h | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/tcc/include/winapi/ddk/scsiwmi.h b/tcc/include/winapi/ddk/scsiwmi.h new file mode 100644 index 0000000..7aae2a8 --- /dev/null +++ b/tcc/include/winapi/ddk/scsiwmi.h @@ -0,0 +1,215 @@ +/* + * scsiwmi.h + * + * SCSI WMILIB interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __SCSIWMI_H +#define __SCSIWMI_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "srb.h" + + +typedef struct _SCSIWMI_REQUEST_CONTEXT { + PVOID UserContext; + ULONG BufferSize; + PUCHAR Buffer; + UCHAR MinorFunction; + UCHAR ReturnStatus; + ULONG ReturnSize; +} SCSIWMI_REQUEST_CONTEXT, *PSCSIWMI_REQUEST_CONTEXT; + +#ifdef _GUID_DEFINED +# warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead +#endif + +#if ! (defined _GUID_DEFINED || defined GUID_DEFINED) +#define GUID_DEFINED +typedef struct _GUID { + unsigned long Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[ 8 ]; +} GUID; +#endif + +#ifndef _LPCGUID_DEFINED +#define _LPCGUID_DEFINED +typedef const GUID *LPCGUID; +#endif + +typedef struct _SCSIWMIGUIDREGINFO { + LPCGUID Guid; + ULONG InstanceCount; + ULONG Flags; +} SCSIWMIGUIDREGINFO, *PSCSIWMIGUIDREGINFO; + +typedef UCHAR DDKAPI +(*PSCSIWMI_QUERY_REGINFO)( + /*IN*/ PVOID DeviceContext, + /*IN*/ PSCSIWMI_REQUEST_CONTEXT RequestContext, + /*OUT*/ PWCHAR *MofResourceName); + +typedef BOOLEAN DDKAPI +(*PSCSIWMI_QUERY_DATABLOCK)( + /*IN*/ PVOID Context, + /*IN*/ PSCSIWMI_REQUEST_CONTEXT DispatchContext, + /*IN*/ ULONG GuidIndex, + /*IN*/ ULONG InstanceIndex, + /*IN*/ ULONG InstanceCount, + /*IN OUT*/ PULONG InstanceLengthArray, + /*IN*/ ULONG BufferAvail, + /*OUT*/ PUCHAR Buffer); + +typedef BOOLEAN DDKAPI +(*PSCSIWMI_SET_DATABLOCK)( + /*IN*/ PVOID DeviceContext, + /*IN*/ PSCSIWMI_REQUEST_CONTEXT RequestContext, + /*IN*/ ULONG GuidIndex, + /*IN*/ ULONG InstanceIndex, + /*IN*/ ULONG BufferSize, + /*IN*/ PUCHAR Buffer); + +typedef BOOLEAN DDKAPI +(*PSCSIWMI_SET_DATAITEM)( + /*IN*/ PVOID DeviceContext, + /*IN*/ PSCSIWMI_REQUEST_CONTEXT RequestContext, + /*IN*/ ULONG GuidIndex, + /*IN*/ ULONG InstanceIndex, + /*IN*/ ULONG DataItemId, + /*IN*/ ULONG BufferSize, + /*IN*/ PUCHAR Buffer); + +typedef BOOLEAN DDKAPI +(*PSCSIWMI_EXECUTE_METHOD)( + /*IN*/ PVOID DeviceContext, + /*IN*/ PSCSIWMI_REQUEST_CONTEXT RequestContext, + /*IN*/ ULONG GuidIndex, + /*IN*/ ULONG InstanceIndex, + /*IN*/ ULONG MethodId, + /*IN*/ ULONG InBufferSize, + /*IN*/ ULONG OutBufferSize, + /*IN OUT*/ PUCHAR Buffer); + +typedef enum _SCSIWMI_ENABLE_DISABLE_CONTROL { + ScsiWmiEventControl, + ScsiWmiDataBlockControl +} SCSIWMI_ENABLE_DISABLE_CONTROL; + +typedef BOOLEAN DDKAPI +(*PSCSIWMI_FUNCTION_CONTROL)( + /*IN*/ PVOID DeviceContext, + /*IN*/ PSCSIWMI_REQUEST_CONTEXT RequestContext, + /*IN*/ ULONG GuidIndex, + /*IN*/ SCSIWMI_ENABLE_DISABLE_CONTROL Function, + /*IN*/ BOOLEAN Enable); + +typedef struct _SCSIWMILIB_CONTEXT { + ULONG GuidCount; + PSCSIWMIGUIDREGINFO GuidList; + PSCSIWMI_QUERY_REGINFO QueryWmiRegInfo; + PSCSIWMI_QUERY_DATABLOCK QueryWmiDataBlock; + PSCSIWMI_SET_DATABLOCK SetWmiDataBlock; + PSCSIWMI_SET_DATAITEM SetWmiDataItem; + PSCSIWMI_EXECUTE_METHOD ExecuteWmiMethod; + PSCSIWMI_FUNCTION_CONTROL WmiFunctionControl; +} SCSI_WMILIB_CONTEXT, *PSCSI_WMILIB_CONTEXT; + +SCSIPORTAPI +BOOLEAN +DDKAPI +ScsiPortWmiDispatchFunction( + /*IN*/ PSCSI_WMILIB_CONTEXT WmiLibInfo, + /*IN*/ UCHAR MinorFunction, + /*IN*/ PVOID DeviceContext, + /*IN*/ PSCSIWMI_REQUEST_CONTEXT RequestContext, + /*IN*/ PVOID DataPath, + /*IN*/ ULONG BufferSize, + /*IN*/ PVOID Buffer); + +#define ScsiPortWmiFireAdapterEvent( \ + HwDeviceExtension, \ + Guid, \ + InstanceIndex, \ + EventDataSize, \ + EventData) \ + ScsiPortWmiFireLogicalUnitEvent( \ + HwDeviceExtension, \ + 0xff, \ + 0, \ + 0, \ + Guid, \ + InstanceIndex, \ + EventDataSize, \ + EventData) + +/* + * ULONG + * ScsiPortWmiGetReturnSize( + * PSCSIWMI_REQUEST_CONTEXT RequestContext); + */ +#define ScsiPortWmiGetReturnSize(RequestContext) \ + ((RequestContext)->ReturnSize) + +/* UCHAR + * ScsiPortWmiGetReturnStatus( + * PSCSIWMI_REQUEST_CONTEXT RequestContext); + */ +#define ScsiPortWmiGetReturnStatus(RequestContext) \ + ((RequestContext)->ReturnStatus) + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortWmiPostProcess( + /*IN*/ PSCSIWMI_REQUEST_CONTEXT RequestContext, + /*IN*/ UCHAR SrbStatus, + /*IN*/ ULONG BufferUsed); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortWmiFireLogicalUnitEvent( + /*IN*/ PVOID HwDeviceExtension, + /*IN*/ UCHAR PathId, + /*IN*/ UCHAR TargetId, + /*IN*/ UCHAR Lun, + /*IN*/ LPGUID Guid, + /*IN*/ ULONG InstanceIndex, + /*IN*/ ULONG EventDataSize, + /*IN*/ PVOID EventData); + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __SCSIWMI_H */ |
