Compartilhar via


Bus Enumerator

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

O enumerador barramento, BusEnum.dll, exporta o Init e Deinit funções. Ele localiza novos dispositivos lendo as entradas a partir de Registro. O Device Manager pode chamar o enumerador barramento novamente enquanto uma chamada anterior ainda está ativo. Porque o enumerador barramento oferece suporte a hierárquico uso, ele pode carregar próprio sobre uma chave Registro diferentes. Quando o enumerador barramento é descarregado, ele descarrega nada que carregá-lo diretamente.

O enumerador barramento interno carrega drivers no tempo inicializar e eventualmente carrega drivers PCI. Ela expõe uma interface barramento para suporte driver descarregar e recarregar. O enumerador barramento fornece nomes barramento para os drivers que ele carrega. Porque o enumerador barramento não suporte barramento gerenciamento de energia, interno dispositivos requerem suporte gerenciamento de energia da OAL.

O nome barramento de base é um parâmetro enumerador barramento, que, se ausente, suprime nomeação barramento. Isso ocorre porque o enumerador barramento também carrega serviços.

O Device Manager carrega o enumerador barramento, verificando HKEY_LOCAL_MACHINE\Drivers\RootKey Para determinar onde para iniciar o processo carregando driver. O valor usar como padrão de RootKey é Drivers. O Device Manager carrega o driver indicado por essa chave, que é geralmente BusEnum.dll.

O enumerador barramento examina sua chave raiz, que é a chave do Registro passados para ele, procurando subchaves que descrevem os drivers para carregar. A seguinte lista mostra as subchaves essas chaves contêm:

  • Dispositivos internos ou nativos
  • Dispositivos ISA
  • O barramento PCI
  • Dispositivos virtuais, como Driver Interface Specification (NDIS) a de rede
  • Protocolo opcional elementos, tais como protocolo de gerenciamento de rede simples (SNMP) ou Point-to-Point Protocol (PPP)
  • Outros componentes sistema operacional non-enumerable (OS).

BusEnum.dll examina o primeiro nível das chaves apenas abaixo a chave passado para ele, de acordo com o Ordem subchave Registro. Ele chama ActivateDeviceEx Em cada subchave ele encontra. O enumerador barramento geralmente executa com o sinalizador DEVFLAGS_UNLOAD.

Cada subchave pode ter qualquer valores geralmente interpretados pelo ActivateDeviceEx Ou, o driver basicamente carregado. Além disso, cada subchave pode ter um Ordem valor entre 0 e 255. A menor Ordem valor obtém carregada pela primeira vez. Se nenhum Ordem valor, o obtém driver carregado depois drivers com definido Ordem Os valores.

Pontos de entrada dos drivers que expõem a interface transmitir são construídos a partir de Prefixo valor. Se a entrada Registro para o driver não contém um Prefixo valor, pontos de entrada não é necessário um prefixo. De exemplo, um serial driver com Prefixo Igual a COM tem um ponto de entrada de COM_Init. Se nenhum Prefixo valor e, em seguida, o ponto de entrada é Init. O driver enumerador barramento faz todos os seu trabalho no seu Init ponto de entrada e a Device Manager podem descarregá-lo quando Init Retorna.

Como o enumerador barramento inicializa o sistema, ela percorre as subchaves da HKEY_LOCAL_MACHINE\Drivers\BuiltIn ou onde quer que o HKEY_LOCAL_MACHINE\Drivers\RootKey valor pontos. O enumerador barramento percorre as subchaves um por um, inicializando um driver para cada subchave. Ele carrega o DLL indicado pelo DLL valor e em seguida, cria uma subchave para o driver em HKEY_LOCAL_MACHINE\Drivers\Active. Em seguida, ele chama o Init função ou do o driver ponto de entrada e passar em um seqüência de caracteres que contém essa subchave.

Usando o seqüência de caracteres-in Return, obtém o XXX_Init Rotina deve chamar RegOpenKeyEx Para um identificador para essa chave e, em seguida, chamar get RegQueryValueEx Para aspecto até a chave valor, que contém o correspondente seqüência de caracteres para a chave Registro que Device Manager originalmente encontrado em HKEY_LOCAL_MACHINE\Drivers\BuiltIn.

É comum para os autores driver de dispositivo para incluir outros valores em suas chaves Registro. Esses valores podem indicar o endereço porta E/S, a configuração de IRQ, as configurações acesso direto à memória (DMA) ou quaisquer informações adicionais necessárias.

O seguinte exemplo chave do Registro mostra o genérico formato chave do Registro para um dispositivo chamado exemplo. Você pode localizar outros exemplos nos arquivos Platform.reg ou Registro arquivos em pastas que contêm drivers dispositivo.

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Sample]
    "Dll" = "sampledev.dll"
    "Prefix" = "SMP"
    "Index" = dword:1
    "Order" = dword:0
    "FriendlyName" = "Sample Controller"
    "Ioctl" = dword:0

Usando as configurações Registro acima, o Device Manager cria uma nova chave. Em seguida, ele chama SMP_Init e passar em um ponteiro para a nova chave. SMP_Init Em seguida, chama RegOpenKeyEx Para get um identificador para a chave. Em seguida, ele chama RegQueryValueEx Para get a seqüência de caracteres "\Drivers\BuiltIn\Sample". XXX_Init Em seguida, poderá usar este seqüência de caracteres para aberto essa chave e acessar outras informações colocadas lá. Para não transmitir drivers, se não houver nenhum Prefixo valor, Init é a ponto de entrada assumido.

See Also

Reference

ActivateDeviceEx

Other Resources

PCI Bus Driver