次のコード スニペットを使用して、Mac 内のすべての AppleUSBCDCACMData IOClass デバイスのリストを抽出しようとしています (Apple サンプル コードの小規模な変更のみ)。このデバイスは、7 つの /dev/cu.usbmodemx デバイス ノードを作成する USB モデムです。
error = IOMasterPort(MACH_PORT_NULL, &masterPort);
if(error){
return ;
}
else{
matchingDict = IOServiceMatching("AppleUSBCDCACMData");
IOServiceGetMatchingServices(masterPort,matchingDict,&modem_iterator);
while(usbDevice = IOIteratorNext(modem_iterator))
{
}
私の観察では、IOServiceGetMatchingServices によって返された反復子は空です (つまり、反復するものは何もありません)。しかし、「AppleUSBCDCACMControl」をパラメーターとして IOServiceMatching に渡すと、7 つの要素のリストの反復子が取得されます。これは IORegistryExplorer ビューに準拠しています。 ここでIORegistryExplorer のスクリーンショットを参照してください。http://tumblr.deepak.dk/post/1666218968/ioregistryexplorer 私はいくつかの非標準の独自の IOClasses でも同じ問題に直面したためです。これは、AppleUSBCDC ドライバーをロードする任意の USB モデム (3g/HSDPA) を使用して再現できます。
私は何を間違っていますか?