I/O Resource Manager
9/8/2008
Quando o sistema é inicializado, o enumerador barramento enumera o Registro e carrega todos os interno dispositivos baseiam este informações Registro. Você pode configurar este informações Registro. O I/O Resource Manager, em seguida, rastreia o atual estado dos recursos disponível no sistema e gerencia todas as outras solicitações recurso E/S e alocações por drivers barramento. Conseqüentemente, todos os drivers barramento devem recursos solicitação E/S o I/O Resource Manager quando eles carregar um driver cliente para dispositivos instaláveis ou outros tipos de dispositivos.
O I/O Resource Manager é uma parte intrínseca da Device Manager. O I/O Resource Manager controla a disponível recursos sistema inicializados a partir de Registro antes de quaisquer dispositivos são carregados. Controlar esses recursos impede acidental colisões quando dois ou mais drivers dispositivo tentam usar os mesmos recursos.
A OAL e o Registro geralmente Pre-allocate recursos espaço IRQ e E/S que solicitação drivers barramento. No entanto, o I/O Resource Manager não é limitado ao gerenciamento espaços E/S e IRQ. O conjunto específico de recursos disponível pode incluir qualquer que você definir. Barramento drivers, such as driver de barramento PCI, solicitação de IRQ e E/S recursos espaço a partir de I/O Resource Manager como ele carrega drivers dispositivo para os dispositivos encontrados. O mesmo é verdadeiro para o driver barramento PC Card e E/S recursos exigido por drivers cliente PC Card. Os cartão PC barramento driver lançamentos recursos como remover os usuários PC Cards do sistema.
Cada plataforma hardware tem exclusivo IRQs e E/S espaço disponível. IRQs para interno e dispositivos fixos devem mapa (n.); mapear (v.) a interrupção identificadores (SYSINTRs) na OAL. As IRQs para interno e dispositivos fixos devem ser excluídos a partir de disponível recursos. IRQs usados com o barramento PCI normalmente são compartilhados.
IRQs e E/S recursos espaço são predefinidos. O HKEY_LOCAL_MACHINE\Drivers\Resources\IRQ e HKEY_LOCAL_MACHINE\Drivers\Resources\IO Chaves Registro fornecem a estado inicial da I/O Resource Manager.
A seguinte tabela mostra as subchaves para essas chaves Registro.
Subchave | Valor exemplo | Descrição |
---|---|---|
Identificador |
DWORD:1 |
Identificador de recurso. Este é um rotular para um conjunto de números e é definida em % _WINCEROOT%\Public\Common\DDK\Inc\Resmgr.h. |
Mínimo |
DWORD:1 |
Recurso menor numerado desse tipo. |
Espaço |
DWORD:16 |
Número de recursos no espaço de recurso. |
Intervalos |
"1, 3-5, 8" |
Lista Comma-Separated de Inicialmente disponível intervalos recursos. O usar como padrão é NONE. |
Compartilhado |
"4" |
Lista Comma-Separated de Inicialmente disponível compartilhados e recursos. O usar como padrão é NONE. |
Observação
DWORD As entradas são interpretadas como hexadecimal constantes, mas as seqüências de caracteres são analisados como listas de C-constantes estilo.
O seguinte exemplo chave do Registro mostra configurações Registro I/O Resource Manager.
; Resources available at time of Device.exe initialization.
; Key names are descriptive; resource IDs are definitive.
; System IDs are defined in ddk\inc\resmgr.h.
; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE\Drivers\Resources\IRQ]
"Identifier"=dword:1
"Minimum"=dword:1
"Space"=dword:F
"Ranges"="1,3-7,9-0xF"
"Shared"="1,3-7,9-0xF"
; I/O ranges are reserved for all drivers listed in this file that are not
; part of an expansion bus (PCI, PCMCIA, etc). If your hardware platform does not
; have one of these peripherals, you might edit this list accordingly. This
; sample configuration assumes that if you have any COM port, you also have all of
; the lower-numbered COM ports.
[HKEY_LOCAL_MACHINE\Drivers\Resources\IO]
"Identifier"=dword:2
"Minimum"=dword:0
"Space"=dword:10000
IF BSP_NOSERIAL
"Ranges"="0-0x5F,0x65-0x277,0x284-0x38F,0x392-0x3DF,0x3E2-0xFFFF"
ENDIF ; BSP_NOSERIAL
IF BSP_NOSERIAL !
"Ranges"="0-0x5F,0x65-0x277,0x284-0x2F7,0x300-0x38F,0x392-0x3DF,0x3E2-0xFFFF"
ENDIF ; BSP_NOSERIAL !
IF BSP_SERIAL2
"Ranges"="0-0x5F,0x65-0x277,0x284-0x2F7,0x300-0x38F,0x392-0x3DF,0x3E2-0x3E7,0x3F0-0xFFFF"
ENDIF ; BSP_SERIAL2
IF BSP_SERIAL3
"Ranges"="0-0x5F,0x65-0x277,0x284-0x2E7,0x2F0-0x2F7,0x300-0x38F,0x392-0x3DF,0x3E2-0x3E7,0x3F0-0xFFFF"
ENDIF ; BSP_SERIAL3
Se recursos compartilhados estão disponível, você pode solicitação-los a qualquer momento. Eles só podem ser definidos se o espaço recurso é menor ou igual a 32.
ResourceCreateList Cria um novo tipo de recurso, mas porque você pode estaticamente inicializar extensões, você pode facilmente adicionar essas extensões para a chave Registro. Criar uma nova subchave e especificar um identificador entre 0x80000 e 0xFFFFF, que são definidos como RESMGR_BASE_OEM e RESMGR_MAX_OEM, respectivamente. Você também pode localizar esses valores em % _WINCEROOT%\Public\Common\DDK\Inc\Resmgr.h.
Somente processos com privilégios podem invocar o E/S Gerenciador de Recursos funções. Isso impede que mal-intencionado aplicativos confuso o sistema liberando recursos pertencentes um driver de dispositivo. Como Device Manager é um processo privilegiado, drivers, particularmente barramento drivers, dispositivo podem chamar essas funções sem modificação.