PALLOCATE_DOMAIN_COMMON_BUFFER Rückruffunktion (wdm.h)
Diese Rückruffunktion weist den Speicher für einen gemeinsamen Domänenpuffer zu.
Syntax
PALLOCATE_DOMAIN_COMMON_BUFFER PallocateDomainCommonBuffer;
NTSTATUS PallocateDomainCommonBuffer(
[in] PDMA_ADAPTER DmaAdapter,
[in] HANDLE DomainHandle,
[in, optional] PPHYSICAL_ADDRESS MaximumAddress,
[in] ULONG Length,
[in] ULONG Flags,
[in, optional] MEMORY_CACHING_TYPE *CacheType,
[in] NODE_REQUIREMENT PreferredNode,
[out] PPHYSICAL_ADDRESS LogicalAddress,
[out] PVOID *VirtualAddress
)
{...}
Parameter
[in] DmaAdapter
Ein Zeiger auf eine DMA_ADAPTER Struktur. Diese Struktur ist das Adapterobjekt, das das Busmaster-DMA-Gerät oder den DMA-Kanal des Treibers darstellt. Der Aufrufer hat diesen Zeiger aus einem vorherigen Aufruf an die IoGetDmaAdapter Routine abgerufen.
[in] DomainHandle
Das Handle für die DMA-Domäne, die der Aufrufer aus einem vorherigen Aufruf von PGET_DMA_DOMAINerhalten hat.
[in, optional] MaximumAddress
Ein Zeiger auf eine Variable, die die maximale logische Adresse für den allgemeinen Puffer enthält. Dieser Parameter gibt an, dass der Puffer unter dieser Adresse aus dem Speicher zugewiesen werden soll. Dieser Parameter ist optional und kann als NULL angegeben werden, um anzugeben, dass keine maximale Adresse vorhanden ist.
[in] Length
Die Größe des allgemeinen Puffers in Bytes, der für den DMA-Vorgang zugeordnet werden soll.
[in] Flags
Die Größe des allgemeinen Puffers in Bytes, der für den DMA-Vorgang zugeordnet werden soll.
Mögliche Werte sind:
DOMAIN_COMMON_BUFFER_LARGE_PAGE
Der allgemeine Puffer wird mit einer größeren Seiten granularität von PAGE_SIZE * 512 zugewiesen. Beachten Sie, dass dies die Wahrscheinlichkeit erhöhen kann, dass die Zuordnung erfolglos ist.
[in, optional] CacheType
Ein Zeiger auf eine MEMORY_CACHING_TYPE-Aufzählung, der angibt, ob die Routine zwischengespeicherten Speicher im allgemeinen Puffer aktivieren oder deaktivieren muss, der zugewiesen werden soll. Es werden nur Werte von MmNonCached und MmCached- unterstützt. Der Parameter ist optional und kann als NULL angegeben werden, um die Zwischenspeicherung anzugeben, abhängig von der Standardeinstellung der Hardwareplattform.
[in] PreferredNode
Der bevorzugte NUMA-Knoten, von dem der Speicher zugewiesen werden soll. Wenn N die Anzahl von NUMA-Knoten in einem Multiprozessorsystem ist, ist PreferredNode eine Zahl im Bereich 0 bis N-1. Legen Sie für ein 1-Prozessorsystem oder ein Nicht-NUMA-Multiprozessorsystem PreferredNode- auf Null fest.
[out] LogicalAddress
Ein Zeiger auf eine Variable, in die diese Routine die logische Adresse schreibt, die das Gerät für den Zugriff auf den allgemeinen Puffer verwenden kann. Das DMA-Gerät sollte diese logische Adresse anstelle der physischen Adresse verwenden, die von einer Routine wie MmGetPhysicalAddresszurückgegeben wird.
[out] VirtualAddress
Ein Zeiger auf eine Variable, in die diese Routine die entsprechende virtuelle Adresse des zugeordneten Puffers schreibt.
Rückgabewert
Gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Andernfalls wird ein entsprechender NTSTATUS-Wertzurückgegeben.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 10 |
Header- | wdm.h (include Wdm.h) |
IRQL- | PASSIVE_LEVEL |