Freigeben über


PALLOCATE_DOMAIN_COMMON_BUFFER Rückruffunktion (wdm.h)

Diese Rückruffunktion ordnet den Arbeitsspeicher einem allgemeinen 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 den Bus-master DMA-Gerät oder System-DMA-Kanal des Treibers darstellt. Der Aufrufer hat diesen Zeiger aus einem vorherigen Aufruf der IoGetDmaAdapter-Routine abgerufen.

[in] DomainHandle

Das Handle für die DMA-Domäne, die der Aufrufer aus einem vorherigen Aufruf von PGET_DMA_DOMAIN abgerufen 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 aus dem Speicher unterhalb dieser Adresse zugeordnet 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 Seitengranularität von PAGE_SIZE * 512 zugeordnet. Beachten Sie, dass dies die Wahrscheinlichkeit erhöhen kann, dass die Zuordnung nicht erfolgreich ist.

[in, optional] CacheType

Ein Zeiger auf eine MEMORY_CACHING_TYPE-Enumeration , der angibt, ob die Routine den zwischengespeicherten Arbeitsspeicher im zuzuordnenden allgemeinen Puffer aktivieren oder deaktivieren muss. Es werden nur Werte von MmNonCached und MmCached unterstützt. Der Parameter ist optional und kann als NULL angegeben werden, um anzugeben, dass die Zwischenspeicherung von der Standardeinstellung der Hardwareplattform abhängig ist.

[in] PreferredNode

Der bevorzugte NUMA-Knoten, aus dem der Arbeitsspeicher zugeordnet werden soll. Wenn N die Anzahl der NUMA-Knoten in einem Multiprozessorsystem ist, ist PreferredNode eine Zahl im Bereich von 0 bis N–1. Legen Sie für ein System mit einem Prozessor 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 MmGetPhysicalAddress zurü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 geeigneter NTSTATUS-Wert zurückgegeben.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10
Kopfzeile wdm.h (wdm.h einschließen)
IRQL PASSIVE_LEVEL