Condividi tramite


Funzione MmLockPagableSectionByHandle (ntddk.h)

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

Sintassi

void MmLockPagableSectionByHandle(
  [in] PVOID ImageSectionHandle
);

Parametri

[in] ImageSectionHandle

Handle su un codice o una sezione dati pageable. Il chiamante ha ottenuto questo handle da una chiamata precedente alla routine MmLockPagableCodeSection o MmLockPagableDataSection.

Valore restituito

nessuno

Osservazioni

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

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

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

L'handle della sezione paginabile rimane valido fino a quando il driver rimane caricato in memoria. Il driver può usare lo stesso handle per bloccare ripetutamente e sbloccare la sezione. Vale a dire, il driver può riutilizzare un handle il cui numero di riferimenti è zero. MmLockPagableSectionByHandle controlla se la sezione a cui si fa riferimento si trova nello spazio degli indirizzi del chiamante e, se è, 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 il caricamento 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 decre il conteggio su zero prima che si verifichi il caricamento.

Un driver non può chiamare MmLockPagableSectionByHandle per bloccare i buffer utente passati in IRP. Usare invece MmProbeAndLockPages .

Per altre informazioni sul paging di codice e dati, vedere Creazione di driver paginabili.

Requisiti

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 HwStorPortProhibitedDDDIs(storport), IrqlMmApcLte(wdm)

Vedi anche

MmLockPagableCodeSection

MmLockPagableDataSection

MmPageEntireDriver

MmProbeAndLockPages

MmResetDriverPaging

MmUnlockPagableImageSection