IOCTL_HAL_REQUEST_SYSINTR
9/8/2008
Este IOCTL solicita um mapeamento IRQ-to-SYSINTR. Ele deve ser chamado pelo barramento drivers que preencher o Registro com SYSINTRs para o driver de dispositivo que a carregar drivers barramento.
A função OEMIoControl chama esse IOCTL.
Parâmetros
- dwIoControlCode
[no] Defina como IOCTL_HAL_REQUEST_SYSINTR.
- lpInBuf
[no] IRQ para converter em um SYSINTR.
- nInBufSize
[no] Tamanho de lpInBuf.
- lpOutBuf
[out] SYSINTR convertido a partir de um IRQ.
- nOutBufSize
[out] Tamanho de lpOutBuf.
- lpBytesReturned
[no] Se não for NULL, definida como tamanho de DWORD.
Valores Return
TRUE indica sucesso. FALSE indica falha.
Remarks
Um driver barramento lê seu valor SYSINTR a partir de Registro. Ele também lê o valor de IRQ, se necessário. Se este for um interno dispositivo, configurar o mapeamento na função OEMInit e local de SYSINTR no associado entrada Registro para o dispositivo. Drivers de barramento, such as driver de barramento PCI, usam IOCTL_HAL_REQUEST_SYSINTR para alocar SYSINTRs e subseqüentemente preencher o Registro para ele está carregando um driver para o dispositivo.
Há duas maneiras para mapa (n.); mapear (v.) múltiplo interrupções para um único sistema compartilhados de IRQ:
- Usar IOCTL_HAL_REQUEST_SYSINTR para transmitir a OAL o IRQ. Retorna a OAL um Sysintr valor que você pode usar.
Se seu driver descarrega, use IOCTL_HAL_RELEASE_SYSINTR. - Disco rígido-codificar o Sysintr Os valores em seu OAL.
Vários Sysintr Valores podem corresponder a um IRQ. Valores de IRQ e Sysintr valores apresentam um relação um-para-um, que define a usar como padrão Sysintr valor para a IRQ. De exemplo, consulte SETUP_INTERRUPT_MAP e OEMRequestSysIntr.
Você pode adicionar o disco rígido-codificado Sysintr Valores, começando SYSINTR_FIRMWARE + 16, para OEMInit, imediatamente após o último SETUP_INTERRUPT_MAP. Não é possível usar SETUP_INTERRUPT_MAP diretamente porque ele inclui instâncias de DEBUGCHK que asseguram que o mesmo IRQ não está mapeado duas vezes. Embora este método não seja tão flexível quanto aquele acima, depois de configurar a OAL, você pode atualização o Registro para informar o serial drivers que Sysintr Para usar.
Para informações sobre mapeamento múltiplo IRQs para um SYSINTR, consulte OALIoCtlHalRequestSysIntr.
O seguinte exemplo de código informa a convenção chamado usada pelo comum implementação de IOCTL_HAL_REQUEST_SYSINTR.
UINT32 aIrqs[3];
aIrqs[0] = -1;
// Using -1 indicates we are not using the legacy calling convention.
aIrqs[1] = OAL_INTR_TRANSLATE;
// Flags – in this case we want the existing sysintr if it
// has already been allocated, and a new sysintr otherwise.
aIrqs[2] = irq;
OEMIoControl(IOCTL_HAL_REQUEST_SYSINTR, aIrqs, sizeof(aIrqs), &sysIntr, sizeof(sysIntr), NULL);
Requisitos
Header | pkfuncs.h |
Windows Embedded CE | Windows CE .NET 4.0 and later |
See Also
Reference
IOCTL_HAL_TRANSLATE_IRQ
IOCTL_HAL_RELEASE_SYSINTR
OEMInit
OEMIoControl
OEMRequestSysIntr
Other Resources
Controlling Debug Message Output With Macros
NdisMRegisterInterrupt
Installable ISRs and the Kernel