これは1つの記事にまとめられたいくつかの質問です。CでUSBを使って作業する(Windows)
USBマスストレージデバイスが接続されているかどうかをするための最良の方法だろう何1)。
2)USBドライブ
3)することができますにデータを書き込むための最良の方法は何ですか(mallocのように使うことができますか?/と値を2つ直接書くことはできますか?)
これは1つの記事にまとめられたいくつかの質問です。CでUSBを使って作業する(Windows)
USBマスストレージデバイスが接続されているかどうかをするための最良の方法だろう何1)。
2)USBドライブ
3)することができますにデータを書き込むための最良の方法は何ですか(mallocのように使うことができますか?/と値を2つ直接書くことはできますか?)
USBドライブはドライブ文字として表示されます。 GetDriveType
APIを使用してUSBデバイスである可能性があることを検出できます。ただし、これはリムーバブルであることを伝えるだけで、実際はUSBドライブではありません。これを知るには、GetDriveType
MSDNの参考資料を参照してください)SetupDiGetDeviceRegistryProperty関数を調べる必要があります。また、すべてのUSBドライブを見つけるために、ドライブ文字でないディスクをマウントしたり、ディスクマウントを表していないドライブ文字をマウントしたりすることもできます。他のSetupDi ...機能のいくつかを見てください。
ドライブレターであるため、通常、USBドライブに読み書きするには、fopen
やWindows CreateFile
などのファイルシステム機能を使用します。メモリと同じように直接書き込む場合は、デバイス全体にまたがるファイルを作成し、そのファイルをメモリマップすることができます。ただし、I/Oエラー(ユーザーがドライブのプラグを抜くなど)があると、プログラムでSEH例外が発生するため、特殊なアプリケーションを除いてはお勧めできません。最高の回避。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
でピークを確認したい場合があります。既知のUSBストレージデバイスを示します。エントリにはすべてParentIdPrefixが含まれています。ドライブが現在存在する場合、その値はHKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
のデータ部分にあります。