Passing Data between an ISR and an IST
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
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.
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.
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