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 |
---|---|
|
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. |
|
Gibt an, dass alle vorherigen Leseanforderungen abgeschlossen sein müssen, bevor die Hardware mit der Verarbeitung dieser Anforderung beginnt. |
|
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. |
|
Erlauben Sie lokalen Schreibzugriff auf die Speicherregion. |
|
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. |
|
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 |
---|---|
|
Die Anforderung wurde erfolgreich gesendet. Ein Vervollständigungseintrag wird in die CQ-Warteschlange eingereiht, wenn die Arbeitsanforderung abgeschlossen ist. |
|
Der QP ist nicht verbunden. |
|
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. |
|
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