(57)【要約】【課題】  Windows（登録商標）2000及びWindows（登録商標）XPの制限ユーザー並びにMac（登録商標）OS10以降のＯＳユーザが使用するＳＣＳＩデバイスから２５３バイト以上のベンダーユニーク情報を取得するための新たな手法を提供する。【解決手段】  ホスト側よりGet Device Serial Number  ＡＰＩを複数回コールし、各コール毎にＳＣＳＩ標準コマンドであるInquiryコマンドを発行し、コマンドの発行ごとに、前記デバイスから前記製造シリアル番号として記憶されているデータを分割して順次応答させ、全応答が終了して後、前記分割して応答されたデータを応答された順にシリアルに接続して、２５３バイト以上のデータを取得する。【選択図】  図１
2005182377.tif 000002
【特許請求の範囲】
【請求項１】
ホスト機に接続されているＳＣＳＩデバイスの当該製造シリアル番号として記憶されている２５３バイト以上のデータを当該ホストで取得する方法であって、  ホスト側より「Get Device Serial Number  ＡＰＩ」を複数回コールするものであって、
各コール毎にＳＣＳＩ標準コマンドである「Inquiryコマンド」を発行し、
前記コマンドの発行ごとに、前記デバイスから前記製造シリアル番号として記憶されているデータを分割して順次応答させ、
全応答が終了して後、前記分割して応答されたデータを応答された順にシリアルに接続し、前記２５３バイト以上のデータを取得することを特徴とするデータ取得方法。
【請求項２】
各コール毎に発行する「Inquiryコマンド」おいて、ＳＣＳＩデバイスから応答させるべき内容を、応答順位、応答されるデータ長、取得すべき実際の製造シリアル番号の順にそのバイト長とともに指定して実行することを特徴とする請求項１記載のデータ取得方法。
【請求項３】
「Inquiryコマンド」による最初の読み出し指令に対する応答に対しては応答順位を１とし、それに続く応答順位を先の順位に１ずつ加算したものとして応答させ、最後の読み出し応答においては応答順位を予め定めた一の値で応答させることを特徴とする請求項１又は２記載のデータ取得方法。
【請求項４】
ＳＣＳＩデバイスは、ＵＳＢストレージデバイスであって、前記コマンドに対する応答は、その内部のコントローラが、フラッシュメモリーの管理領域から読み出したデータを前記コマンドで指定されたフォーマット内容に対応させてこれに応答するものであることを特徴とする請求項１乃至３いずれか１項記載のデータ取得方法。
【請求項５】
ＳＣＳＩデバイスに予め記憶されている製造シリアル番号を請求項１乃至４いずれかの方法で取得し、これを当該デバイスユーザ固有のＩＤ情報として利用することを特徴とするベンダーユニーク情報の利用方法。
【請求項６】
ホストに接続されているＵＳＢマスストレージクラス準拠のストレージデバイスにおけるＯＳが使用しない論理領域の所定のアドレスにベンダーユニーク情報を記憶しておき、当該記憶領域に記憶されている情報をホスト機で読み出す方法であって、
前記論理領域の他のアドレスの一つに、前記記憶領域のアドレスを最終として以降順にアクセスすべきアドレスを暗号化して記憶しておき、
ホスト側より「Generic Readコマンド」を発行し、前記順にアクセスすべきアドレスを読み出し、
当該デバイスが有する復号化プログラムにより前記順にアクセスすべきアドレス情報を解読して、これに順にアクセスし、最終アドレスにアクセスしたときに、前記ユニーク情報が読み出されるようにしたことを特徴とするベンダーユニーク情報の読み出し方法。
【請求項７】
前記ベンダーユニーク情報の実際の記憶領域はデバイスプログラムの中に存在することを特徴とする請求項６記載のベンダーユニーク情報の読み出し方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのオペレーティングシステムであるＷｉｎｄｏｗｓ（登録商標）２０００およびＷｉｎｄｏｗｓ（登録商標）ＸＰの制限ユーザーならびにＭａｃ（登録商標）ＯＳ１０以降のＯＳ使用のコンピュータに接続されているＳＣＳＩデバイスのベンダーユニーク情報を取得する方法に関する。
【背景技術】
【０００２】
従来、コンピュータに接続したＳＣＳＩデバイスからベンダー固有の情報（ベンダーユニーク情報）、たとえば製品のシリアル番号（製造シリアル番号）などを取得するには、当該デバイスへコンピュータよりベンダー固有のＳＣＳＩコマンドを発行していた。
ところが、コンピュータのオペレーティングシステム（ＯＳ）であるＷｉｎｄｏｗｓ（登録商標）２０００およびＷｉｎｄｏｗｓ（登録商標）ＸＰの制限ユーザー（administratorとして設定されている以外のユーザー）、並びにＭａｃ（登録商標）ＯＳ１０以降のＯＳでは、特にコンピュータウイルス対策などの必要性から、ＳＣＳＩのベンダーコマンド（ＳＵＳＩ標準Inquiryコマンド（ページコード８０ｈ））では、最大２５５−３＝２５２バイトのデータしか取り出すことができなくなった。
【０００３】
ここにベンダーとはデバイス（製品）の提供者であり、このベンダーは出荷前にその製造シリアル番号をコンピュータが読み取り可能な記憶領域に書き込んでいる。
このＳＣＳＩデバイスの一つとして、本件出願人が先に出願した「ＵＳＢストレージデバイス」がある。ＵＳＢポートに接続されて使用されるものであり、その管理領域（記憶領域の一部）には、同様にその製品固有の製造シリアル番号が書き込まれている。
【０００４】
このようなストレージデバイスにおいては、そのデバイスに予め書き込んである製造シリアル番号は当該デバイス固有の情報（ベンダーユニーク情報）であるため、そのデバイスに対するアクセス用のＩＤ情報として使用することも可能である。
【０００５】
しかしながら、Ｗｉｎｄｏｗｓ（登録商標）２０００およびＷｉｎｄｏｗｓ（登録商標）ＸＰの制限ユーザー（administratorとして設定されている以外のユーザー）、並びにＭａｃ（登録商標）ＯＳ１０以降のＯＳでは、特にコンピュータウイルス対策などの必要性から、ＳＣＳＩのベンダーコマンドを自由に発行できないようになっており、ＳＣＳＩデバイスのベンダーユニーク情報を取得するための新たなコマンド方法を考案しなければならないといった現状にある。
【０００６】
【特許文献１】特願２００２−１５５６８４
【特許文献２】特願２００３−１２５４６４
【発明の開示】
【発明が解決しようとする課題】
【０００７】
そこで、本発明は斯かる問題に鑑みてなされたものであり、その目的とするところは、Ｗｉｎｄｏｗｓ（登録商標）２０００およびＷｉｎｄｏｗｓ（登録商標）ＸＰの制限ユーザー、並びにＭａｃ（登録商標）ＯＳ１０以降のＯＳユーザーのＳＣＳＩデバイスから、２５３バイト以上のベンダーユニーク情報を取得するための新たな手法を提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明のベンダーユニーク情報の取得方法は、請求項１において、ホストに接続されているＳＣＳＩデバイスの当該製造シリアル番号として記憶されている２５３バイト以上のデータを当該ホスト機で取得する方法であって、ホスト側より「Get Device Serial Number  ＡＰＩ」を複数回コールするものであって、各コール毎にＳＣＳＩ標準コマンドであるInquiryコマンドを発行し、当該コマンドの発行ごとに、前記デバイスから前記製造シリアル番号として記憶されているデータを分割して順次応答させ、全応答が終了して後、前記分割して応答されたデータを応答された順にシリアルに接続し、前記２５３バイト以上のデータを取得する方法を提供する。
【０００９】
「Get Device Serial Number  ＡＰＩ」は、Ｗｉｎｄｏｗｓ（登録商標）Media Player７以降に発行可能な、ＳＣＳＩデバイスの製造シルアル番号を取得するコマンドである。
本方法によれば、Ｗｉｎｄｏｗｓ（登録商標）２０００およびＷｉｎｄｏｗｓ（登録商標）ＸＰの制限ユーザーのコンピュータに接続されたＳＣＳＩデバイスに予め記憶されている２５３バイト以上の製造シリアル番号を、所定のデータ形式で分割して読み出し、すべて読み出して後にこれらの情報から、オリジナルなベンダーユニーク情報を取得することができる。このことにより、Ｗｉｎｄｏｗｓ（登録商標）２０００およびＷｉｎｄｏｗｓ（登録商標）ＸＰの制限ユーザーが使用するＳＣＳＩデバイスから、２５３バイト以上の製造シリアル番号を有効に読み出すことができる。
【００１０】
この場合、各コール毎に発行するInquiryコマンドにおいて、ＳＣＳＩデバイスから応答させるべき内容を、応答順位、応答されるデータ長、取得すべき実際の製造シリアル番号の順に、そのバイト長とともに指定して実行するとよい（請求項２）。
この場合、各回のInquiryコマンドで応答される製造シリアル番号は、所定のデータ長に分割されたデータである。このように読み出しを実行することにより、当該読み出し指令で取得したデータから、当該指令で応答された製造シリアル番号の長さ、その内容を容易に知ることができ、全データを取得後はそれらを結合して本来取得すべきベンダーユニーク情報全体を容易に取得することができる。
【００１１】
ここで、最初の読み出し指令に対する応答に対しては応答順位を１とし、それに続く応答順位を先の順位に１ずつ加算したものとして応答させ、最後の読み出し応答においては、応答順位を予め定めた一の値で応答させるとよい（請求項３）。
【００１２】
このように読み出しを実行することにより、応答順位が予め定めた一の値、たとえば「０」で応答されたとき、当該応答が最終応答であり、次の読み出し指令が必要ないことをホストが確認でき、ホストはその最後の応答を以って、それまで分割取得した全データから、本来取得すべき製造シリアル番号全体を容易に取得することができる。この方法は製造シリアル番号全体の長さが当初から不明のとき有用である。尚、ここでは一の値とは、最終応答の時のみ使用される応答順位の値である。
【００１３】
また、ＳＣＳＩデバイスは、ＵＳＢストレージデバイスであって、前記コマンドに対する応答は、その内部のコントローラが、フラッシュメモリーの管理領域から読み出したデータを前記コマンドで指定されたフォーマット内容に対応させてこれに応答するものとすることができる（請求項４）。
【００１４】
ＵＳＢストレージデバイスは、その内部にフラッシュメモリーなどの半導体メモリーを有し、その記憶領域の一の領域をＦＡＴフォーマットの論理領域としてＦＡＴファイル管理システムで管理するとともに、他の一の領域をＩＳＯ９６６０フォーマットの論理領域としてＩＳＯ９６６０のファイル管理システムで管理することができる。
さらに、他の一の領域を製造シリアル番号などのベンダーユニーク情報を記憶する管理領域として定義することができ、さらに他の一の領域をＯＳが不可視の他の一のベンダーユニーク情報（固有ＩＤ情報）の記憶領域として定義することができる。
【００１５】
そして、ＵＳＢストレージデバイスに設けたコントローラは、ホストからのコマンドの指令（応答すべき内容とフォーマット）を解釈し、製造シリアル番号の記憶領域から当該情報を読み出し、前記指令に従ってホストに応答する。このコントローラは、その内部の実行プログラムとともに一般にファームウエアといわれるものであり、このコントローラの設計をホストが予定する読み出し指令に適宜適合させることにより、ベンダーユニーク情報の取得を容易に行うことができる。
【００１６】
またＳＣＳＩデバイスに予め記憶されている製造シリアル番号を上記いずれかの方法で取得し、これを当該デバイスユーザ固有のＩＤ情報として利用するとよい（請求項５）。
【００１７】
これによりＳＣＳＩデバイスに予め記憶されている製造シリアル番号を、ユーザ固有のＩＤ情報として使用することができる。たとえば、アクセス可能なコンピュータに予めこのＩＤ情報を登録しておき、なんぴとかが、本ＳＣＳＩデバイスをコンピュータのＵＳＢポートに挿し込んで使用せんとしたとき、ここから読み出したＩＤ情報が前記予め登録した情報と異なるときはアクセス不可とすることができる。
これは、たとえばＳＣＳＩデバイスがＵＳＢストレージデバイスなど、その使用者がそのデバイス内に書き込んでいる内容を他人に知られたくないようなデバイスである場合に特に有効である。
【００１８】
また、本発明は、ホスト機に接続されているＵＳＢマスストレージクラス準拠のストレージデバイスにおけるＯＳが使用しない論理領域の所定のアドレスにベンダーユニーク情報を記憶しておき、当該記憶領域に記憶されている情報をホストで読み出す方法であって、前記論理領域の他のアドレスの一つに、前記記憶領域のアドレスを最終として、以降順にアクセスすべきアドレスを暗号化して記憶しておき、ホスト側よりGeneric Readコマンドを発行し、前記順にアクセスすべきアドレスを読み出し、当該デバイスが有する復号化プログラムにより、前記順にアクセスすべきアドレス情報を解読して、これに順にアクセスし、最終アドレスにアクセスしたときに、前記情報が読み出されるようにしたベンダーユニーク情報の読み出し方法を提供する（請求項６）。
【００１９】
この場合、前記ベンダーユニーク情報の実際の記憶領域（物理領域）はデバイスプログラムの中に存在させてもよい（請求項７）。
【発明を実施するための最良の形態】
【００２０】
以下、本発明方法の実施形態例について図面を用いて説明する。尚、以下でＳＣＳＩデバイスとして、ＵＳＢストレージデバイスを例にとって説明するが、本発明の実施形態は下記の例に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。
【００２１】
本発明のＳＣＳＩデバイスにおけるベンダーユニーク情報の取得方法は、パーソナルコンピュータのＯＳにおいて、Ｗｉｎｄｏｗｓ（登録商標）２０００およびＷｉｎｄｏｗｓ（登録商標）ＸＰの制限ユーザー（その使用環境においてａｄｍｉｎｉｓｔｒａｔｏｒとして設定されている以外のユーザー）、並びにＭａｃ（登録商標）ＯＳ１０以降のＯＳユーザーにおいて有用な方法である。
【００２２】
以下の実施例ではＳＣＳＩデバイスとして、ＵＳＢストレージデバイスを用いて説明する。ＵＳＢストレージデバイスは、コンピュータのＵＳＢポートに接続されて使用されるストレージデバイスであり、以下その内容を、図面を用いて詳細に説明する。
【００２３】
（実施例）
図１は、ＵＳＢストレージデバイス１７とホスト１１の概略構成を示すブロック図である。
（１）ホスト１１
ホスト１１は、一般に広く知られたパーソナルコンピュータであり、ソフトウェアとして、オペレーティングシステム（ＯＳ）１２、ディスクドライブドライバ１３及びＵＳＢマスストレージクラスドライバ１４を備え、ハードウェアとしてＵＳＢホストコントローラ１５を少なくとも備える。
【００２４】
オペレーティングシステム１２は、ホスト１１を統括的に制御するソフトウェアであり、例えばＷｉｎｄｏｗｓ（登録商標）２０００やＷｉｎｄｏｗｓ（登録商標）ＸＰ、Ｍａｃ（登録商標）ＯＳ１０である。
ディスクドライブドライバ１３は、オペレーティングシステム１２から受け取った記憶装置へのアクセス指令等をＳＣＳＩコマンド変換してＵＳＢマスストレージクラスドライバ１４に渡すとともに、ＵＳＢマスストレージクラスドライバ１４から指令等を受け取りオペレーティングシステム１２に渡す。
ＵＳＢマスストレージクラスドライバ１４は、ＵＳＢホストコントローラ１５を制御する。ＵＳＢホストコントローラ１５は、図示しないＵＳＢコネクタ（ＵＳＢポート）を備え、他の装置のＵＳＢコネクタとケーブルによって接続されることによって、ＵＳＢ規格に基づいた通信を行うことができるようになっている。
【００２５】
（２）ＵＳＢストレージデバイス１７
ＵＳＢストレージデバイス１７は、ＵＳＢインターフェース１９とコントローラ２１とフラッシュメモリ２５とを備える。
【００２６】
ＵＳＢインターフェース１９は、ＵＳＢバス１６を介してホスト１１と通信を行う機能を担う。ＵＳＢインターフェース１９は、パケット送受信部１９ａとシリアルパラレル変換部１９ｂとパケット生成分解部１９ｃとＵＳＢバスパワー制御部１９ｄとを備える。
パケット送受信部１９ａは、図示しないＵＳＢコネクタと接続され、ＵＳＢ規格に基づいたパケットを送受信する。シリアルパラレル変換部１９ｂは、シリアルデータとパラレルデータとを相互に変換する。パケット生成分解部１９ｃは、ホスト１１と通信を行うためのパケットの生成及びパケットを分解してデータの取り出しを行う。
ＵＳＢバスパワー制御部１９ｄは、ホスト１１から供給される電力の管理及びＵＳＢストレージデバイス１７の各部位への電力の配分を行う。
【００２７】
コントローラ２１は、メモリ制御部２１ａとＵＳＢインターフェース制御部２１ｂとメモリ情報記憶部２１ｃ、並びに、読み出しコマンド実行部２１ｄとを備える。メモリ制御部２１ａは、フラッシュメモリ２５に対してデータの読み出し、書き込み及び削除を実行する。ＵＳＢインターフェース制御部２１ｂは、前述したＵＳＢインターフェース１９の各部を制御する。
メモリ情報記憶部２１ｃは、フラッシュメモリ２５の領域に関する情報を記憶する。以下、図２のデータ例を用いてこの情報について説明する。
【００２８】
図２に示すように、メモリ情報記憶部２１ｃは、論理ユニット番号３１とフォーマット３３と書き込み削除可否フラグ３５と論理ブロック番号３７と物理ブロック番号３９とを備える。論理ユニット番号３１は論理ユニットを識別するための番号であり、「０」と「１」とが存在する。フォーマット３３は、論理ユニット番号３１に対応し、その論理ユニットのフォーマットを表す。
データ例では、論理ユニット番号「０」は「ＦＡＴ」フォーマットであり、論理ユニット番号「１」は「ＩＳＯ９６６０」フォーマットである。書き込み削除可否フラグ３５は、論理ユニット番号３１に対応し、その論理ユニットに対して情報の書き込み及び削除の実行可否を表すフラグである。
データ例では、論理ユニット番号「０」は「可」であり、論理ユニット番号「１」は「不可」である。論理ブロック番号３７は、ホスト１１によって指定されるブロック番号であり、論理ユニット毎に定義されている。
【００２９】
このように、フラッシュメモリ２５の実ブロック番号である物理ブロック番号３９と論理ブロック番号３７との対応づけは、メモリ制御部２１ａによって管理されている。このため、物理ブロック番号３９と論理ブロック番号３７とは自由に対応付けを行うことができる。これは、フラッシュメモリーの書き込み回数の制限などに対応させるためである。
また、論理ユニット番号「０」のフォーマットをＩＳＯ９６６０にし、論理ユニット番号「１」のフォーマットをＦＡＴにしてもよい。また、更に論理ユニットを増やし、ユーザーやアプリケーションによって使い分けられるようになっていてもよい。
【００３０】
読み出しコマンド実行部２１ｄは、ホスト機から指令されたコマンド内容を解釈し、前記コマンドで指定されたデータ量の製造シリアル番号を読み出すとともに、これを前記コマンドの指令に基づいたフォーマットに構成し、ホストに返答するためのものである。この動作については後述する。
【００３１】
フラッシュメモリ２５は、記憶保持動作が不要な半導体メモリ（不揮発性メモリー）である。記憶したデータは、メモリ制御部２１ａによって読み出すことが可能である。また、メモリ制御部２１ａによって書き込み及び削除をすることもできる。
【００３２】
（ａ）起動処理
ＵＳＢストレージデバイス１７がホスト１１に接続された際に、ＵＳＢストレージデバイス１７のコントローラ２１でプログラムに基づいて実行される起動処理について、図３のフローチャートを用いて説明する。この起動処理は、ＵＳＢストレージデバイス１７がホスト１１に接続されることにより、ＵＳＢバスパワー制御部１９ｄに電力が供給され、さらにホスト１１側でエニュメレーション処理が実行されると開始される。
【００３３】
起動処理を開始すると、ホスト１１からの指令に応じて、ディスクリプタと呼ばれるデバイス情報（デフォルトパイプの最大パケットサイズ等）をホスト１１に送信する（Ｓ１１０）。
【００３４】
次に、ホスト１１からの指令に応じて、ＵＳＢストレージデバイス１７のアドレスを設定する（Ｓ１１５）。以降、このアドレス宛のフレームのみを当該ＵＳＢストレージデバイス１７は取得する。
【００３５】
次に、より詳細なデバイス情報をホスト１１に送信する（Ｓ１２０）。このデバイス情報としては、エンドポイントに関する情報、クラス、サブクラス、プロトコル等である。その結果、ホスト１１ではＵＳＢマスストレージクラスドライバ１４が起動され、図示しないアプリケーションソフトウェアからディスクドライブドライバ１３とＵＳＢマスストレージクラスドライバ１４とを介してＵＳＢホストコントローラ１５を制御するアクセスパスができる。
【００３６】
続いて、ＵＳＢマスストレージクラスドライバ１４が、「Get Max Logical Unit Number  ＡＰＩ」コマンドによって論理ユニット番号数を要求するため、ＵＳＢストレージデバイス１７は、メモリ情報記憶部２１ｃから論理ユニット番号数が２であるという情報を読み出して、ホスト１１に送信する。
そして、さらに、ディスクドライブドライバ１３がInquiryマンドを発行するため、ＵＳＢストレージデバイス１７は、メモリ情報記憶部２１ｃから論理ユニットのフォーマットに関する情報を読み出して、ホスト１１に送信する。
これらの結果、ホスト１１は、ＵＳＢストレージデバイス１７を、ＦＡＴフォーマットから構成される論理ユニット番号「０」の領域とＩＳＯ９６６０フォーマットから構成される論理ユニット番号「１」の領域とを有するデバイスと認識する。ホスト１１との通信が確立されると、フラッシュメモリ２５を動作可能にし（Ｓ１２５）、起動処理を終了する。
【００３７】
（ｂ）アクセス処理
以下、ホスト機に接続されているＳＣＳＩデバイスの当該製造シリアル番号（記憶されている２５３バイト以上のデータ）を、Ｗｉｎｄｏｗｓ（登録商標）２０００、またはＷｉｎｄｏｗｓ（登録商標）ＸＰのAdministrator以外のユーザーが、当該ホスト機で取得する手順について説明する。
ＵＳＢストレージデバイス内の処理（ホストからのコマンドの解釈、およびその実行）は、前述したコントローラ２１の読み出しコマンド実行部２１ｄが行うものである。
【００３８】
（第１実施例）
本方法の特徴は、
（１）ホスト側より「Get Device Serial Number  ＡＰＩ」を複数回コールすることにある。ＡＰＩ（Application Program  Interface）は、ＯＳがアプリケーションに対して公開しているプログラムインターフェイスで、アプリケーションは、基本的に、すべての処理をこのＡＰＩを経由して行なうものである。
現在一般的なＯＳのＡＰＩは関数の形式をとっており、アプリケーションからは、適当なパラメータ（引数）を指定して、ＡＰＩの関数を呼び出している。
そして、（２）各コール毎にＳＣＳＩ標準コマンドであるInquiryコマンドで製造シリアル番号の読み出し指令を発行する。
また、（３）当該コマンドの発行ごとに、前記ＳＣＳＩデバイスから製造シリアル番号として記憶されているデータを分割して順次応答させる。
（４）全応答が終了して後、前記分割して応答されたデータを応答された順にシリアルに接続し、前記２５３バイト以上のオリジナルデータを取得するものである。
【００３９】
より具体的には、前記ＡＰＩコールごとに、Inquiryコマンドで、ＳＣＳＩデバイスから応答させるべき内容を、「応答順位」、「応答される製造シリアル番号のデータ長」、「実際の製造シリアル番号のデータ」の順に、それぞれそのバイト数とともにフォーマット指定して読み出し指令を実行する。このことを下記に詳しく説明する。
【００４０】
今、ＳＣＳＩデバイス内に記憶されている製造シリアル番号が２５３バイト以上であると仮定する。このＳＣＳＩデバイスに対して、ホストから各ＡＰＩコールごとにInquiryコマンドで、“Ｉｎｄｅｘ”（応答順位）、“Ｌｅｎｇｔｈ”（応答される製造シリアル番号のデータ長）、“Ｄａｔａ”（実際の製造シリアル番号データ）の順に、また、前記それぞれのデータ長を、“Ｉｎｄｅｘ”は１Ｂｙｔｅ、“Ｌｅｎｇｔｈ”は１Ｂｙｔｅ、“Ｄａｔａ”（実際の製造シリアル番号データ）は２５２Ｂｙｔｅ以内と定義し、これに準拠したフォーマットで返答するよう指令する。
【００４１】
最初の“Ｉｎｄｅｘ”は、製造シリアル番号が２５３バイト以上の場合、複数のＡＰＩコール、即ち、複数回のInquiryコマンドの発行を行うため、いま返答されたユニーク情報が何番目の応答かを示すためのものである。この“Ｉｎｄｅｘ”は、最初の応答を「１」とし、順に一つずつ値を加算させ、最後の応答である場合には“Ｉｎｄｅｘ”で「０」を応答させる。これは、当該応答に属する製造シリアル番号のデータが２５２バイト未満であることをコントローラ２１が確認したときの応答である。“Ｉｎｄｅｘ”が「０」であることにより、ホストは当該応答が最終であることを確認できる。“Ｄａｔａ”には、当該応答における実際の製造シリアル番号（最終データ）が割り当てられる。
【００４２】
こうして得られた情報より、ホストは、各応答で得られた製造シリアル番号が、その“Ｌｅｎｇｔｈ”で指定した長さと一致するか（最終応答を除き）を確認し、“Ｉｎｄｅｘ”「１」から「２」「３」・・「最終値（０）」までに得られた製造シリアル番号データ（“Ｄａｔａ”の内容）をシリアルに接続する。これにより得られた結果が、オリジナルな製造シリアル番号（当該製品のベンダーユニーク情報）である。
【００４３】
以下、ホストへの応答例を説明する。
例えば、６４Ｂｙｔｅの製造シリアル番号を一度に応答する場合は、表１のようになる。
［表１］
Ｉｎｄｅｘ   Ｌｅｎｇｔｈ    Ｄａｔａ
０          ６４          ６４Byteの製造シリアル番号データ
この表１で、Ｉｎｄｅｘが「０」であることから、製造シリアル番号の読み出しがこれで完結したことを示す。又、Ｌｅｎｇｔｈが６４とあるのは、本応答に属する製造シリアル番号のデータが６４Ｂｙｔｅであることを示す。尚、実際のホストに対する返答は、バイナリーコードで行われる。
【００４４】
次に、６４Ｂｙｔｅの製造シリアル番号を、１６Ｂｙｔｅごとに４回に分けて応答する場合は表２のようになる。
［表２］
１回目のＡＰＩコールに対して、
Ｉｎｄｅｘ   Ｌｅｎｇｔｈ    Ｄａｔａ
１          １６      １６Ｂｙｔｅの製造シリアル番号データ
２回目のＡＰＩコールに対して、
Ｉｎｄｅｘ   Ｌｅｎｇｔｈ    Ｄａｔａ
２          １６      １６Ｂｙｔｅの製造シリアル番号データ
３回目のＡＰＩコールに対して、
Ｉｎｄｅｘ   Ｌｅｎｇｔｈ    Ｄａｔａ
３          １６      １６Ｂｙｔｅの製造シリアル番号データ
４回目のＡＰＩコールに対して、
Ｉｎｄｅｘ   Ｌｅｎｇｔｈ    Ｄａｔａ
０          １６      １６Ｂｙｔｅの製造シリアル番号データ
【００４５】
この製造シリアル番号は、ベンダー（製造業者）が各ＳＣＳＩデバイスにその製品固有の番号（ベンダーユニーク情報）に割り当てるため、この製品の使用者（ユーザ）は当該シリアル番号を、当該ユーザーのＩＤ番号として使用することができる。そのため、前記ＵＳＢストレージデバイスのユーザーは、当該ＳＣＳＩデバイスの製造シリアル番号をそのＩＤ情報（個人認証用の情報）として使用することができる。
【００４６】
（第２実施例）
次に、前述のＷｉｎｄｏｗｓ（登録商標）２０００、Ｗｉｎｄｏｗｓ（登録商標）ＸＰの他、Ｍａｃ（登録商標）ＯＳ１０を含むＯＳ環境下で使用されるＳＣＳＩデバイスから、ベンダーユニーク情報を取得する方法について説明する。
Ｍａｃ（登録商標）ＯＳ１０からは、ＵＳＢマスストレージデバイスのリムーバブルディスクに対して、アプリケーションから直接ＳＣＳＩコマンドを発行できない。しかし、「Generic Read  コマンド」は自由に使用できるため、ＯＳが使用しないセクター（いわゆる秘匿領域）の所定のアドレスにベンダーユニーク情報を記憶しておき、この「Generic Read  コマンド」を用い、当該記憶領域に記憶されている情報をホストで読み出すものである。通常は、これらの秘匿領域には、通常意味のないデータが書かれているか、または物理的に存在しないため、通常のホストの読み出し指令に対してはエラーステータスが返答されるものである。
【００４７】
そこで、この秘匿領域の前記記憶アドレスとは異なる他のアドレスに、前記記憶アドレスを最終として以降順にアクセスすべき論理ブロックアドレスを暗号化して記憶しておき、それを復号化（暗号解読）し、これに順にアクセスして、記憶アドレスからそこに記憶されているベンダーユニーク情報を読み出すものである。
尚、この記憶領域はストレージデバイスの論理領域に対して物理的に存在する必要はなく、デバイスプログラムの中に仮想的に存在してもよい。
【００４８】
以下、その具体例を示す。
今、通常ＯＳがストレージとして使用する領域がＬＢＡ（論理ブロックアドレス）で、０から１００００とした場合、ＬＢＡ１５０００に、以降順にアクセスすべき論理ブロックアドレスを暗号化したデータを記憶しておく。今そのアドレスを、２７０００、１０００１、１８８８８、４３０００とする（この例では暗号化はしていないものとする）。最終アドレスであるＬＢＡ４３０００にはベンダーユニーク情報を記憶しておく。
（正しい手順）
（１）ＬＢＡ１５０００を読み出す。２７０００、１０００１、１８８８８、４３０００の暗号化されたものが読み出される。
（２）暗号を解読する。
（３）ＬＢＡ２７０００を読み出す。データは、ＡＬＬＯなど意味のないものを返す。
（４）ＬＢＡ１０００１を読み出す。データは、ＡＬＬＯなど意味のないものを返す。
（５）ＬＢＡ１８８８８を読み出す。データは、ＡＬＬＯなど意味のないものを返す。
（６）ＬＢＡ４３０００を読み出す。ベンダーユニーク情報を返す。
（７）このアドレスがアクセスされた時点で、再び正規手順でなければ読み出しが不可能な状態にする。
尚、下記に誤った手順について説明すると、
先ず、ＬＢＡ４３０００をいきなり読み出した場合には、エラーステータス  Sector Not Foundを返し、ベンダーユニーク情報の取得ができない。
又、ＬＢＡ１０００１を読み出したときにも、エラーステータス  Sector Not Foundを返す。以下、シーケンシャルに逐次読み出してもすべてエラーステータス  Sector Not Foundを返す。
そして、ＬＢＡ１５０００を読み出した段階で、２７０００、１０００１、１８８８８、４３０００の暗号化されたものが読み出されるが、これを復号化できない限り、このデータは意味のないものになる。
また、ＬＢＡ１５００１を読み出しても、エラーステータス  Sector Not Foundを返す。以下、シーケンシャルに逐次読み出しても、すべてエラーステータス  Sector Not Foundを返す。
【００４９】
なお、Generic Readコマンドの解釈及びその実行は、読み出しコマンド実行部２１ｄが行うが、前述した第１実施例とはその処理プログラムが異なっていることは言うまでもない。
そして復号化プログラムは、読み出しコマンド実行部２１ｄに内蔵することができる。よって、ＳＣＳＩデバイスに内蔵してなる読み出しコマンド実行部２１ｄにより、ベンダーが構築した読み出しアーキテクチャーに沿った読み出し手順、並びに暗号解読を行わない限り、ベンダーユニーク情報の読み取りは不可能である。従って、秘匿領域の所定の論理アドレスに対応して記憶したベンダーユニーク情報は、当該ＳＣＳＩデバイスのＩＤ情報として有効に使用することができる。
【００５０】
（ｃ）初期化処理
なお、ここでベンダーによるユニーク情報の書き込みについて説明する。
初期化処理は、ＵＳＢストレージデバイス１７の製造者や販売者等（ベンダー）が初期化を行うことを目的として、ホスト１１上で初期化ソフトウェアを実行して、後述する書き込みボタン６６を押下した際に、ＵＳＢストレージデバイス１７のコントローラ２１において、所定のプログラムに基づいて実行される。図示していないが、このプログラムもコントローラ２１に設けられる。
【００５１】
初期化処理を説明する前に、ホスト１１で実行される初期化ソフトウェアについて、図４の操作画面５１を用いて説明する。操作画面５１では、ベンダーがＵＳＢストレージデバイス１７に関する様々なパラメータを設定することができる。
ディスク領域容量入力用ボックス５３は、論理ユニット番号「０」に対応するものであり、情報の読み出し、書き込み及び削除を実行することができる領域（ディスク領域）の容量を入力するためのテキストボックスである。ＣＤーＲＯＭ領域容量入力用ボックス５５は、論理ユニット番号「１」に対応するものであり、情報の読み出しのみを実行することができる領域（ＣＤ−ＲＯＭ領域）の容量を入力するためのテキストボックスである。
尚、このディスク領域容量入力用ボックス５３とＣＤーＲＯＭ領域容量入力用ボックス５５とに入力した値の合計が全容量１６以下になるようベンダーは入力しなければならない。
【００５２】
シリアル番号入力用ボックス５７は、ＵＳＢ規格で定義された製造シリアル番号を入力するためのテキストボックスである。この製造シリアル番号は各製品固有のものであるため、ベンダーユニーク情報の一つである。
Ｗｉｎｄｏｗｓ（登録商標）２０００、またはＷｉｎｄｏｗｓ（登録商標）  ＸＰのAdministrator以外のユーザーは、上述のアクセス処理で、この製造シリアル番号を読み出すことができる。
【００５３】
固有ＩＤ入力用ボックス５９は、固有ＩＤをテキストデータで入力するためのボックスである。この固有ＩＤというのは、ＵＳＢ規格で定義されたものではなく、本実施例のＵＳＢストレージデバイス１７に独自のものであり、この固有ＩＤをライセンスキーとすることで、不正コピーなどによるコンテンツの不正起動を防止に用いたり、固有ＩＤを認証キーや会員向けサービスに利用したりすることもできる。
固有ＩＤは、１６バイト以上６１２バイト以下の１６進データである。なお、テキストボックス５９の右端の上下ボタンが押下されることにより、表示しきれないデータを順次表示するように操作画面５１は構成されている。このＩＤを、ＯＳが使用しない秘匿領域に記憶し、Ｗｉｎｄｏｗｓ（登録商標）２０００、またはＷｉｎｄｏｗｓ（登録商標）ＸＰのAdministrator以外のユーザー、並びにＭａｃ（登録商標）ＯＳ１０以降のユーザーが、前述の方法に従って当該固有ＩＤを読み出すことができる。
【００５４】
ファイルボックス６１は、ＣＤ−ＲＯＭ領域に書き込むファイル名を入力するためのテキストボックスである。複数ファイルのファイル名を入力できるようになっていてもよい。
【００５５】
参照ボタン６３は、テキストボックス６１へのファイル名入力を支援するダイアログボックスを表示させるためのボタンである。表示されたダイアログボックスの中から特定ユーザーがファイル名を選択すると、その選択したファイルがファイルボックス６１に表示されるようになっている。
【００５６】
フォーマット選択ボタン６４は、ＣＤイメージデータのフォーマットを選択するためのダイアログボックスを表示させるためのボタンである。表示されたダイアログボックスの中からＩＳＯ９６６０又はＨＦＳの何れかの形式が選択できるようになっている。
【００５７】
又、書き込みボタン６６は、ベンダーが操作画面５１で設定した設定情報をＵＳＢストレージデバイス１７に書き込む処理を開始させるためのボタンである。キャンセルボタン６７は、ベンダーが操作画面５１で設定した設定情報をＵＳＢストレージデバイス１７に書き込むことをせずに操作画面５１を閉じるためのボタンである。
【００５８】
次に、ＵＳＢストレージデバイス１７のコントローラ２１で実行される初期化処理について図６のフローチャートを用いて説明する。
実行が開始されるとまず、ホスト１１から送られる設定情報を受信する（Ｓ３１０）。この設定情報は、上述した操作画面５１で設定された設定情報である。そして、次に、受信した設定情報に基づいてメモリ情報記憶部２１ｃのデータを更新する（Ｓ３１５）。
【００５９】
続いて、受信した設定情報に基づいてフラッシュメモリ２５の論理ユニット番号「１」の領域にデータを書き込み（Ｓ３２０）、初期化処理は終了する。
本来は、論理ユニット番号「１」の領域にはデータを書き込むことはできないが、初期化処理の際のみ、書き込むことができるように構成されている。なお、書き込むデータは、上述したテキストボックス６１で設定したファイルである（図４参照）。
【００６０】
以上のような初期化処理によって、ベンダーの要求に合わせて、領域の容量の変更や、シリアル番号の設定や、固有ＩＤの設定や、ＣＤ−ＲＯＭ領域に予めファイルを記憶させておくことができる。また、アプリケーションソフトウェアはフラッシュメモリ２５のＣＤ−ＲＯＭ領域に格納されるため、エンドユーザーによって誤って消去されてしまうおそれがない。また、実施例で述べたような固有ＩＤを記憶して、その固有ＩＤを認証キーとして用いるようにすれば、特定のユーザーのみが当該デバイスを使用できるようにしたり、特定のユーザーのみがＣＤ−ＲＯＭ領域に格納されたアプリケーションソフトウェア利用できるようにしたりすることができる。
尚、前記実施例では、具体的なコマンド名で記載してあるが、これらのコマンドは、同じ作用をするコマンドを含むものである。
【図面の簡単な説明】
【００６１】
【図１】実施例のＵＳＢストレージデバイスの構成を示すブロック図である。
【図２】メモリ情報記憶部に記憶されているデータ例である。
【図３】起動処理を説明するためのフローチャートである。
【図４】初期化ソフトウェアの操作画面を説明するための画面例である。
【図５】初期化処理を説明するためのフローチャートである。
【符号の説明】
【００６２】
１１…ホスト、１２…オペレーティングシステム、１３…ディスクドライブドライバ、１４…ＵＳＢマスストレージクラスドライバ、１５…ＵＳＢホストコントローラ、１６…ＵＳＢバス、１７…ＵＳＢストレージデバイス、１９…ＵＳＢインターフェース、１９ａ…パケット送受信部、１９ｂ…シリアルパラレル変換部、１９ｃ…パケット生成分解部、１９ｄ…ＵＳＢバスパワー制御部、２１…コントローラ、２１ａ…メモリ制御部、２１ｂ…ＵＳＢインターフェース制御部、２１ｃ…メモリ情報記憶部、２１ｄ…読み出しコマンド実行部、２５…フラッシュメモリ
【図１】
2005182377.tif 000003
【図２】
2005182377.tif 000004
【図３】
2005182377.tif 000005
【図４】
2005182377.tif 000006
【図５】
2005182377.tif 000007