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)

Confira também

MmLockPagableCodeSection

MmLockPagableDataSection

MmPageEntireDriver

MmProbeAndLockPages

MmResetDriverPaging

MmUnlockPagableImageSection