Condividi tramite


Metodo IPortWaveRTStream::AllocateContiguousPagesForMdl (portcls.h)

Il AllocateContiguousPagesForMdl metodo alloca un elenco di pagine di memoria fisica contigue, non di paging e restituisce un puntatore a un elenco di descrittori di memoria (MDL) che li descrive.

Sintassi

PMDL AllocateContiguousPagesForMdl(
  [in] PHYSICAL_ADDRESS LowAddress,
  [in] PHYSICAL_ADDRESS HighAddress,
  [in] SIZE_T           TotalBytes
);

Parametri

[in] LowAddress

Specifica l'estremità inferiore dell'intervallo di indirizzi da cui è possibile allocare lo spazio di archiviazione per il file MDL.

[in] HighAddress

Specifica l'estremità superiore dell'intervallo di indirizzi da cui è possibile allocare lo spazio di archiviazione per il file MDL.

[in] TotalBytes

Specifica il numero totale di byte da allocare per MDL. Questo metodo alloca sempre un numero integrale di pagine di memoria.

Valore restituito

AllocateContiguousPagesForMdl restituisce un puntatore a un MDL (PMDL) che descrive un elenco di pagine di memoria fisica. Se il metodo non è in grado di allocare il buffer richiesto, restituisce NULL.

Commenti

Il driver chiama questo metodo per allocare un blocco di pagine di memoria fisicamente contigue. Tutte le pagine di memoria fisica nel file MDL rientrano nell'intervallo di indirizzi specificato dai parametri LowAddress e HighAddress . Se è disponibile memoria sufficiente, l'allocazione della memoria è la dimensione richiesta arrotondata per enumere alla pagina successiva; in caso contrario, la chiamata ha esito negativo.

Dopo l'esecuzione di un sistema per un certo periodo di tempo, il pool di memoria non in pagine del sistema tende a diventare frammentato, aumentando la probabilità che una richiesta di allocare un blocco di memoria fisica contigua avrà esito negativo. Se il controller DMA del dispositivo audio non richiede che le pagine di memoria fisica siano contigue, il driver deve chiamare invece IPortWaveRTStream::AllocatePagesForMdl . A differenza di AllocateContiguousPagesForMdl, il metodo AllocatePagesForMdl non è influenzato dalla frammentazione della memoria.

Il AllocateContiguousPagesforMdl metodo alloca pagine di memoria bloccate (non di paging) ma non mappate. Se il driver miniport richiede l'accesso software a questa memoria, il driver miniport deve effettuare una chiamata successiva a IPortWaveRTStream::MapAllocatedPages per eseguire il mapping delle pagine nello spazio indirizzi in modalità kernel.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows Vista e nei sistemi operativi Windows successivi.
Piattaforma di destinazione Universale
Intestazione portcls.h
IRQL Livello passivo

Vedi anche

IPortWaveRTStream

IPortWaveRTStream::AllocatePagesForMdl

IPortWaveRTStream::MapAllocatedPages