Freigeben über


PALLOCATE_COMMON_BUFFER_WITH_BOUNDS Rückruffunktion (wdm.h)

Diese Rückruffunktion weist den Speicher für einen allgemeinen Puffer zu und ordnet ihn zu, sodass über ein Mastergerät und die CPU darauf zugegriffen werden kann. Der allgemeine Puffer kann an eine optionale minimale und maximale logische Adresse gebunden werden.

Syntax

PALLOCATE_COMMON_BUFFER_WITH_BOUNDS PallocateCommonBufferWithBounds;

PVOID PallocateCommonBufferWithBounds(
  [in]           PDMA_ADAPTER DmaAdapter,
  [in, optional] PPHYSICAL_ADDRESS MinimumAddress,
  [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
)
{...}

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, optional] MinimumAddress

Ein Zeiger auf eine Variable, die die minimale logische Adresse für den allgemeinen Puffer enthält. Dieser Parameter gibt an, dass der Puffer aus dem Speicher bei und oberhalb dieser Adresse zugewiesen werden soll. Dieser Parameter ist optional und kann als NULL angegeben werden, um anzugeben, dass keine Mindestadresse vorhanden ist.

[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.

Flagge Bedeutung
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.

Rückgabewert

Gibt PVOID zurück, das die virtuelle Adresse des Speichers darstellt, der für den allgemeinen Puffer zugeordnet ist. Wenn der Puffer nicht zugeordnet werden kann, wird NULL zurückgegeben.

Bemerkungen

Diese Rückruffunktion ist eine erweiterte Version der PALLOCATE_COMMON_BUFFER_EX Routine. In der folgenden Liste sind die Features zusammengefasst, die nur in der erweiterten Version verfügbar sind:

  • Der Aufrufer kann eine minimale logische Adresse für den allgemeinen Puffer angeben, der zugewiesen werden soll.

  • Der Aufrufer kann eine Zwischenspeicherungstypüberschreibung bereitstellen, die unabhängig von der Hardwareplattform befolgt wird.

  • Der Aufrufer kann die Verwendung einer größeren Granularität für die gemeinsame Pufferzuordnung angeben.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 10, Version 1803
Zielplattform- Desktop
Header- wdm.h (include Wdm.h)
IRQL- PASSIVE_LEVEL

Siehe auch

DMA_OPERATIONS

PALLOCATE_COMMON_BUFFER_EX