Compartilhar via


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 para uma seção de dados ou código paginável. O chamador obteve esse identificador de uma chamada anterior para o MmLockPagableCodeSection ou rotina de MmLockPagableDataSection.

Valor de retorno

Nenhum

Observações

Um driver inicialmente chama MmLockPagableCodeSection ou MmLockPagableDataSection para obter um identificador para um código ou seção de dados 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 por um e MmUnlockPagableImageSection diminui a contagem de referência por um.

Se a contagem de referência no identificador não for 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 a seção repetidamente. Ou seja, o driver pode reutilizar um identificador cuja contagem de referência é zero. MmLockPagableSectionByHandle verifica se a seção referenciada está 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, MmLockPagableSectionByHandle páginas na seção, a bloqueará no espaço do sistema e definirá 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 não for 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. 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
de cliente com suporte mínimo Disponível a partir do Windows 2000.
da Plataforma de Destino Universal
cabeçalho ntddk.h (inclua Ntddk.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL <= APC_LEVEL
regras de conformidade de DDI HwStorPortProhibitedDIs(storport), IrqlMmApcLte(wdm)

Consulte também

MmLockPagableCodeSection

MmLockPagableDataSection

MmPageEntireDriver

MmProbeAndLockPages

MmResetDriverPaging

MmUnlockPagableImageSection