ChangerExchangeMedium 関数 (mcd.h)
ChangerExchangeMedium は、IOCTL コード IOCTL_CHANGER_EXCHANGE_MEDIUMを使用して、デバイス制御 IRP のデバイス固有の側面を処理します。
構文
NTSTATUS ChangerExchangeMedium(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp
);
パラメーター
[in] DeviceObject
変更子を表すデバイス オブジェクトへのポインター。
[in] Irp
IRP へのポインター。
戻り値
changer がメディアの交換をサポートしている場合、 ChangerExchangeMedium はシステム ポート ドライバーによって返される状態、または次のいずれかの値を返します。
STATUS_SUCCESS
STATUS_DESTINATION_ELEMENT_FULL
STATUS_INVALID_ELEMENT_ADDRESS
STATUS_SOURCE_ELEMENT_EMPTY
changer がメディアの交換をサポートしていない場合、ChangerExchangeMedium はSTATUS_INVALID_DEVICE_REQUESTを返します。
注釈
このルーチンは必須です。
ChangerExchangeMedium は、メディアの一部をソース要素からある宛先に移動し、その宛先から別の宛先に移動します。 多くの場合、ソースと 2 番目の宛先は同じであり、メディアの交換が簡単になります。
GET_CHANGER_PARAMETERS構造体の Features0 の CHANGER_EXCHANGE_MEDIA フラグは、変更子がこの機能をサポートしているかどうかを示します。 通常、メディアの交換をサポートする変更機能には、1 つのトランスポート要素に対して 2 つのピッカー メカニズム、または少なくとも 2 つのトランスポート要素があります。 単一のピッカー メカニズムを持つ変更機能では、 コマンドのエミュレーションを使用したメディアの交換がサポートされる場合があります。
changer クラス ドライバーは、ミニクラス ドライバーの ChangerExchangeMedium ルーチンを呼び出す前に、I/O スタックの場所で入力バッファーの長さを確認します。 Irp-SystemBuffer> は、トランスポート要素と設定する宛先を示す入力パラメーターとして、CHANGER_EXCHANGE_MEDIUM構造体を指します。
ChangerExchangeMedium は、最初にトランスポート、ソース、および宛先の要素アドレスが有効であることを確認してから、0 から始まる要素アドレスをデバイス固有の要素アドレスに変換します。 次に、CDB を使用して SRB をビルドしてメディアを交換し、システム ポート ドライバーに送信します。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | mcd.h (Mcd.h、Ntddchgr.h を含む) |
IRQL | PASSIVE_LEVEL |