Função MmLockPagableSectionByHandle (ntddk.h)
A rotina MmLockPagableSectionByHandle bloqueia uma seção de dados ou código paginável na memória do sistema incrementando a contagem de referência no identificador para a seção.
Sintaxe
void MmLockPagableSectionByHandle(
[in] PVOID ImageSectionHandle
);
Parâmetros
[in] ImageSectionHandle
O identificador de uma seção de dados ou código paginável. O chamador obteve esse identificador de uma chamada anterior para a rotina MmLockPagableCodeSection ou MmLockPagableDataSection .
Retornar valor
Nenhum
Comentários
Inicialmente, um driver chama MmLockPagableCodeSection ou MmLockPagableDataSection para obter um identificador para uma seção de dados ou código paginável. Depois disso, o driver pode chamar MmLockPagableSectionByHandle e MmUnlockPagableImageSection para incrementar e diminuir a contagem de referência no identificador.
A chamada MmLockPagableCodeSection ou MmLockPagableDataSection bloqueia a seção paginável na memória do sistema, retorna um identificador para a seção e inicializa a contagem de referência no identificador para um. MmLockPagableSectionByHandle incrementa a contagem de referência em um, e MmUnlockPagableImageSection diminui a contagem de referência em um.
Se a contagem de referência no identificador for diferente de zero, a seção paginável será bloqueada. Se a contagem de referência for zero, a seção será desbloqueada.
O identificador para a seção paginável permanece válido desde que o driver permaneça carregado na memória. O driver pode usar o mesmo identificador para bloquear e desbloquear repetidamente a seção. Ou seja, o driver pode reutilizar um identificador cuja contagem de referência é zero. MmLockPagableSectionByHandle verifica se a seção referenciada é residente no espaço de endereço do chamador e, se estiver, simplesmente incrementa a contagem de referência na seção. Se a seção não for residente, as páginas MmLockPagableSectionByHandle na seção o bloquearão no espaço do sistema e definirão a contagem de referência como uma.
Para evitar o vazamento de memória do sistema, a contagem de referência no identificador deve ser zero quando o driver é descarregado da memória. Caso contrário, a seção paginável permanecerá bloqueada na memória do sistema após o descarregamento do driver.
Se o driver estiver se preparando para descarregar e a contagem de referência no identificador for diferente de zero, o driver deverá chamar MmUnlockPagableImageSection para diminuir a contagem para zero antes que o descarregamento ocorra.
Um driver não pode chamar MmLockPagableSectionByHandle para bloquear buffers de usuário passados em IRPs. Em vez disso , use MmProbeAndLockPages .
Para obter mais informações sobre o código e os dados de paginação, consulte Tornando os drivers pagináveis.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 2000. |
Plataforma de Destino | Universal |
Cabeçalho | ntddk.h (inclua Ntddk.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
Regras de conformidade da DDI | HwStorPortProhibitedDDIs(storport), IrqlMmApcLte(wdm) |