Compartilhar via


Passing Data between an ISR and an IST

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Pode haver horas quando você desejar para transmitir informações entre uma rotina serviço interrupção (ISR) e um segmento serviço interrupção (ist). De exemplo, porque chamado um ist cada tempo chega uma solicitação interrupção (IRQ) é um processo demorado, você pode desejar para design um ISR para reserva dados IRQ antes chamado de ist.

O ISR retornaria SYSINTR_NOP até que a reserva foi completa e, em seguida, retornaria o apropriado identificador SYSINTR quando o ISR está pronto para o ist para executar. Depois que o ist é executado, ele pode escolher o backup de dados que o ISR foi buferização.

Para transmitir dados entre um ISR e um ist

  1. Físico reservar memória para o ISR no seu arquivo CONFIG.bib.

    Config.bib contém vários exemplos de reservar físico memória para o serial e depuração drivers.

  2. Use a memória reservada no seu chamar ISR.

    Como o ISR é executado em modo kernel, o ISR pode acessar a memória reservada para dados reserva.

  3. Chame a função MmMapIoSpace na sua ist para mapa (n.); mapear (v.) o físico memória para um endereço virtual.

    MMMapIoSpace Chama o VirtualAlloc e VirtualCopy funções para mapa (n.); mapear (v.) o físico memória para um virtual-endereço memória que o ist pode acessar.

    Você também pode chamar O VirtualAlloc e VirtualCopy diretamente. De exemplo, você pode alocar memória outside of espaço de memória virtual de um processo por chamado O VirtualAlloc Com os seus parâmetros definida para o seguinte valores:

    • dwSize ≫ = 2 MB
    • flAllocationType Definir como MEM_RESERVE
    • flProtect Definir como PAGE_NOACCESS

Em Windows Embedded CE, um ISR instalável pode facilmente compartilhar dados com um ist como a memória podem ser alocados dinamicamente em vez de sendo reservado no arquivo Config.bib.

See Also

Tasks

How to Develop an OEM Adaptation Layer

Concepts

Implementing an ISR