NDK_FN_REGISTER_MR Rückruffunktion (ndkpi.h)
Die Funktion NdkRegisterMr (NDK_FN_REGISTER_MR) registriert einen nahezu zusammenhängenden Speicherbereich mit einem NDK-Adapter.
Syntax
NDK_FN_REGISTER_MR NdkFnRegisterMr;
NTSTATUS NdkFnRegisterMr(
[in] NDK_MR *pNdkMr,
[in] MDL *Mdl,
[in] SIZE_T Length,
[in] ULONG Flags,
[in] NDK_FN_REQUEST_COMPLETION RequestCompletion,
[in, optional] PVOID RequestContext
)
{...}
Parameter
[in] pNdkMr
Ein Zeiger auf ein MR-Objekt (NDK Memory Region) (NDK_MR).
[in] Mdl
Eine MDL oder Eine Kette von MDLs, die einen nahezu zusammenhängenden Speicherbereich von der virtuellen Startadresse bis zur Anzahl von Bytes darstellen, die im Parameter Length angegeben sind.
[in] Length
Die Anzahl der Zu registrierenden Bytes ab der virtuellen Adresse der ersten MDL. Die virtuelle Adresse der ersten MDL kann durch Aufrufen des Makros MmGetMdlVirtualAddress abgerufen werden. Die Länge darf die Gesamtanzahl der Byte, die durch die MDL-Kette dargestellt wird, nicht überschreiten.
[in] Flags
Eine Bitmaske von Flags, die die Zugriffsberechtigungen für den registrierten Speicherbereich angeben. Die folgenden Flags können festgelegt werden:
[in] RequestCompletion
Ein Zeiger auf die Rückrufroutine NdkRequestCompletion (NDK_FN_REQUEST_COMPLETION) der Anforderungsvervollständigung.
[in, optional] RequestContext
Ein Kontextwert, der an den Context-Parameter der Rückruffunktion übergeben werden soll, der im RequestCompletion-Parameter angegeben ist.
Rückgabewert
Die NdkRegisterMr-Funktion gibt einen der folgenden NTSTATUS-Codes zurück.
Rückgabecode | Beschreibung |
---|---|
|
Die MR-Registrierung wurde erfolgreich abgeschlossen. |
|
Der Vorgang ist ausstehend und wird später abgeschlossen. Der Treiber ruft die angegebene RequestCompletion-Funktion (NDK_FN_REQUEST_COMPLETION) auf, um den ausstehenden Vorgang abzuschließen. |
|
Der Teil der MDL-Kette von der virtuellen Startadresse bis zur Länge in Bytes stellt keinen nahezu zusammenhängenden Speicherbereich dar. |
|
Fehler bei der Anforderung aufgrund unzureichender Ressourcen.
Wichtig Die Anforderung kann sowohl inline als auch asynchron mit diesem status Code fehlschlagen.
|
|
Ein Fehler ist aufgetreten. |
Hinweise
Auf einem NDK_MR-Objekt , das mit dem FastRegister-Parameter erstellt wurde, der auf FALSE festgelegt ist, wird NdkRegisterMr verwendet, um einen praktisch zusammenhängenden Speicherbereich mit dem Adapter zu registrieren.
Der NDK-Consumer muss eine MDL oder eine Kette von MDLs übergeben, die praktisch zusammenhängende Speicherbereiche darstellen, die im physischen Speicher angeheftet sind. Die virtuelle Basisadresse für den zu registrierenden Speicherbereich ist die virtuelle Adresse, die durch das MmGetMdlVirtualAddress-Makro angegeben wird. Wenn die MDL-Kette keinen nahezu zusammenhängenden Speicherbereich von der virtuellen Startadresse bis zur angegebenen Länge in Bytes darstellt, muss der NDK-Anbieter die Anforderung fehlschlagen.
Der Anbieter muss die virtuelle Adresse, die MmGetMdlVirtualAddress zurückgibt, als Index für den Anfang des registrierten Speicherbereichs behandeln. Der Anbieter darf die virtuelle Adresse nicht als gültige virtuelle Adresse zum Lesen oder Schreiben von Pufferinhalten verwenden.
Der NDK-Consumer darf die MDL-Kette nicht verwenden, während die Registrierungsanforderung aussteht.
NdkRegisterMr unterstützt keine nullbasierten virtuellen Adressen.
Ein NDK-Consumer muss das NDK_MR_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 für Adapter, für die das flag NDK_ADAPTER_FLAG_RDMA_READ_SINK_NOT_REQUIRED im AdapterFlags-Member der NDK_ADAPTER_INFO-Struktur nicht festgelegt ist. Das NDK_MR_FLAG_RDMA_READ_SINK-Flag ermöglicht es diesen Anbietern, Registrierungsanforderungen angemessen zu unterstützen.
Um die Registrierung des Speicherbereichs aufzuheben, verwenden Sie die Funktion NdkDeregisterMr (NDK_FN_DEREGISTER_MR).
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Keine unterstützt, unterstützt in NDIS 6.30 und höher. |
Unterstützte Mindestversion (Server) | Windows Server 2012 |
Zielplattform | Windows |
Kopfzeile | ndkpi.h (Ndkpi.h einschließen) |
IRQL | <=DISPATCH_LEVEL |