HW_UNIT_CONTROL コールバック関数 (storport.h)
ミニポート ドライバーの HwStorUnitControl ルーチンは、ストレージ ユニット デバイスの状態を制御する同期操作を実行するために呼び出されます。
構文
HW_UNIT_CONTROL HwUnitControl;
SCSI_UNIT_CONTROL_STATUS HwUnitControl(
[in] PVOID DeviceExtension,
[in] SCSI_UNIT_CONTROL_TYPE ControlType,
[in] PVOID Parameters
)
{...}
パラメーター
[in] DeviceExtension
ミニポート ドライバーのユニットごとの記憶域へのポインター。
[in] ControlType
各 コントロールの種類 がミニポート ドライバーによってアクションを開始する単位制御操作を指定するSCSI_UNIT_CONTROL_TYPE値。 詳細については 、「SCSI_UNIT_CONTROL_TYPE 」を参照してください。
[in] Parameters
ControlType に関連する情報を含む構造体または値へのポインター。 すべての構造体は呼び出し元によって割り当てられます。 詳細については 、「SCSI_UNIT_CONTROL_TYPE 」を参照してください。
Address
制御操作が指定されている単位のアドレス。
戻り値
コントロールの種類に応じて、 HwStorUnitControl は次の SCSI_UNIT_CONTROL_STATUS 値のいずれかを返します。
リターン コード | 説明 |
---|---|
ScsiUnitControlSuccess | ミニポート ドライバーは、要求された操作が正常に完了しました。 |
ScsiUnitControlUnsuccessful | ユニット制御操作が成功しなかった。 |
注釈
Storport は、HBA が初期化された後、最初の I/O の前に ScsiQuerySupportedControlTypes コントロール型でミニポートの HwStorUnitControl を呼び出します。 ミニポート ドライバーは、パラメーターでSCSI_SUPPORTED_CONTROL_TYPE_LIST構造をサポートする操作を入力します。 HwStorUnitControl がこの呼び出しから戻った後、Storport ドライバーはミニポート ドライバーでサポートされている操作に対してのみミニポート ドライバーの HwStorAdapterControl コールバックを呼び出します。
Storport は HwStorUnitControl を呼び出して、 アドレスで識別されたユニット デバイスに対する変更をミニポート ドライバーに通知するか、ユニットの起動やユニットの電源制御操作の処理など、ミニポートがそのユニットに対してクエリまたは設定操作を実行する必要があることを通知します。
次の表は、現在の IRQL と、コントロールの種類が発行されたときに取得されたスピンロックの一覧です。
コントロール型 | Irql | スピン ロック |
---|---|---|
ScsiQuerySupportedControlTypes | PASSIVE_LEVEL | なし |
ScsiUnitUsage | PASSIVE_LEVEL | なし |
ScsiUnitStart | PASSIVE_LEVEL | なし |
ScsiUnitPower | DISPATCH_LEVEL | なし |
ScsiUnitPoFxPowerInfo | PASSIVE_LEVEL | なし |
ScsiUnitPoFxPowerRequired | DISPATCH_LEVEL | なし |
ScsiUnitPoFxPowerActive | DISPATCH_LEVEL | なし |
ScsiUnitPoFxPowerSetFState | DISPATCH_LEVEL | なし |
ScsiUnitPoFxPowerControl | DISPATCH_LEVEL | なし |
ScsiUnitRemove | PASSIVE_LEVEL | なし |
ScsiUnitSurpriseRemoval | PASSIVE_LEVEL | なし |
ScsiUnitRichDescription | PASSIVE_LEVEL | なし |
ScsiUnitQueryBusType | PASSIVE_LEVEL | なし |
ScsiUnitQueryFruId | PASSIVE_LEVEL | なし |
HwStorUnitControl という名前は、単なるプレースホルダーです。 このルーチンの実際のプロトタイプは、 storport.h で次のように定義されています。
typedef
SCSI_UNIT_CONTROL_STATUS
HW_UNIT_CONTROL (
_In_ PVOID DeviceExtension,
_In_ SCSI_UNIT_CONTROL_TYPE ControlType,
_In_ PVOID Parameters
);
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 |
対象プラットフォーム | ユニバーサル |
Header | storport.h (Storport.h を含む) |
IRQL | 「解説」を参照してください。 |