ChangerReinitializeUnit 関数 (mcd.h)
ChangerReinitializeUnit は、IOCTL コード IOCTL_CHANGER_REINITIALIZE_TRANSPORTを使用して、デバイス制御 IRP のデバイス固有の側面を処理します。
構文
NTSTATUS ChangerReinitializeUnit(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp
);
パラメーター
[in] DeviceObject
変更子を表すデバイス オブジェクトへのポインター。
[in] Irp
IRP へのポインター。
戻り値
changer がトランスポート要素の再検証をサポートしている場合、 ChangerReinitializeUnit は、システム ポート ドライバーによって返されるSTATUS_XXX 値、または次のいずれかの値を返します。
STATUS_SUCCESS
STATUS_INVALID_ELEMENT_ADDRESS
STATUS_INVALID_PARAMETER
STATUS_INSUFFICIENT_RESOURCES
changer がトランスポート要素の再検証をサポートしていない場合、ChangerReinitializeUnit はSTATUS_INVALID_DEVICE_REQUESTを返します。
注釈
このルーチンは必須です。
ChangerReinitializeUnit により、changer はトランスポート要素を再調整します。 変更者によっては、トランスポートが "自宅" の位置に戻る場合があります。 通常、changer クラス ドライバーは、changer の電源がオンになった後、または呼び出し元のアプリケーションが回復操作を開始した後に ChangerReinitializeUnit を呼び出します。 GET_CHANGER_PARAMETERS のFeatures0 のCHANGER_DEVICE_REINITIALIZE_CAPABLE フラグは、このような状況で変更者のトランスポートが再調整をサポートしているかどうかを示します。
changer クラス ドライバーは、 ChangerReinitializeUnit を呼び出す前に、I/O スタックの場所で入力バッファーの長さを確認します。 Irp-SystemBuffer> は、再調整する要素を示すCHANGER_ELEMENT構造体を指します。
ChangerReinitializeUnit は、トランスポート要素を配置してシステム ポート ドライバーに送信する CDB を使用して SRB をビルドします。
ChangerReinitializeUnit は、changer クラス ドライバーに戻る前に、I/O 状態ブロックの Information フィールドを sizeof(CHANGER_ELEMENT) に設定します。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | mcd.h (Mcd.h、Ntddchgr.h を含む) |
IRQL | PASSIVE_LEVEL |