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 、メディアの一部をソース要素から 1 つの宛先に移動し、その宛先から別の宛先に移動します。 ソースと 2 番目の宛先は、多くの場合、同じであり、メディアの単純な交換になります。
GET_CHANGER_PARAMETERS 構造体の Features0 のCHANGER_EXCHANGE_MEDIA フラグは、チェンジャーがこの機能をサポートしているかどうかを示します。 メディアの交換をサポートするチェンジャーには、通常、1 つのトランスポート要素に対して 2 つのピッカー メカニズム、または少なくとも 2 つのトランスポート要素があります。 単一のピッカー メカニズムを持つチェンジャーは、コマンドのエミュレーションを介したメディアの交換をサポートする場合があります。
チェンジャー クラス ドライバーは、ミニクラス ドライバーの ChangerExchangeMedium ルーチンを呼び出す前に、I/O スタックの場所で入力バッファーの長さを確認します。 Irp->SystemBuffer は、トランスポート要素と設定する宛先を示す入力パラメーターとして CHANGER_EXCHANGE_MEDIUM 構造体を指します。
ChangerExchangeMedium 最初にトランスポート、ソース、および宛先の要素アドレスが有効であることを確認してから、0 から始まる要素アドレスをデバイス固有の要素アドレスに変換します。 次に、CDB を使用して SRB をビルドしてメディアを交換し、システム ポート ドライバーに送信します。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | mcd.h (Mcd.h、Ntddchgr.h を含む) |
IRQL | PASSIVE_LEVEL |