0

かなり単純な USB デバイス用の単純な読み取り/書き込みアプリケーションを作成しようとしていますが、それほど単純ではないことがわかりました。

私は WinUSB および SetupAPI DLL を使用しており、必要なものに対して実際に機能するものを見つけることができないため、ゼロから作業しています。PyWinUSB や PyUSB などは近かったのですが、実際にそれらを使ってデバイスに書き込もうとすると失敗しました。

とにかく、今私はまだほぼゼロにいます。指示に従って、SetupAPI.dll から SetupDiGetClassDevsExW 関数を呼び出しています。0 を返す kernel32.lasterror 関数の呼び出しによって示されるように、関数は正しく実行されますが、呼び出しから返されるのは整数値だけです。あれは正しいですか?これは正しい機能ですか?(類似したものは 4 つあり、単純な SetupDiGetClassDevs 関数だけではありません。4 つの関数とは、SetupGetClassDevsExW、SetupGetCLassDevsExA、SetupGetClassDevsA、および SetupGetClassDevsW です。)これを使用するクラスを作成する必要がありますか? 次の関数である SetupDiEnumDeviceInterfaces を呼び出しても、コード 259 で失敗するだけでした。これは、簡単な Google 検索によると ERROR_NO_MORE_ITEMS を意味します。

誰かが情報を保持するための構造を作成するための正しいクラス構造メソッドを示してくれたという点で、私はある程度の進歩を遂げましたが、Python は言うまでもなく、USB デバイスのプログラミングを実際に行ったことがないので、私はまだちょっと立ち往生しています。回答に必要な情報はこれ以上提供しますが、現時点では、この Q/A を不必要な情報で行き詰らせたくありません。

ありがとう。

4

1 に答える 1

0

と がありSetupDiGetClassDevsAますSetupDiGetClassDevsW。このExバージョンでは、リモート マシンに接続できます。Aバージョンは 2 番目のパラメーターにバイト文字列を使用しますが、バージョンWは Unicode 文字列を使用します。戻り値は、デバイス情報セットへのハンドルです。

SetupDiEnumDeviceInfoデバイス情報セットは、 または のいずれかで反復する必要がありSetupDiEnumDeviceInterfacesます。2 番目の関数は、ClassGuid パラメーターのインターフェイス GUID をDIGCF_DEVICEINTERFACEフラグとして渡し、渡す場合にのみ機能します。SetupDiGetClassDevsそれ以外の場合は、デバイス クラスの GUID を渡すだけで、SetupDiEnumDeviceInfo何も返されません。

于 2012-10-12T15:49:51.367 に答える