📄 scsiwmi.h
字号:
/* * 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 __cplusplusextern "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_DEFINEDtypedef struct _GUID { unsigned long Data1; unsigned short Data2; unsigned short Data3; unsigned char Data4[ 8 ];} GUID;#endif#ifndef _LPCGUID_DEFINED#define _LPCGUID_DEFINEDtypedef const GUID *LPCGUID;#endiftypedef 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;SCSIPORTAPIBOOLEANDDKAPIScsiPortWmiDispatchFunction( /*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)SCSIPORTAPIVOIDDDKAPIScsiPortWmiPostProcess( /*IN*/ PSCSIWMI_REQUEST_CONTEXT RequestContext, /*IN*/ UCHAR SrbStatus, /*IN*/ ULONG BufferUsed);SCSIPORTAPIVOIDDDKAPIScsiPortWmiFireLogicalUnitEvent( /*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 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -