Compartilhar via


IOCTL_HAL_REQUEST_SYSINTR

Windows Mobile Not SupportedWindows Embedded CE Supported

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