"取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェースであって、該バーチャルデバイスインタフェースは、オペレーティングシステムのドライバスタック内のカーネル空間内をランするように構成されたカーネルコンポーネントであって、該カーネルコンポーネントはドライブインタフェースポートに第一のコマンドのセットをパスし一方で第二のコマンドのセットを分離して取り出すカーネルコンポーネントと、ユーザー空間内をランするように構成されたユーザーコンポーネントであって、該ユーザーコンポーネントは、該カーネルコンポーネントから該第二のコマンドのセットを受信し、該カーネルコンポーネントおよび該取り外し可能なハードドライブカートリッジのうちの一つもしくは両方を認証し、該取り外し可能なハードドライブカートリッジの使用を許可するユーザーコンポーネントと、を含む、バーチャルデバイスインタフェース。請求項1記載の取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェースであって、前記カーネルコンポーネントは前記ユーザーコンポーネントからオフセットを受信し、該オフセットは前記オペレーティングシステムからアクセス可能なユーザーデータエリアを識別するために使用される、バーチャルデバイスインタフェース。前記ユーザーコンポーネントからカートリッジドックへとコマンドを伝達する制御インタフェースをさらに含む、請求項1記載の取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェース。請求項1記載の取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェースであって、前記カーネルコンポーネントは前記オペレーティングシステムからの読み取りおよび書き込み要求を該取り外し可能なハードドライブカートリッジへとパスし、該読み取りおよび書き込み要求は前記ユーザーコンポーネントへとパスされない、バーチャルデバイスインタフェース。請求項1記載の取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェースであって、前記カーネルコンポーネントは、該取り外し可能なハードドライブカートリッジを移動させるためのイジェクトメカニズム、該取り外し可能なハードドライブカートリッジ上の書き込み保護スイッチ、ステータスインタフェース、ボタン、のうちの二つ以上と相互作用するためにカートリッジドックへとコマンドを伝達する、バーチャルデバイスインタフェース。請求項1記載の取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェースであって、該取り外し可能なハードドライブカートリッジはソリッドステートドライブを含む、バーチャルデバイスインタフェース。請求項1記載の取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェースであって、該取り外し可能なハードドライブカートリッジの使用を許可することは該ハードドライブカートリッジのハードドライブをアンロックする該取り外し可能なハードドライブカートリッジに固有なパスワードを提供することを含む、バーチャルデバイスインタフェース。取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェースであって、該バーチャルデバイスインタフェースは、第一のコンポーネントであって、該第一のコンポーネントは第一のコマンドのセットをドライブインタフェースポートへとパスし一方で第二のコマンドのセットを分離して取り出す第一のコンポーネントと、第二のコンポーネントであって、該第二のコンポーネントは、該第一のコンポーネントから該第二のコマンドのセットを受信し、該第一のコンポーネントおよび該取り外し可能なハードドライブカートリッジのうちの一つもしくは両方を認証し、該取り外し可能なハードドライブカートリッジの使用を許可し、該第一のコンポーネントはオペレーティングシステムのドライバスタック内のカーネル空間内もしくはユーザー空間内のいずれかをランし、該第一のコンポーネントは該オペレーティングシステムの該ドライバスタック内のカーネル空間内もしくはユーザー空間内のいずれかをランする、第二のコンポーネントと、を含む、バーチャルデバイスインタフェース。請求項8記載の取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェースであって、前記第一のコンポーネントは前記第二のコンポーネントからオフセットを受信し、該オフセットは前記オペレーティングシステムからアクセス可能な該取り外し可能なハードドライブカートリッジのユーザーデータエリアを識別するために使用される、バーチャルデバイスインタフェース。前記第二のコンポーネントからカートリッジドックへとコマンドを伝達する制御インタフェースをさらに含む、請求項8記載の取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェース。請求項8記載の取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェースであって、前記第一のコンポーネントは、該取り外し可能なハードドライブカートリッジを移動させるためのイジェクトメカニズム、該取り外し可能なハードドライブカートリッジ上の書き込み保護スイッチ、ステータスインタフェース、ボタン、のうちの二つ以上と相互作用するためにカートリッジドックへとコマンドを伝達する、バーチャルデバイスインタフェース。請求項8記載の取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェースであって、該取り外し可能なハードドライブカートリッジはソリッドステートドライブを含む、バーチャルデバイスインタフェース。請求項1記載の取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェースであって、該取り外し可能なハードドライブカートリッジの使用を許可することは該ハードドライブカートリッジのハードドライブをアンロックする該取り外し可能なハードドライブカートリッジに固有なパスワードを提供することを含む、バーチャルデバイスインタフェース。請求項8記載の取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェースであって、前記第一のコンポーネントはカーネル空間をランする、バーチャルデバイスインタフェース。請求項8記載の取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェースであって、前記第二のコンポーネントはユーザー空間をランする、バーチャルデバイスインタフェース。取り外し可能なハードドライブカートリッジを作動させるためのプロセッサ上での実行のためのバーチャルデバイスインタフェースコードを有する記憶媒体であって、該バーチャルデバイスインタフェースコードは、第一のコンポーネントであって、該第一のコンポーネントは第一のコマンドのセットをドライブインタフェースポートへとパスし一方で第二のコマンドのセットを分離して取り出す第一のコンポーネントと、第二のコンポーネントであって、該第二のコンポーネントは、該第一のコンポーネントから該第二のコマンドのセットを受信し、該第一のコンポーネントおよび該取り外し可能なハードドライブカートリッジのうちの一つもしくは両方を認証し、該取り外し可能なハードドライブカートリッジの使用を許可し、該第一のコンポーネントはオペレーティングシステムのドライバスタック内のカーネル空間内もしくはユーザー空間内のいずれかをランし、該第一のコンポーネントは該オペレーティングシステムの該ドライバスタック内のカーネル空間内もしくはユーザー空間内のいずれかをランする、第二のコンポーネントと、のためのコードを含む、記憶媒体。前記第一のコンポーネントが前記第二のコンポーネントからオフセットを受信するためのコードをさらに含み、該オフセットは前記オペレーティングシステムからアクセス可能な前記取り外し可能なハードドライブカートリッジのユーザーデータエリアを識別するために使用される、請求項16記載の取り外し可能なハードドライブカートリッジを作動させるためのプロセッサ上での実行のためのバーチャルデバイスインタフェースコードを有する記憶媒体。前記取り外し可能なハードドライブカートリッジを移動させるためのイジェクトメカニズム、前記取り外し可能なハードドライブカートリッジ上の書き込み保護スイッチ、ステータスインタフェース、ボタン、のうちの二つ以上と相互作用するために前記第一のコンポーネントがカートリッジドックへとコマンドを伝達するためのコードをさらに含む、請求項16記載の取り外し可能なハードドライブカートリッジを作動させるためのプロセッサ上での実行のためのバーチャルデバイスインタフェースコードを有する記憶媒体。請求項16記載の取り外し可能なハードドライブカートリッジを作動させるためのプロセッサ上での実行のためのバーチャルデバイスインタフェースコードを有する記憶媒体であって、該取り外し可能なハードドライブカートリッジの使用を許可することは該ハードドライブカートリッジのハードドライブをアンロックする該取り外し可能なハードドライブカートリッジに固有なパスワードを提供することを含む、記憶媒体。請求項16記載の取り外し可能なハードドライブカートリッジを作動させるためのプロセッサ上での実行のためのバーチャルデバイスインタフェースコードを有する記憶媒体であって、前記第一のコンポーネントはカーネル空間をランする、記憶媒体。請求項16記載の取り外し可能なハードドライブカートリッジを作動させるためのプロセッサ上での実行のためのバーチャルデバイスインタフェースコードを有する記憶媒体であって、前記第二のコンポーネントはユーザー空間をランする、記憶媒体。概要一実施形態において、本開示はホストコンピュータをハードドライブカートリッジとインタフェースするための方法および装置を提供する。バーチャルデバイスインタフェースは、カーネル空間のドライバスタック内のカーネルコンポーネント、およびユーザー空間内をランするように構成されたユーザーコンポーネントの間で分けられる。カーネルコンポーネントはデータコマンドをオペレーティングシステムからカートリッジドックへとパスし、一方でユーザーコンポーネントへとパスされたその他のコマンドを分離する。ユーザーコンポーネントは、カーネルコンポーネントおよび/もしくはハードドライブカートリッジを認証する。取り外し可能なハードドライブカートリッジの使用もまた、ユーザーコンポーネントにより認証される。もう一つの実施形態において、取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェースが開示される。バーチャルデバイスインタフェースは、カーネルコンポーネントおよびユーザーコンポーネントを含む。カーネルコンポーネントは、オペレーティングシステムのドライバスタック内のカーネル空間内をランするように構成される。カーネルコンポーネントは、第一のコマンドのセットをドライブインタフェースポートへとパスし、一方で第二のコマンドのセットを分離して取り出す。ユーザーコンポーネントは、ユーザー空間内をランするように構成される。ユーザーコンポーネントは、カーネルコンポーネントから第二のコマンドのセットを受信し、カーネルコンポーネントおよび取り外し可能なハードドライブカートリッジのうちの一つもしくは両方を認証し、取り外し可能なハードドライブカートリッジの使用を許可する。その上もう一つの実施形態において、取り外し可能なハードドライブカートリッジのためのバーチャルデバイスインタフェースが開示される。バーチャルデバイスインタフェースは、第一のコンポーネントおよび第二のコンポーネントを含む。第一のコンポーネントは、第一のコマンドのセットをドライブインタフェースポートへとパスし、一方で第二のコマンドのセットを分離して取り出す。第二のコンポーネントは、第一のコンポーネントから第二のコマンドのセットを受信し、第一のコンポーネントおよび取り外し可能なハードドライブカートリッジのうちの一つもしくは両方を認証し、そして取り外し可能なハードドライブカートリッジの使用を許可する。第一のコンポーネントはオペレーティングシステムのドライバスタック内のカーネル空間内もしくはユーザー空間内のいずれかをランする。第一のコンポーネントはオペレーティングシステムのドライバスタック内のカーネル空間内もしくはユーザー空間内のいずれかをランする。なおもう一つの実施形態において、取り外し可能なハードドライブカートリッジを作動させるためのプロセッサ上での実行のためのバーチャルデバイスインタフェースコードを有する記憶媒体が開示される。バーチャルデバイスインタフェースコードは、第一のコンポーネントおよび第二のコンポーネントのためのコードを含む。第一のコンポーネントは第一のコマンドのセットをドライブインタフェースポートへとパスし、一方で第二のコマンドのセットを分離して取り出す。第二のコンポーネントは、第一のコンポーネントから第二のコマンドのセットを受信し、第一のコンポーネントおよび取り外し可能なハードドライブカートリッジのうちの一つもしくは両方を認証し、そして取り外し可能なハードドライブカートリッジの使用を許可する。第一のコンポーネントはオペレーティングシステムのドライバスタック内のカーネル空間内もしくはユーザー空間内のいずれかをランする。第一のコンポーネントはオペレーティングシステムのドライバスタック内のカーネル空間内もしくはユーザー空間内のいずれかをランする。本開示の適用可能なのさらなる領域が、以下に提供される詳細な記述から明瞭となる。詳細な記述および具体的な例は、種々の実施形態を示すが、単に説明の目的が意図されているのであり、必ずしも本開示の範囲を限定するよう意図されていないことが理解されなければならない。添付された図において、類似のコンポーネントおよび/もしくは特徴は同一の参照ラベルを有し得る。さらに、同一のタイプの種々のコンポーネントは、参照ラベルにダッシュおよび類似のコンポーネント間を区別する第二のラベルを続けることで、区別され得る。第一のラベルが明細書中で使用されている場合に限り記述は、第二の参照ラベルを考慮することなく同一の第一の参照ラベルを有する類似のコンポーネントのいずれにも適用可能である。詳細な記述次の記述は、最適で例示的な実施形態のみを提供し、本開示の範囲、適用可能性もしくは解釈を限定するよう意図されていない。むしろ、最適で例示的な実施形態の次の記述は、当業者が最適で例示的な実施形態をインプリメントすることを可能にする記述を提供する。添付された特許請求の範囲に示されているように、真意および範囲から逸れることなく、構成要素の機能および配置に種々の変化が行われ得ることが理解される。初めに図1Aを参照すると、取り外し可能なハードドライブシステム100-1の実施形態が示されている。ホストコンピュータ800は、一つもしくは複数のインタフェースにより取り外し可能なカートリッジドック108に結合されている。取り外し可能なカートリッジドック108は、ハードドライブデータカートリッジ112を取り外し可能に受け入れる。データカートリッジ112は、取り外し可能なカートリッジドック108の開口を通して受けとられる。開口上にキーを付けることはデータカートリッジ112が誤って挿入されることを防ぐ。示されていないが、その他の実施形態は、任意の数のカートリッジドック、ライブラリ、機械式挿入メカニズム、ロボットカートリッジトランスポートなど、をサポートするホストコンピュータを有し得る。この実施形態は、直接、もしくはケーブルを使用して、もしくはワイヤレスで、合致する制御インタフェースポート116および周辺インタフェースポート124を有する。ホストコンピュータ800上の周辺インタフェースポート124例えば、SATA、PATA、eSATA、SCSI、FireWire、USB、wirelessUSB、UWB、PCI、miniPCIなどは、データカートリッジ112の合致する周辺インタフェースポート124と接続する。この実施形態のデータカートリッジ112は、スピニングもしくはソリッドステートハードドライブ110を部分的に囲み、そのハードドライブ110上の周辺インタフェースポート124はカートリッジハウジングの外側に露出している。その他の実施形態は、ハードドライブ110が、周辺インタフェースポート124と結合されたコネクタと接続され得る。カートリッジドック108は、ホストコンピュータ800に結合されたとき、データカートリッジ112を適切な場所に機械的に保持する。カートリッジドック108は、ホストコンピュータ800の内部、もしくは外部の筐体にあり得る。示されていないが、カートリッジドックは、ホストコンピュータ800から伝達されたデータ/コマンドをデータカートリッジ112にパスする二つの周辺インタフェースポートを有する。その他の実施形態においては、データカートリッジ上の周辺インタフェースポート124は、直接もしくはケーブルを通り、ホストコンピュータの周辺インタフェースポート124と結合し得る。ホストコンピュータ800は、カートリッジドック108の機能性を管理するために、制御インタフェースポート116を通してカートリッジドック108との接続を使用する。制御インタフェースポート116は、IPMIintelligentplatformmanagementinterface、I2Cinter-integratedcircuit、SPIserviceproviderinterface、USBおよび/もしくはその他の種類のインタフェースを制御チャネルに使用し得る。制御チャネルは、ロードステータスへの変化がカートリッジドック108により検出されたとき、ソフトウェアもしくはボタン140の起動によるイジェクト、ステータスライト132もしくはその他の表示の変化、イジェクトメカニズム132の起動、データカートリッジ112上の書き込み防止スイッチの状態、および/もしくは、カートリッジドック108および/もしくはデータカートリッジ112のその他の機能性を、通信するために使用される。カートリッジドック108は、この実施形態においては変化していないデータチャネルをパスするが、その他の実施形態においては、増幅、バッファリング、もしくは電気/プロトコル変換をし得る。制御チャネルは、制御インタフェースポート116で受けとられ、ドック制御装置120へとパスされる。ドック制御装置は、ボタン140、イジェクトメカニズム132、ステータスライト136、そしてその他の任意選択機能性を管理するために、プロセッサおよび/もしくは状態機械を含み得る。その他の実施形態においては、制御チャネルを通してアップデートされた、カートリッジドックでの表示を含み得る。一部の実施形態においては、温度、カートリッジバーコードもしくはシリアルナンバー、現在の消費量、電源供給健康状態などのような基準値が、ドック制御装置により集められ得る。図1Bを参照すると、もう一つの実施形態の取り外し可能なハードドライブシステム100-2が示されている。この実施形態は、制御情報をパスするために、ホストコンピュータ104とカートリッジドック108との間にサブチャネルを開く。ホストコンピュータは、共通の周辺インタフェースポート124を通り、データサブチャネルおよび制御サブチャネルを構成する。例えば、共通のインタフェース上のデータから制御を分離するために、2つのSATAチャネルが構成される。カートリッジドック108の内部で、インタフェースデマルチプレクサ128が2つのサブチャネルを分ける。制御情報はドック制御装置120と結合され、そしてデータ情報はデータカートリッジへとパスされる。例えば、インタフェースデマルチプレクサ128は、データカートリッジ112が1つのSATAポート上にあり、そしてドック制御装置120がもう1つのSATAポート上にあるように構成され得る。ドック制御装置120は、SATAプロトコルを使用して情報を伝達および受けとることができ得る。オフザシェルフポート乗算回路が、インタフェースデマルチプレクサに使用され得る。ドック制御装置120は、サブチャネルで制御情報の伝達をサポートするために、カスタムASICもしくはFPGAであり得る。あるいは、ドック制御装置120は、制御サブチャネル上でSATAからI2Cへの変換を実行するために、一部のポート乗算回路に組み込まれているシステムメッセージバスSMB機能性を行使し得る。I2Cポートは、ドック制御装置120ハードウェアもしくはインタフェースと、一実施形態においてはこの目的のために使用される、安価なマイクロ制御装置とを直接相互作用し得る。次に図2を参照すると、データカートリッジ112の実施形態が示されている。この実施形態は、ハードディスクドライブもしくはソリッドステートドライブを囲むために、プラスチックシェル200を設置している。ディスクドライブ上の周辺インタフェースポート124は、プラスチックシェルの開口204を通して露出される。書き込み防止スイッチ208は、カートリッジドック108がデータカートリッジ112への書き込みを許可されている場合を示す。カートリッジドック内のセンサーは、書き込み防止スイッチ208の状態を読み込む。キー付き特徴212が、データカートリッジ112の長さにわたり、カートリッジドック108の開口の傾斜した角は、データカートリッジ112の誤った挿入を防ぐ。図3Aを参照して、取り外し可能なカートリッジドック108とインタフェースするソフトウェアアーキテクチャ300-1の実施形態が示される。ソフトウェアアーキテクチャ300-1は一般的に、カーネル空間304およびユーザー空間306に分けられる。一般的に、カーネル空間304にソフトウェアコードを追加することは、ユーザー空間306にソフトウェアコードを追加することよりも難しい。さらに、一部のオペレーティングシステムにおいては、カーネル空間304には、ユーザー空間306よりも、厳しいオープンソースライセンス要求がある。バーチャルデバイスカーネルコンポーネントVDKC320およびバーチャルデバイスユーザーコンポーネントVDUC308は、この実施形態の取り外し可能なカートリッジドック108の機能性をサポートするために生成される。この実施形態においては、VDKC320はGPLversion2でライセンスされているが、VDUC308はオープンソースではない。カーネル空間304は、VDKC320とインタフェースするオペレーティングシステムOS304例えば、UNIX登録商標、LINUX登録商標、Windows登録商標などを含む。VDKC320は、OSの一部としてもしくは周辺インタフェースポート124のハードウェアメーカーにより、典型的に供給されるソフトウェアドライバであるインタフェースポートドライバ316と相互作用する。この実施形態においては、周辺インタフェースポート124は、ホストコンピュータ104の内部にあり得るSATAポート、もしくは、外部で使用可能なeSATAポートである。ユーザー空間306は、OS324でランするアプリケーションソフトウェアを含む。VDUC308は、カートリッジドック108を作動するためにVDKC320とインタフェースする。制御インタフェースポート116は、カートリッジドック108と制御チャネルを確立するために、VDUC308からアクセスされる。その他の実施形態においては、カーネル空間304内にソフトウェアドライバがあり得るが、VDUC308のこの実施形態では制御インタフェースポート116と直接相互作用する。制御インタフェースポート116は、ホストコンピュータ104のマザーボードに作られ得るか、もしくはアドオンボードもしくはカードであり得る。一部の実施形態においては、カーネルおよびユーザーコンポーネントは、潜在的に組み合わせられ得る。ライセンス限定のないオペレーティングシステム例えば、Windows登録商標に関しては、ユーザー空間の機能性はカーネル空間に設置され得、もしくは逆もまた同様である。もう一つの実施形態においては、VDKCおよびVDUCの機能性は、オペレーティングシステムの中にコンパイルされ得る。次に図3Bを参照すると、もう一つの実施形態である、取り外し可能なカートリッジドック108とインタフェースするソフトウェアアーキテクチャ300-2が示されている。この実施形態においては、VDUC308は、VDKC320を通して制御情報を通信する。制御サブチャネルは、データサブチャネルと共通の周辺インタフェースポート312を使用する。カートリッジドック108は、カートリッジドック108内で使用するために、その制御サブチャネルを取り除く。図4を参照して、ハードドライブ100のためのデータ構造400の実施形態が示される。この実施形態におけるハードドライブ110は、ユーザーデータのためにアクセス可能エリア全体が通常は使用可能であるオフザシェルフ回転ハードドライブである。VDKC320、VDUC308および/もしくはカートリッジドック108は、図4で示されているデータ構造400を認識する。ホストコンピュータ104で通常はアクセス可能でない、認証情報404およびメタデータ情報412がある。メタデータは、ハードドライブの健康状態情報、ユーザーデータエリア408のための読み取りおよび/もしくは書き込み防止情報、もしくは、その他、他ホストコンピュータソフトウェアでアクセス不可能な方法でデータカートリッジ112上で格納されるもののいずれかであり得る。VDUC308は、いったん一定の条件が満たされると、VDKC320にオフセット情報を提供する。ユーザーデータエリア408は、ホストコンピュータソフトウェアにとって、データカートリッジ112上で使用可能に現れるものである。ハードドライブ110はパスワード保護され得、そしてデータはハードドライブ110に暗号保護されて格納される。その他の実施形態は、認証情報404およびメタデータエリア412が隣接しないように、もしくはデータ構造400のどこかにいるように、認証情報404およびメタデータエリア412を分け得る。次に図5Aを参照すると、VDKC320およびVDUC308の実施形態がより詳細に示されている。VDKC320は、SCSIバーチャルドライバ524、コマンドディバイダ528、プロトコルトランスレータ532、データマッパー536、そしてSATAドライバインタフェース540を含む。VDKC320はこの実施形態において、2つのデータ経路、すなわちOSインタフェースおよびカートリッジインタフェースを通りインタフェースする。VDUC308は、SCSIコマンドハンドラ504、カートリッジメタデータAPI508、認証API512、カートリッジトランスポート516およびSCSIトランスポート520を含む。VDKC320はカーネル空間304のドライバスタック内にあり、そしてVDKC320はOS324にとって、SCSIブロック型装置へのSCSIドライバとして現れる。さらに、VDKC320は、データカートリッジ112が実際に存在するかどうかとは関係なく、カートリッジドック108に割り当てられたドライブレターを保つために、永続装置予約を提供する。SCSIバーチャルドライバ524は、OS324へのインタフェースである。データ、コマンドおよびステータスは、SCSIブロック装置をインプリメントする実際のハードウェアおよびソフトウェアから抽出された、SCSIバーチャルドライバ524を通して前後にパスされる。VDKC320は、コマンドディバイダ528を使用し、OS324から読み取り/書き込みコマンドを取り除く。この実施形態においてVDKC320は、VDUC308を伴うことなくすべてのデータSCSIコマンドを扱う。VDKC320は、データコマンドと、ドライバ温度に対する問い合わせと、ドライバファームウェアアップデートと、に対する最小の処理を伴いインタフェースを通してパスを提供する。もう一つの実施形態においては、温度およびファームウェアアップデートは、読み取り/書き込みアクセスだけに備えられたパススルーインタフェースを使用しない。VDKC320を通してパスされたSCSIコマンドに対する処理は、変換およびマッピングを含む。プロトコルトランスレータ532は、SCSIコマンドを、それらのSATAもしくはその他のプロトコルの相当物に変換する。データマッパー536は、ユーザーデータエリア408がハードドライブ110上のどこに位置しているかをVDUC308から知らされ、そしてそれに従い読み取りおよび書き込みをオフセットする。SATAドライバインタフェース540は、要求されたコマンドを実行するための適切なSATAコマンドを発するために、SATAインタフェースポートドライバ316と結合する。パスされていないSCSIコマンドに対しては、コマンドディバイダ528は、それらを処理のためにVDUC308へとパスする。SCSIトランスポートは、新しいSCSIコマンドがいつ使用可能であるかをVDUC308に通知し、VDKC320へと応答をパスする。受信されたコマンドはSCSIコマンドハンドラ504へとパスされ、そこで解釈される。SCSIコマンドハンドラ504は、コマンドに応答するために、カートリッジドック108およびことによるとその他のコンポーネントと相互作用する。いずれの結果も、SCSIトランスポート520からVDKC320へとパスされる。カートリッジトランスポート516は、制御チャネルおよびデータチャネルを使用して、VDUC308とVDKC320、カートリッジドック108およびデータカートリッジ112との相互作用を管理する。カートリッジトランスポート516は、カートリッジドック108にデータカートリッジ112が挿入されたときもしくは取り外されたときにVDKC320に通知し、データカートリッジ112のキャパシティを識別する。キャパシティは、ユーザーデータエリア408のサイズである。SATAコマンドはハードドライブ110に伝達され、応答はカートリッジトランスポート516により戻される。さらに、ドック制御装置120はカートリッジトランスポート516とインタフェースされている。認証API512は、VDKC320およびデータカートリッジ112を認証する。VDKC320と相互作用する前に、認証API512はそれが変更もしくは不法侵入されていないかを確認する。チェックサムもしくはハッシュは、VDKC320のためのソフトウェアコードに対して計算され得る。その他の実施形態はVDKC320をテストするために、暗号化、暗号および/もしくはコードブックを使用し得る。ハードドライブ110は、ハードドライブ110の固有な情報に基づきかつ簡単に変更されないアルゴリズムを使用して認証され得る認証情報404を伴うセクタを有する。VDKC320の認証の後、認証API512はユーザーアクセスのために、ハードドライブ110をアンロックするパスワードをハードドライブ110に提供する。カートリッジメタデータAPI508は、メタデータエリア412、およびデータカートリッジ112のその他のメモリエリアにアクセスする。メタデータAPI508は、ユーザーデータエリア408を識別するデータ構造400にオフセットを提供する。カートリッジメタデータAPI508により提供されたユーザーデータエリア408の知識、および認証API512により提供されたパスワードアンロックの知識がなければ、VDKC320はデータカートリッジ112と実効的に相互作用することができない。例えば、カートリッジメタデータAPI508は、カートリッジメーカー情報、モデルナンバー、シリアルナンバー、ラベル情報などと相互作用する。さらに、カートリッジメタデータAPI508は、カートリッジロードカウント、書き込まれたバイト、読み込まれたバイト、エラーカウント、読み取り保護、書き込み保護などのためのフィールドを読み取り、アップデートする。新しいベンダ特定情報およびフィールドが、メタデータエリア412に加えられ得る。この実施形態においては、VDUC308のみがメタデータエリア412へのアクセスを有する。一部の実施形態は、メタデータエリア412の完全性を認証するために、認証API512を使用し得る。図5Bを参照して、VDKC320およびVDUC308のもう一つの実施形態が詳細に示される。この実施形態は個別のコマンドチャネルを使用するのではなく、組み合わせられたコマンドおよびデータチャネルを有する。次に図6を参照すると、データカートリッジ112とインタフェースするためのプロセス600の実施形態が示されている。描かれているプロセスの一部は、新しいデータカートリッジ112がカートリッジドック108に挿入されるところであるブロック604において始まる。ブロック608において、VDUC308はVDKC320を認証する。この実施形態においては、ハードドライブ110はSATAプロトコルに従ってパスワードロックを有する。パスワードはハードドライブ110に固有であるが、ハードドライブ110からの情報により、VDUC308により決定され得る。ブロック612において、ハードドライブ110はアンロックされる。ハードドライブ110上の認証情報404は、ブロック616において、データカートリッジ112が認証されていることをさらに確認するために認証される。VDUC308によるハードドライブ110の問い合わせの後、ユーザーデータエリア408の位置が決定される。加えて、この実施形態はハードドライブ110上の情報の任意選択の暗号化を使用する。ユーザーデータエリア408の位置を識別するオフセットおよびデータを保護する暗号化キーは、VDUC308からVDKC620へと伝達される。この時点で、VDKC620は、ハードドライブ110と通信ができる。ある時点で、ブロック624においてOS324はSCSIコマンドをVDKC320へと伝達する。ブロック628において、データコマンドをブロック632へと分け、そしてその他のコマンドをブロック640へと分ける決定が行われる。データコマンドであると決定された場合には、ブロック632において、VDKC320はコマンドをハードドライブ110のプロトコルに変換しそしてユーザーデータエリア408内の適切な位置に要求をオフセットする。ブロック636において、データコマンドからのいずれの結果もOS324へとパスされる。SCSIコマンドがVDUC308のためのものであれば、ブロック640においてSCSIコマンドはVDUC308へとパスされる。ブロック644において、VDUC308はコマンドをプロセスする。一部のコマンドはデータカートリッジ112および/もしくはカートリッジドック108に問い合わせもしくは命令を要求する一方、その他のコマンドは要求しない。ブロック648における決定が行われる。コマンドもしくはデータチャネルを参照せずにVDUC308によりコマンドがプロセスされ得る場合には、処理はブロック648から、いずれの応答もVDKC320を通してOS324へとパスされるブロック660へと進む。カートリッジドック108および/もしくはデータカートリッジ112との相互作用が要求される場合には、ブロック652において実行される。ブロック656においていずれの結果も集められもしくは決定され、そしてブロック660においてOSへとパスされる。一部の決定は、いずれの応答もされないのでブロック660が不要となる。例えば、コマンドはデータカートリッジ112をカートリッジドック108にロックするものであり得る。もう一つの例においては、コマンドはデータカートリッジ112をイジェクトするものであり得る。イジェクトの後のステータスの変化は、カートリッジドック108が空であることを反映するために、OS324へと報告される。次に図7を参照すると、本発明の実施形態がインプリメントされ得る例示的な環境が、カートリッジドックおよび取り外し可能なデータカートリッジと協働するようにユーザー704によって使用され得るコンピュータシステム700と共に示される。コンピュータシステム700は、コンピュータ702、キーボード722、ネットワークルーター712、プリンタ708およびモニタ706を含み得る。モニタ706、プロセッサ702およびキーボード722は、ラップトップコンピュータ、デスクトップコンピュータ、ハンドヘルドコンピュータ、メインフレームコンピュータなどであり得るコンピュータシステム726の一部である。モニタ706は、CRT、平面型画面などであり得る。ユーザー704は、マウス、キーボード722、トラックボール、タッチスクリーンなどの種々の入力装置を使用してコンピュータ702にコマンドを入力し得る。コンピュータシステム700がメインフレームを含んでいれば、ユーザー704は、例えば端末もしくは端末インタフェースを使用して、コンピュータ702にアクセスし得る。加えて、コンピュータシステム726は、インターネット718もしくはWANと接続し得るネットワークルーター712を使用してプリンタ708およびサーバー710と接続し得る。サーバー710は、例えば、追加のソフトウェアプログラムおよびデータを格納するために使用され得る。一実施形態においては、ここで記述されたシステムおよび方法をインプリメントするソフトウェアは、サーバー710内の記憶媒体に格納され得る。従って、ソフトウェアはサーバー710内の記憶媒体からランされ得る。もう一つの実施形態においては、ここで記述されたシステムおよび方法をインプリメントするソフトウェアは、コンピュータ702内の記憶媒体に格納され得る。従って、ソフトウェアはコンピュータシステム726内の記憶媒体からランされ得る。その結果、この実施形態においてはソフトウェアは、コンピュータ702がネットワークルーター712と接続されていようといまいと使用され得る。プリンタ708はコンピュータ702と直接接続され得、その場合、コンピュータシステム726はネットワークルーター712と接続されていようといまいとプリントし得る。図8を参照して、専用ホストコンピュータシステム104の実施形態が示される。上記の方法は、上記された方法およびコンポーネントの動作を実行するようコンピュータシステムに指示するコンピュータプログラムプロダクトによりインプリメントされ得る。各々のそのようなコンピュータプログラムプロダクトは、コンピュータシステムのプロセッサに、対応する動作を実行するよう指示するコンピュータ読み取り可能媒体上で具体化された命令コードのセットを含み得る。これらの命令は、順次、もしくは並列例えば異なる処理スレッド下、もしくはこれらの組み合わせでランするように構成され得る。汎用コンピュータシステム726にコンピュータプログラムプロダクトをロードした後、汎用コンピュータシステム726はハードドライブドック108およびデータカートリッジ112にインタフェースを実行するために専用ホストコンピュータシステム104に変換される。専用ホストコンピュータシステム104は、コンピュータ702、コンピュータ702と結合したモニタ706、コンピュータ702と結合した一つもしくは複数の追加のユーザー出力装置830オプション、コンピュータ702と結合した一つもしくは複数のユーザー入力装置840例えば、キーボード、マウス、トラックボール、タッチスクリーン、コンピュータ702と結合したオプションの通信インタフェース850、コンピュータ702内の実態のあるコンピュータ読み取り可能メモリに格納されたコンピュータプログラムプロダクト805を含む。コンピュータプログラムプロダクト805は、上記された方法を実行するようホストシステム104に指示する。コンピュータ702は、バスサブシステム890経由で複数の周辺装置と通信する一つもしくは複数のプロセッサ860を含み得る。これらの周辺装置は、一つもしくは複数ユーザー出力装置830、一つもしくは複数ユーザー入力装置840、通信インタフェース850、そして実体のあるコンピュータ読み取り可能メモリの形態である、読み込み書き込み記憶装置RAM870および不揮発性記憶ドライブ880例えば、ディスクドライブ、光ドライブ、ソリッドステートドライブのような記憶サブシステムを含み得る。コンピュータプログラムプロダクト805は、不揮発性記憶ドライブ880か、もしくはコンピュータ702にアクセス可能でありかつメモリ870にロードされているもう一つのコンピュータ読み取り可能媒体かに格納され得る。各々のプロセッサ860は、Intel登録商標もしくはAdvancedMicroDevices,Inc.登録商標、もしくはこれらと類するところのマイクロプロセッサのような、マイクロプロセッサを含み得る。コンピュータプログラムプロダクト805をサポートするためにコンピュータ702は、上記言及されているコンポーネントとの間の通信だけでなく、プロダクト805と上記言及されているコンポーネントとの通信を扱う、コンピュータプログラムプロダクト805をサポートするオペレーティングシステムをランする。例示的なオペレーティングシステムは、MicrosoftCorporationのWindows登録商標もしくはこれに類するもの、SunMicrosystemsのSolaris登録商標、LINUX登録商標、UNIX登録商標、そしてこれらに類するものを含む。ユーザー入力装置840は、コンピュータシステム702に情報を入力するためのすべての可能なタイプの装置およびメカニズムを含む。それらは、キーボード、キーパッド、マウス、スキャナ、デジタル描画用パッド、ディスプレイに組み入れられたタッチスクリーン、音声認識システムのような音声入力装置、マイクロフォン、そしてその他のタイプの入力装置を含み得る。種々の実施形態においては、ユーザー入力装置840は典型的に、コンピュータマウス、トラックボール、トラックパッド、ジョイスティック、ワイヤレスリモコン、描画用タブレット、音声コマンドシステムとして具体化される。ユーザー入力装置840は典型的に、ボタンのクリックもしくはこれに類するもののようなコマンドを経由してモニタ706上に現れる、オブジェクト、アイコン、テキストおよびこれらに類するものを選択することをユーザーに許可する。ユーザー出力装置830は、コンピュータ702から情報を出力するためのすべての可能なタイプの装置およびメカニズムを含む。それらは、ディスプレイ例えば、モニタ706、プリンタ、音声出力装置のような非視覚ディスプレイなどを含み得る。通信インタフェース850は、その他の通信ネットワークおよび装置にインタフェースを提供し、そしてその他のシステム、WANおよび/もしくはインターネット718からデータを受信およびそれらへとデータを伝送するインタフェースとして働き得る。通信インタフェース850の実施形態は典型的にイーサネット登録商標カード、モデム電話、衛星、ケーブル、ISDN、非同期デジタル加入者回線DSL装置、FireWire登録商標インタフェース、USB登録商標インタフェース、ワイヤレスネットワークアダプタ、そしてこれらに類するものを含む。例えば、通信インタフェース850は、コンピュータネットワーク、FireWire登録商標バス、もしくはこれらに類するものと結合し得る。その他の実施形態においては、通信インタフェース850は、コンピュータ702のマザーボード上に物理的に統合され得るか、および/もしくはソフトウェアプログラム、もしくはこれに類するものであり得る。RAM870および不揮発性記憶ドライブ880は、実行可能コンピュータコード、人間読み取り可能コード、もしくはこれらに類するものを含む、本発明のコンピュータプログラムプロダクト実施形態のようなデータを格納するように構成される実体のあるコンピュータ読み取り可能媒体の例である。実体のあるコンピュータ読み取り可能媒体のその他のタイプは、フロッピー登録商標ディスク、取り外し可能なハードディスク、CD-ROM、DVD、バーコードのような光記憶媒体、フラッシュメモリのような半導体メモリ、読み取り専用メモリROM、電池でバックアップされた揮発性メモリ、ネットワーク接続された記憶装置、そしてこれらに類するものを含む。RAM870および不揮発性記憶ドライブ880は、上記されている本発明の種々の実施形態の機能性を提供する、基本のプログラミングおよびデータ構造を格納するように構成され得る。本発明の機能性を提供するソフトウェア命令セットは、RAM870および不揮発性記憶ドライブ880に格納され得る。これらの命令セットもしくはコードは、プロセッサ860により実行され得る。RAM870および不揮発性記憶ドライブ880はまた、本発明に従って使用されるデータおよびデータ構造を格納するためのリポジトリを提供し得る。RAM870および不揮発性記憶ドライブ880は、プログラム実行の間命令およびデータを格納する主読み込み書き込み記憶装置RAM、そして固定命令が格納されている読み取り専用メモリROMを含む複数のメモリを含み得る。RAM870および不揮発性記憶ドライブ880は、プログラムおよび/もしくはデータファイルの永続不揮発性記憶を提供するファイル記憶サブシステムを含み得る。RAM870および不揮発性記憶ドライブ880はまた、取り外し可能なフラッシュメモリのような取り外し可能な記憶システムを含み得る。バスサブシステム890は、種々のコンポーネントおよびコンピュータ702のサブシステムに互いに意図された通りに通信させるメカニズムを提供する。バスサブシステム890は図では単一のバスとして示されているが、バスサブシステムの代替の実施形態は、コンピュータ702内で複数のバスもしくは通信パスを利用し得る。開示された実施形態の複数の変形および改変もまた使用され得る。例えば、上記の実施形態はSCSIをSATAに変換するが、その他の実施形態は任意の二つのプロトコルの間を変換し得る。例えば、一実施形態は、SATAコマンドを受信し、そしてそれらをSCSIデータカートリッジのためのSCSIに変換し得る。本開示の原理が具体的な装置および方法と関連して上記されているが、本記述は本開示の範囲を限定するのではなく、単に例として記述されていることは明瞭に理解される。"