Share via


NDK_FN_FAST_REGISTER Rückruffunktion (ndkpi.h)

Die Funktion NdkFastRegister (NDK_FN_FAST_REGISTER) registriert schnell ein Array logischer Adapterseiten über einen vorhandenen Speicherbereich.

Syntax

NDK_FN_FAST_REGISTER NdkFnFastRegister;

NTSTATUS NdkFnFastRegister(
  [in]           NDK_QP *pNdkQp,
  [in, optional] PVOID RequestContext,
  [in]           NDK_MR *pMr,
  [in]           ULONG AdapterPageCount,
                 const NDK_LOGICAL_ADDRESS *AdapterPageArray,
  [in]           ULONG FBO,
  [in]           SIZE_T Length,
  [in]           PVOID BaseVirtualAddress,
  [in]           ULONG Flags
)
{...}

Parameter

[in] pNdkQp

Ein Zeiger auf ein QP-Objekt (NDK-Warteschlangenpaar) (NDK_QP).

[in, optional] RequestContext

Ein Kontextwert, der im RequestContext-Member der NDK_RESULT-Struktur für diese Anforderung zurückgegeben werden soll.

[in] pMr

Ein Zeiger auf ein NDK-Speicherregionsobjekt (MR) (NDK_MR), das für die schnelle Registrierung initialisiert wurde.

[in] AdapterPageCount

Die Anzahl der Seiten im AdapterPageArray-Parameter . Die Größe jeder Seite im AdapterPageArray beträgt PAGE_SIZE Bytes.

AdapterPageArray

Ein Array logischer Adapteradressen (NDK_LOGICAL_ADDRESS), wobei jede Adresse die logische Startadresse für eine Seite ist. Jede Adresse muss ausgerichtete Seiten sein, die PAGE_SIZE Bytes lang sind. Aufeinanderfolgende Adressen im Array sind im Hinblick auf den logischen Adressraum nicht unbedingt aufeinanderfolgende, aber das Array als Ganzes stellt aus Sicht des Hostsystems einen praktisch zusammenhängenden Speicherbereich dar.

[in] FBO

Der erste Byteoffset (FBO) auf der ersten Seite. Die registrierte Region beginnt bei diesem Offset.

[in] Length

Die Länge der Region, die ab dem FBO registriert wird, in Bytes. Die Länge muss kleiner oder gleich der Gesamtanzahl von Bytes sein, die durch den ersten Satz (AdapterPageCount) von Seiten dargestellt werden, die im AdapterPageArray-Array abzüglich des FBO enthalten sind.

[in] BaseVirtualAddress

Der vom Consumer angegebene Wert der virtuellen Adresse, der auf den ersten Bytespeicherort des Speicherbereichs verweist. Dieser Wert muss ein Vielfaches von PAGE_SIZE plus FBO sein. Die zulässigen Werte umfassen also FBO oder FBO plus n mal die PAGE_SIZE , wobei n größer oder gleich 0 ist. Null ist nur gültig, wenn FBO 0 ist.

[in] Flags

Ein bitweiser OR von Flags, der die zulässigen Vorgänge angibt. Die folgenden Flags werden unterstützt:

Wert Bedeutung
NDK_OP_FLAG_SILENT_SUCCESS
0x00000001
Gibt an, dass der erfolgreiche Abschluss dieser Anforderung kein Vervollständigungsereignis in der Warteschlange für ausgehende Vervollständigung generiert. Bei Anforderungen, die fehlschlagen, wird jedoch ein Ereignis in der Vervollständigungswarteschlange generiert.
NDK_OP_FLAG_READ_FENCE
0x00000002
Gibt an, dass alle vorherigen Leseanforderungen abgeschlossen sein müssen, bevor die Hardware mit der Verarbeitung dieser Anforderung beginnt.
NDK_OP_FLAG_ALLOW_REMOTE_READ
0x00000008
Aktivieren Sie den Lesezugriff auf den Speicherbereich für jeden verbundenen Peer. Für den Zugriff auf die Speicherregion müssen die verbundenen Peers über ein gültiges Token verfügen.
NDK_OP_FLAG_ALLOW_LOCAL_WRITE
0x00000010
Erlauben Sie lokalen Schreibzugriff auf die Speicherregion.
NDK_OP_FLAG_ALLOW_REMOTE_WRITE
0x00000030
Aktivieren Sie den Schreibzugriff auf die Speicherregion für jeden verbundenen Peer. Für den Zugriff auf die Speicherregion müssen die verbundenen Peers über ein gültiges Token verfügen.
NDK_OP_FLAG_DEFER
0x00000200
Gibt dem NDK-Anbieter an, dass er möglicherweise die Anforderung an die Hardware für die Verarbeitung zurückstellen kann. Weitere Informationen zu diesem Flag finden Sie unter NDKPI-Schema für verzögerte Verarbeitung.

Hinweis Dieses Flag wird nur in NDKPI 1.2 (Windows Server 2012 R2) und höher unterstützt.

Rückgabewert

Die NDK_FN_FAST_REGISTER-Funktion gibt einen der folgenden NTSTATUS-Codes zurück.

Rückgabecode Beschreibung
STATUS_SUCCESS
Die Anforderung wurde erfolgreich gesendet. Ein Vervollständigungseintrag wird in die CQ-Warteschlange eingereiht, wenn die Arbeitsanforderung abgeschlossen ist.
STATUS_CONNECTION_INVALID
Der QP ist nicht verbunden.
STATUS_ACCESS_VIOLATION
Der Speicherbereich wurde während der Schnellregistrierungsinitialisierung nicht für den Remotezugriff initialisiert, sondern die Arbeitsanforderung für schnelle Registrierung NDK_OP_FLAG_ALLOW_REMOTE_READ oder NDK_OP_FLAG_ALLOW_REMOTE_WRITE angegeben.
Andere status Codes
Ein Fehler ist aufgetreten.

Hinweise

NdkFastRegister registriert schnell ein Array logischer Adapterseiten über einer vorhandenen Speicherregion, die für die schnelle Registrierung initialisiert wird.

Nachdem dieser Aufruf zurückgegeben wurde, ist das Speicherregionstoken für den Remotezugriff mit der Funktion NdkGetRemoteTokenFromMr (NDK_FN_GET_REMOTE_TOKEN_FROM_MR) des MR verfügbar.

NdkFastRegister unterstützt keine nullbasierten virtuellen Adressen.

Wenn das NDK_ADAPTER_FLAG_RDMA_READ_SINK_NOT_REQUIRED-Flag im AdapterFlags-Member der NDK_ADAPTER_INFO-Struktur nicht festgelegt ist, muss ein NDK-Consumer das NDK_OP_FLAG_RDMA_READ_SINK-Flag übergeben, wenn er Arbeitsspeicher registriert, der als Senkenpuffer für eine RDMA-Leseanforderung verwendet werden kann. Bestimmte NDK-Anbieter erfordern möglicherweise die Aktivierung spezieller Zugriffsrechte für den Senkenpuffer für eine RDMA-Leseanforderung. Dieses Flag ermöglicht es diesen Anbietern, Registrierungsanforderungen entsprechend zu unterstützen. Beachten Sie, dass Puffer für mehrere Zwecke registriert werden können, daher kann dieses Flag von anderen begleitet werden.

Wenn ein NDK-Consumer das NDK_OP_FLAG_RDMA_READ_SINK-Flag für einen Adapter übergibt, für den das NDK_ADAPTER_FLAG_RDMA_READ_SINK_NOT_REQUIRED-Flag im AdapterFlags-Member der NDK_ADAPTER_INFO-Struktur festgelegt ist, muss der Anbieter das NDK_OP_FLAG_RDMA_READ_SINK-Flag nicht verarbeiten und darf die Anforderung aufgrund des Vorhandenseins dieses Flags nicht fehlschlagen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Keine unterstützt, wird in NDIS 6.30 und höher unterstützt.
Unterstützte Mindestversion (Server) Windows Server 2012
Zielplattform Windows
Kopfzeile ndkpi.h (include Ndkpi.h)
IRQL <=DISPATCH_LEVEL

Weitere Informationen

NDKPI-Schema für verzögerte Verarbeitung

Anforderungen an die NDKPI-Veröffentlichung von Arbeitsanforderungen

NDK_ADAPTER_INFO

NDK_FN_GET_REMOTE_TOKEN_FROM_MR

NDK_LOGICAL_ADDRESS

NDK_MR

NDK_QP

NDK_RESULT