CodeZine/IDE認識情報(Identify)の抽出
をテンプレートにして作成
[ ] [
トップ
|
一覧
|
単語検索
|
編集
] [
はてブに追加
]
開始行:
*ハードディスク情報の抽出 2:IDE認識情報(Identify)の抽...
前回、Setup API関数、WMIを使用することによりハードディス...
-http://linux-ata.org/devel.html
*完成図 [#d2f36b92]
*はじめに [#j992f5d1]
*対象読者 [#icc69f6a]
*必要な環境 [#t6f244e7]
*IDENTIFY DEVICE (Identify) コマンドについて [#t631dbd8]
Identifyコマンドは、ATA/SATAの仕様で定義されているハード...
Identifyコマンドは、ANSI(アメリカ規格協会)が ATA(AT Attac...
とはいったものの実際、規格化より前にハードディスクベンダ...
正式なATAの仕様書は、一般的にはANSIから購入することが出来...
-http://t13.org/~
T13 の本拠地。
*Identifyのデータ構造 [#c7eaafad]
データの全体長は512(256*2)バイト固定で、ワード型(リトル...
-[[HDD/term/IDENTIFY DEVICE]]
identifyの活用例を挙げます。
私の使用しているハードディスク「+++++++++++++」のidenfity...
=====================
以下作業中
=====================
例1:キャッシュバッファの容量
キャッシュバッファの容量は「21ブロック目」に記載されてい...
上記のデータでは「」とありますので、このハードディスクが...
例2:型名・バージョン・シリアル番号の抽出
型名は「27-46ブロック目」、ファームウェアバージョン「23-2...
ただし、ワード型(リトルエンディアン)で格納されている関...
する必要があります。
上記の例では型名「」、ファームウェアバージョン「」、シリ...
例3:ディスク容量
昔のハードディスクなら [CHS(Cylinder/Head/Sector)[http:...
この計算方法だと BIOS との互換性の関係上、137GB以上の容量...
である「48bit LBA拡張」より容量を導き出すのが一般的です。...
- Word 83の設定が有効であるか確認
Word 83のbit 15が「0」、bit 14が「1」であることを確認し...
返却していたからではないかと考えています。昔はよもやこ...
- Word 83のbit 10が「1」であることを確認
48bit LBA が有効であることが確認できます。
- Word 100-103の値から容量を求めます
上記の例では 48bit LBA は「」です。よって以下の容量と算出...
??? * 512(Byte) / 1,000,000,000(GB) = ???
一応、注を入れておきますが、ハードディスク業界では 1KB = ...
そうするとハードディスク容量が減ってしまうことを気にして...
あまり普及していません。
idenfityコマンドのデータ取得方法
================================
物理ハードディスクのハンドル取得方法
====================================
identifyを取得するには、物理ハードディスクを操作するハン...
一般的には以下の2通りの方法が有名です。
1. 論理ドライブ名から取得する方法
例えばC:ドライブのハンドルを取得する場合には「"\\.\C:"」...
hDrive = CreateFile(
"\\\\.\\C:",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL );
この手法を用いた場合、以下のケースで正しく物理ドライブが...
-論理ドライブが設定されていない場合
-複数のハードディスクで一つの論理ドライブを構成している場...
-前もって論理ドライブの属性を確認する必要がある
例えばネットワークドライブやフロッピードライブも一律同じ...
前もってドライブの属性を調べる必要があります。
2. 物理デバイス名から取得する方法
例えば物理デバイス0のハンドルを取得する場合には「\\.\Phy...
hDrive = CreateFile(
"\\\\.\\PhysicalDrive0",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL );
物理デバイスを全て取得するには、0から順番にCreateFileして...
「PhysicalDrive?」の外にもSCSIデバイスなら「SCSI?」、テー...
上記の方法は Windows NT 時代から受け継がれている伝統的な...
に対して同様の手法を用いるというのは、いささか''時代遅れ'...
3. Setup API関数から取得する方法
Setup API関数を用いてハードディスクのハンドルを取得する方...
というリスクを回避することが出来る」、「CreateFileする前...
「PnPへの対応がスムーズ(PhysicalDriveは固定ディスクのみ...
ただしこの手法は、多くの利点がありながらあまり有名ではな...
設定されていないヘッダ「ntddstor.h」を必要としているから...
今回必要なのはntddstor.hに設定されているGUID「GUID_DEVINT...
しました。
DDKのヘッダはハードウェアを操作するのに必要不可欠な情報が...
場合、[MinGW Project[http://www.mingw.org/]]で公開されて...
DDKにあるヘッダとほぼ同じ内容でしかも殆どがパブリックドメ...
取得手順としては以下の通り。
SetupDiGetClassDevs
SetupDiEnumDeviceInterfaces
GetDeviceInterfaceDetail
SetupDiGetDeviceRegistryProperty
大昔、40-100MB辺りの初期のATAにはこのコマンドが定義されて...
があり、この場合、ユーザーが直接ハードディスク情報をBIOS...
ハードディスクの設定が記載されいるペラを無くしてしまい、...
記憶があります。
*まとめ [#s797851e]
*参考資料 [#i3cffcfe]
**インテル [#gce544f1]
**AMD [#k64aac84]
**マイクロソフト [#j043effb]
**関連書籍 [#o87ba4b3]
-----
// [ [[edit>Edit:Windows Vista/News]] ]
//*仮置き場
//*お勧め
//**用語
//*News
//*関連情報
//**用語
//**Linux
//**Windows
//-----
//*[[フィードバック]]
//アナタからのフィードバックをお待ちしています。書き込む...
//#comment
終了行:
*ハードディスク情報の抽出 2:IDE認識情報(Identify)の抽...
前回、Setup API関数、WMIを使用することによりハードディス...
-http://linux-ata.org/devel.html
*完成図 [#d2f36b92]
*はじめに [#j992f5d1]
*対象読者 [#icc69f6a]
*必要な環境 [#t6f244e7]
*IDENTIFY DEVICE (Identify) コマンドについて [#t631dbd8]
Identifyコマンドは、ATA/SATAの仕様で定義されているハード...
Identifyコマンドは、ANSI(アメリカ規格協会)が ATA(AT Attac...
とはいったものの実際、規格化より前にハードディスクベンダ...
正式なATAの仕様書は、一般的にはANSIから購入することが出来...
-http://t13.org/~
T13 の本拠地。
*Identifyのデータ構造 [#c7eaafad]
データの全体長は512(256*2)バイト固定で、ワード型(リトル...
-[[HDD/term/IDENTIFY DEVICE]]
identifyの活用例を挙げます。
私の使用しているハードディスク「+++++++++++++」のidenfity...
=====================
以下作業中
=====================
例1:キャッシュバッファの容量
キャッシュバッファの容量は「21ブロック目」に記載されてい...
上記のデータでは「」とありますので、このハードディスクが...
例2:型名・バージョン・シリアル番号の抽出
型名は「27-46ブロック目」、ファームウェアバージョン「23-2...
ただし、ワード型(リトルエンディアン)で格納されている関...
する必要があります。
上記の例では型名「」、ファームウェアバージョン「」、シリ...
例3:ディスク容量
昔のハードディスクなら [CHS(Cylinder/Head/Sector)[http:...
この計算方法だと BIOS との互換性の関係上、137GB以上の容量...
である「48bit LBA拡張」より容量を導き出すのが一般的です。...
- Word 83の設定が有効であるか確認
Word 83のbit 15が「0」、bit 14が「1」であることを確認し...
返却していたからではないかと考えています。昔はよもやこ...
- Word 83のbit 10が「1」であることを確認
48bit LBA が有効であることが確認できます。
- Word 100-103の値から容量を求めます
上記の例では 48bit LBA は「」です。よって以下の容量と算出...
??? * 512(Byte) / 1,000,000,000(GB) = ???
一応、注を入れておきますが、ハードディスク業界では 1KB = ...
そうするとハードディスク容量が減ってしまうことを気にして...
あまり普及していません。
idenfityコマンドのデータ取得方法
================================
物理ハードディスクのハンドル取得方法
====================================
identifyを取得するには、物理ハードディスクを操作するハン...
一般的には以下の2通りの方法が有名です。
1. 論理ドライブ名から取得する方法
例えばC:ドライブのハンドルを取得する場合には「"\\.\C:"」...
hDrive = CreateFile(
"\\\\.\\C:",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL );
この手法を用いた場合、以下のケースで正しく物理ドライブが...
-論理ドライブが設定されていない場合
-複数のハードディスクで一つの論理ドライブを構成している場...
-前もって論理ドライブの属性を確認する必要がある
例えばネットワークドライブやフロッピードライブも一律同じ...
前もってドライブの属性を調べる必要があります。
2. 物理デバイス名から取得する方法
例えば物理デバイス0のハンドルを取得する場合には「\\.\Phy...
hDrive = CreateFile(
"\\\\.\\PhysicalDrive0",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL );
物理デバイスを全て取得するには、0から順番にCreateFileして...
「PhysicalDrive?」の外にもSCSIデバイスなら「SCSI?」、テー...
上記の方法は Windows NT 時代から受け継がれている伝統的な...
に対して同様の手法を用いるというのは、いささか''時代遅れ'...
3. Setup API関数から取得する方法
Setup API関数を用いてハードディスクのハンドルを取得する方...
というリスクを回避することが出来る」、「CreateFileする前...
「PnPへの対応がスムーズ(PhysicalDriveは固定ディスクのみ...
ただしこの手法は、多くの利点がありながらあまり有名ではな...
設定されていないヘッダ「ntddstor.h」を必要としているから...
今回必要なのはntddstor.hに設定されているGUID「GUID_DEVINT...
しました。
DDKのヘッダはハードウェアを操作するのに必要不可欠な情報が...
場合、[MinGW Project[http://www.mingw.org/]]で公開されて...
DDKにあるヘッダとほぼ同じ内容でしかも殆どがパブリックドメ...
取得手順としては以下の通り。
SetupDiGetClassDevs
SetupDiEnumDeviceInterfaces
GetDeviceInterfaceDetail
SetupDiGetDeviceRegistryProperty
大昔、40-100MB辺りの初期のATAにはこのコマンドが定義されて...
があり、この場合、ユーザーが直接ハードディスク情報をBIOS...
ハードディスクの設定が記載されいるペラを無くしてしまい、...
記憶があります。
*まとめ [#s797851e]
*参考資料 [#i3cffcfe]
**インテル [#gce544f1]
**AMD [#k64aac84]
**マイクロソフト [#j043effb]
**関連書籍 [#o87ba4b3]
-----
// [ [[edit>Edit:Windows Vista/News]] ]
//*仮置き場
//*お勧め
//**用語
//*News
//*関連情報
//**用語
//**Linux
//**Windows
//-----
//*[[フィードバック]]
//アナタからのフィードバックをお待ちしています。書き込む...
//#comment
ページ名:
[
編集
] [
新規
|
編集
|
差分
|
バックアップ
|
複製
|
名前変更
|
添付
] [
最終更新
|
リンク元
|
最終更新のRSS
]