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構造体の Features0CHANGER_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

こちらもご覧ください

CHANGER_ELEMENT

CHANGER_EXCHANGE_MEDIUM

ChangerMoveMedium

GET_CHANGER_PARAMETERS