Metodo IPortWaveRTStream::AllocatePagesForMdl (portcls.h)
Il AllocatePagesForMdl
metodo alloca un elenco di pagine di memoria fisica non paginate e restituisce un puntatore a un elenco di descrittori di memoria (MDL) che li descrive.
Sintassi
PMDL AllocatePagesForMdl(
[in] PHYSICAL_ADDRESS HighAddress,
[in] SIZE_T TotalBytes
);
Parametri
[in] HighAddress
Specifica la fine elevata dell'intervallo di indirizzi da cui è possibile allocare l'archiviazione per MDL. La fine bassa dell'intervallo di indirizzi è implicitamente zero.
[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
AllocatePagesforMdl
restituisce un puntatore a un MDL che descrive un elenco di pagine di memoria fisica. Se il metodo non è in grado di allocare il buffer richiesto, restituisce NULL.
Commenti
Poiché lo stack audio di Windows non supporta un meccanismo per esprimere i requisiti di allineamento dell'accesso alla memoria per i buffer, i driver audio devono selezionare un tipo di memorizzazione nella cache per i buffer di memoria mappati che non impone requisiti di allineamento specifici della piattaforma. In altre parole, il tipo di memorizzazione nella cache usato dal driver audio per i buffer di memoria mappati, non deve fare ipotesi sui requisiti di allineamento della memoria per qualsiasi piattaforma specifica.
Il driver chiama questo metodo per allocare memoria che può essere mappato alla modalità utente o kernel. Le pagine di memoria fisica nell'MDL non sono necessariamente contigue nella memoria fisica, ma tutte rientrano nell'intervallo di indirizzi specificato.
Il metodo alloca sempre un numero integrale di pagine. Se è disponibile memoria sufficiente, l'allocazione della memoria è la dimensione richiesta arrotondata fino alla pagina successiva. In caso contrario, l'allocazione della memoria può essere minore delle dimensioni richieste. Il chiamante deve verificare il numero di byte effettivamente allocati.
Se il controller DMA del dispositivo audio richiede che le pagine di memoria fisica nel buffer siano contigue, il driver deve chiamare IPortWaveRTStream::AllocateContiguousPagesForMdl .
Come la funzione MmAllocatePagesForMdl , il AllocatePagesforMdl
metodo alloca le pagine di memoria bloccate (nonpaged) ma non mappate. Se il driver miniport vuole configurare l'accesso software a questa memoria, il driver miniport deve eseguire 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 |