Condividi tramite


Funzione MmLockPagableSectionByHandle (ntddk.h)

La routine MmLockPagableSectionByHandle blocca un codice o una sezione di dati impaginabile nella memoria di sistema incrementando il conteggio dei riferimenti sull'handle alla sezione .

Sintassi

void MmLockPagableSectionByHandle(
  [in] PVOID ImageSectionHandle
);

Parametri

[in] ImageSectionHandle

Handle per una sezione di dati o codice pageable. Il chiamante ha ottenuto questo handle da una chiamata precedente alla routine MmLockPagableCodeSection o MmLockPagableDataSe ction.

Valore restituito

Nessuno

Osservazioni

Un driver chiama inizialmente MmLockPagableCodeSection o MmLockPagableDataSection per ottenere un handle per un codice o una sezione dati impaginabile. Successivamente, il driver può chiamare MmLockPagableSectionByHandle e MmUnlockPagableImageSection per incrementare e decrementare il conteggio dei riferimenti nell'handle.

Il MmLockPagableCodeSection o MmLockPagableDataSection chiama blocca la sezione impaginabile nella memoria di sistema, restituisce un handle alla sezione e inizializza il conteggio dei riferimenti sull'handle su uno. MmLockPagableSectionByHandle incrementa il conteggio dei riferimenti di uno e MmUnlockPagableImageSection decrementa il conteggio dei riferimenti di uno.

Se il conteggio dei riferimenti nell'handle è diverso da zero, la sezione di paging è bloccata. Se il conteggio dei riferimenti è zero, la sezione viene sbloccata.

L'handle per la sezione visualizzabile rimane valido finché il driver rimane caricato in memoria. Il driver può usare lo stesso handle per bloccare e sbloccare ripetutamente la sezione. Ovvero, il driver può riutilizzare un handle il cui conteggio dei riferimenti è zero. MmLockPagableSectionByHandle verifica se la sezione a cui si fa riferimento si trova nello spazio indirizzi del chiamante e, in caso affermativo, incrementa semplicemente il conteggio dei riferimenti nella sezione. Se la sezione non è residente, MmLockPagableSectionByHandle pagine nella sezione, la blocca nello spazio di sistema e imposta il conteggio dei riferimenti su uno.

Per evitare perdite di memoria di sistema, il conteggio dei riferimenti sull'handle deve essere zero quando il driver viene scaricato dalla memoria. In caso contrario, la sezione impaginabile rimarrà bloccata nella memoria di sistema dopo lo scaricamento del driver.

Se il driver si prepara a scaricare e il conteggio dei riferimenti sull'handle è diverso da zero, il driver deve chiamare MmUnlockPagableImageSection per decrementare il conteggio su zero prima che si verifichi l'scaricamento.

Un driver non può chiamare MmLockPagableSectionByHandle per bloccare i buffer utente passati nei runtime di integrazione. Utilizzare MmProbeAndLockPages.

Per altre informazioni sul paging di codice e dati, vedere Rendere i driver impaginabili.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile a partire da Windows 2000.
piattaforma di destinazione Universale
intestazione ntddk.h (include Ntddk.h)
libreria NtosKrnl.lib
dll NtosKrnl.exe
IRQL <= APC_LEVEL
regole di conformità DDI HwStorPortProhibitedDDIs(storport), IrqlMmApcLte(wdm)

Vedere anche

MmLockPagableCodeSection

MmLockPagableDataSection

mmPageEntireDriver

MmProbeAndLockPages

MmResetDriverPaging

MmUnlockPagableImageSection