Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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) |