Pergunta

Estou tentando extrair uma lista de todos os dispositivos de ioclassa de AppleUSBCDCACMDATA no meu Mac usando o seguinte snippet de código (apenas algumas modificações em pequena escala no código de amostra da Apple). O dispositivo é um modem USB que cria alguns nós do dispositivo 7 /dev/cu.usbmodemx.

    error = IOMasterPort(MACH_PORT_NULL, &masterPort);  

if(error){
    return ;
}
else{
    matchingDict = IOServiceMatching("AppleUSBCDCACMData");
    IOServiceGetMatchingServices(masterPort,matchingDict,&modem_iterator);
    while(usbDevice = IOIteratorNext(modem_iterator))
    {

            }

Minha observação é que o iterador devolvido pelo ioservicegetMatchingServices está vazio (ou seja, nada para iterar). Mas se eu passar "AppleUSBCDCACMControl" como o parâmetro para o iServicematching, recebo um iterador de uma lista de 7 elementos - que está em conformidade com a visualização do ioregistryExplorer. Veja uma captura de tela do ioregistryExplorer aqui, http://tumblr.deepak.dk/post/1666218968/iorregistryExplorerParece que não é possível consultar o ioregistry com seqüências de nome de ioclass arbitrárias? Desde que enfrentei os mesmos problemas com alguns ioclantes proprietários não padrão. Isso pode ser reproduzido usando qualquer modem USB (3G/HSDPA) que carregue o driver AppleUSBCDC.

O que estou fazendo errado?

Foi útil?

Solução

IOService Os objetos só podem ser correspondidos uma vez registerService() foi chamado para eles. AppleUSBCDCACMControl faz isso, mas AppleUSBCDCACMData não.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top