Loading Device Drivers
9/8/2008
Quando OEMInit Executa, você deve iniciar depuração Ethernet, serial depuração, ou qualquer outra depuração métodos. As seguinte informações recurso armazenar locais para esses depuração métodos:
- Inicialize argumentos no carregador de inicializar. Argumentos de inicialização fornecem informações recurso para configurar o hardware de uma maneira específica.
De exemplo, solicitação de interrupção (IRQ) para a depuração Ethernet adaptador pode ser passado como um argumento inicializar. - Disco rígido-codificado informações recurso na OAL.
- Recursos podem ser descobertos pela OAL.
Além disso, o Registro pode conter cópias das informações neste recurso. Armazenar cópias das informações recurso no Registro, se a depuração recursos são fixo e conhecidos em avançado. Isso permite que o Device Manager para carregar, executar e, em seguida, iniciar o I/O Resource Manager, que lê esses disponível recursos do Registro.
A OAL talvez precise configurar e enumerar um barramento, such as o barramento PCI, para operar um dispositivo usado para depuração serviços. De exemplo, um adaptador Ethernet no barramento de PCI, que é para depuração Ethernet serviços necessidades seus recursos e pontes intermediários ser configurado para ser funcional. Você pode ignorar outros dispositivos porque o driver barramento PCI executa a configuração e enumeração.
Informações de recurso configura a depuração dispositivos e inicializa suas associado serviços. A OAL é responsável por colocar informações esse recurso em uma chave Registro e torná-lo acessível para o driver. A OAL usa o Funções do auxiliar de registro Para preencher fora informações do dispositivo de em um PCI_REG_INFO estrutura, definida no PCIReg.h. Em seguida, chama o OS KernelIoControl Com IOCTL_HAL_INITREGISTRY Para habilitar a função auxiliar PCIReg ser chamado para preencher o Registro. Este método é preferido, se a depuração recursos são selecionável no tempo inicializar, se elas são descobertas através de enumeração barramento ou ambos.
O Device Manager carrega o enumerador de barramento HKEY_LOCAL_MACHINE\RootKey Onde RootKey é um valor definido na Chave HKEY_LOCAL_MACHINE\Drivers. Se a pasta RootKey valor não está definida, ela padrão Drivers. Atualmente, conjuntos Common.reg RootKey Igual a Drivers\BuiltIn. Isso significa que o Device Manager procura o A DLL valor para carregar o enumerador barramento em HKEY_LOCAL_MACHINE\Drivers\BuiltIn. O enumerador barramento, BusEnum.dll, inicializa o processo de verificação de Registro para barramentos adicionais e os dispositivos a ser carregado de subchaves das RootKey.
Algumas da RootKey Subchaves descrevem interno ou possivelmente fixo barramentos ISA. O DLL carregado pode ser BusEnum.dll, ou qualquer outro driver barramento que você escolher.
Uma da RootKey Subchaves talvez PCI. Normalmente, o DLL listado na PCI chave é o driver barramento PCI, que é carregado pelo BusEnum.dll. Entradas do Registro para o driver barramento PCI incluem recursos disponível para o barramento PCI. Normalmente, o HKEY_LOCAL_MACHINE\RootKey\PCI\Order valor será definido para que o driver barramento PCI é carregado por último, que permite que todos os recursos fixos a ser alocada para os recursos flexíveis dos dispositivos PCI são configurados. Driver Registro as entradas são listadas sob o PCI chave, que representa os dispositivos que residir no barramento PCI.
A seguinte tabela mostra os valores que drivers barramento PCI, com associado físico dispositivos, usam ou geram.
Subchave | Tipo | Descrição |
---|---|---|
MemBase |
DWORD Ou MULTI_SZ |
Endereços base de E/S Memory-mapped. |
MemLen |
DWORD Ou MULTI_SZ |
Comprimento de intervalos de memória mapeada correspondente para Membase. |
IoBase |
DWORD Ou MULTI_SZ |
Endereço base de E/S Port-mapped. |
IoLen |
DWORD Ou MULTI_SZ |
Comprimento de intervalos de porta-mapeado correspondente para IoBase. |
InterfaceType |
DWORD Ou MULTI_SZ |
Tipo interface de hardware. Para obter mais informações, consulte INTERFACE_TYPE. |
IRQ |
DWORD Ou MULTI_SZ |
Opcional. Números de IRQ lógicos. |
SysIntr |
DWORD Ou MULTI_SZ |
Sistema interrupção números correspondente para os IRQs. |
O SysIntr valor é um mapeamento da IRQ Conforme especificado pela OAL. Alguns drivers barramento, such as driver de barramento PCI, geram ambos o IRQ e SysIntr Valores e gravar o Registro-los. Se BusEnum.dll enumera a chave Registro, exigido para definir o SysIntr valor no apropriado arquivo Registro.
Alguns drivers barramento, such as driver de barramento PCI, podem exigir valores adicionais. De exemplo, o driver barramento PCI precisa distinguir entre instâncias do mesmo dispositivo.
A seguinte tabela mostra esses valores de identificação adicional.
Subchave | Tipo | Descrição |
---|---|---|
BusNumber |
DWORD |
Número barramento PCI do dispositivo. |
DeviceNumber |
DWORD |
Número do dispositivo no barramento. |
FunctionNumber |
DWORD |
Identifica um das funções possíveis oito implementadas no dispositivo. |
Após enumerando o Registro, o enumerador barramento carrega drivers para interno todos os dispositivos e todos os drivers barramento ele reconhece no sistema. Barramento drivers são subseqüentemente responsáveis por carregando drivers para os dispositivos em seus barramentos. De exemplo, o driver controlador PCMCIA hospedar carrega drivers para todos os dispositivos cliente cartão PC.
Registro Device-specific chaves residir no apropriado chave Registro driver barramento, não em Device Manager. Drivers de barramento devem carregar seus drivers cliente e você deve atualização entradas Registro driver de barramento de acordo.