2017-08-17 27 views
0

This answerは、WMIを使用してドライブ文字で接続されたUSB大容量記憶装置を検索する方法を説明していますが、添付されたMTPデバイスまたはPTPデバイスの名前(またはUNCパス)カメラやモバイルデバイスがドライブ文字なしでマウントされているため、ディレクトリをクロールしてイメージを検索できます。これどうやってするの?MTPおよびPTPデバイスの列挙方法

+0

関連:https://stackoverflow.com/q/29144536/327083 –

+0

関連(無回答):https://stackoverflow.com/q/29194124/327083 –

+0

https://stackoverflow.com/q/8234407/327083 –

答えて

0

まず、MTPデバイス名を使用すると、ディレクトリをクロールしたり、単純なPCファイルシステムで使用する方法でイメージを検索することはできません。 Windowsエクスプローラからの単純な表示であり、実際の状態ではありません。

私はどのようにexeactlyデルファイでそれを行うのかわかりませんが、Windows Portable Devices APIがあり、それはすべてCOMを使用するので、私はそれがデルファイでも動作する方法がありますbeleave。

もう1つの方法として、libmtpを使用しています。これはプレーンなCライブラリです。間違いなくcan callです。デルファイのdllメソッドでヘルパーコードを使用しています。

名前だけが必要な場合は、SetupDiGetDeviceRegistryProperty WinApi関数を使用して、接続されているWPDデバイス(Windowsポータブルデバイス、MTPおよびPTPプロトコルを使用している)の名前を見つけることができます。

あなたはGUID_DEVINTERFACE_WPDでSetupDiGetClassDevsを呼び出す必要がまず(それはPortableDevice.hで定義されていますが、グーグル
{6AC27878-A6FA-4155-BA85-F98F491D4F33}で、それは簡単に見つけることができます)

その後のデバイス上で反復SetupDiEnumDeviceInfoは、CM_Get_Device_ID関数呼び出しとWPDのcathegoryから、各デバイスのIDを取得し、SPDRP_FRIENDLYNAMEでSetupDiGetDeviceRegistryPropertyにそれを渡す使用して(またはSPDRP_DEVICEDESC、多分あなたは、異なるパラメータを試してみてください)

この機能を使用してのサンプルの多くは、たとえば、ありますこの1つ: SetupDiGetDeviceProperty usage example

関連する問題