Compartilhar via


Fornecer informações de contexto IoTimer

O ponteiro de contexto passado para IoInitializeTimer identifica uma área de contexto em que outras rotinas de driver e a própria rotina IoTimer podem manter o estado sobre operações cronometradas. O gerenciador de E/S passa o ponteiro Context sempre que chama a rotina IoTimer .

Como uma rotina IoTimer é executada em IRQL = DISPATCH_LEVEL, sua área de contexto deve estar na memória residente do espaço do sistema. A maioria dos drivers que têm rotinas IoTimer usa a extensão do dispositivo do objeto de dispositivo associado como uma área acessível ao contexto, mas o contexto pode estar em uma extensão do controlador se o driver usar um objeto do controlador ou em um pool não paginado alocado pelo driver.

Siga estas diretrizes para a área de contexto de uma rotina IoTimer:

  • Se a rotina IoTimer compartilhar sua área de contexto com o ISR do driver, ela deverá usar KeSynchronizeExecution para chamar uma rotina SynchCritSection que acessa a área de contexto de maneira segura para vários processadores. Para obter mais informações, consulte Usando seções críticas.

  • Se a rotina IoTimer não compartilhar sua área de contexto com um ISR, mas compartilhá-la com outra rotina de driver, o driver deverá proteger a área de contexto compartilhada com um bloqueio de rotação executivo inicializado, para acessar as informações de contexto de maneira segura para multiprocessador. Para obter mais informações, consulte Bloqueios de rotação.