NDK_FN_FAST_REGISTER fonction de rappel (ndkpi.h)
La fonction NdkFastRegister (NDK_FN_FAST_REGISTER) enregistre rapidement un tableau de pages logiques d’adaptateur sur une région de mémoire existante.
Syntaxe
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
)
{...}
Paramètres
[in] pNdkQp
Pointeur vers un objet de paire de files d’attente NDK (QP) (NDK_QP).
[in, optional] RequestContext
Valeur de contexte à retourner dans le membre RequestContext de la structure NDK_RESULT pour cette requête.
[in] pMr
Pointeur vers un objet de région de mémoire NDK (NDK_MR) initialisé pour une inscription rapide.
[in] AdapterPageCount
Nombre de pages dans le paramètre AdapterPageArray . La taille de chaque page dans AdapterPageArray est de PAGE_SIZE octets.
AdapterPageArray
Tableau d’adresses logiques d’adaptateur (NDK_LOGICAL_ADDRESS) où chaque adresse est l’adresse logique de départ d’une page. Chaque adresse doit être alignée sur des pages PAGE_SIZE octets. Les adresses consécutives dans le tableau ne sont pas nécessairement consécutives en termes d’espace d’adressage logique, mais le tableau dans son ensemble représente une région de mémoire pratiquement contiguë du point de vue du système hôte.
[in] FBO
Premier décalage d’octet (FBO) dans la première page. La région inscrite commence à ce décalage.
[in] Length
Longueur, en octets, de la région en cours d’inscription à partir du FBO. La longueur doit être inférieure ou égale au nombre total d’octets qui sont représentés par le premier ensemble (AdapterPageCount) de pages contenues dans le tableau AdapterPageArray moins le FBO.
[in] BaseVirtualAddress
Valeur d’adresse virtuelle spécifiée par le consommateur pour faire référence au premier emplacement d’octet de la région mémoire. Cette valeur doit être un multiple de PAGE_SIZE plus FBO. Par conséquent, les valeurs autorisées incluent FBO, ou FBO plus n fois le PAGE_SIZE où n est supérieur ou égal à zéro. Zéro est une valeur valide uniquement si FBO est égal à zéro.
[in] Flags
Or au niveau du bit des indicateurs qui spécifie les opérations autorisées. Les indicateurs suivants sont pris en charge :
Valeur | Signification |
---|---|
|
Indique que la réussite de cette demande ne génère pas d’événement d’achèvement dans la file d’attente d’achèvement sortante. Toutefois, les demandes qui échouent génèrent un événement dans la file d’attente d’achèvement. |
|
Indique que toutes les demandes de lecture antérieures doivent être terminées avant que le matériel ne commence à traiter cette demande. |
|
Activez l’accès en lecture à la région mémoire pour n’importe quel homologue connecté. Pour accéder à la région de mémoire, les homologues connectés doivent disposer d’un jeton valide. |
|
Autoriser l’accès en écriture locale à la région mémoire. |
|
Activez l’accès en écriture à la région mémoire pour n’importe quel homologue connecté. Pour accéder à la région de mémoire, les homologues connectés doivent disposer d’un jeton valide. |
|
Indique au fournisseur NDK qu’il peut différer l’indication de la demande au matériel pour traitement. Pour plus d’informations sur cet indicateur, consultez Schéma de traitement différé NDKPI.
Note Cet indicateur est pris en charge uniquement dans NDKPI 1.2 (Windows Server 2012 R2) et versions ultérieures. |
Valeur retournée
La fonction NDK_FN_FAST_REGISTER retourne l’un des codes NTSTATUS suivants.
Code de retour | Description |
---|---|
|
La demande a été publiée avec succès. Une entrée d’achèvement est mise en file d’attente vers le CQ une fois la demande de travail terminée. |
|
Le QP n’est pas connecté. |
|
La région de mémoire n’a pas été initialisée pour l’accès à distance lors de l’initialisation de l’enregistrement rapide, mais la demande de travail d’inscription rapide spécifiée NDK_OP_FLAG_ALLOW_REMOTE_READ ou NDK_OP_FLAG_ALLOW_REMOTE_WRITE. |
|
Une erreur est survenue. |
Remarques
NdkFastRegister enregistre rapidement un tableau de pages logiques d’adaptateur sur une région de mémoire existante qui est initialisée pour une inscription rapide.
Une fois cet appel retourné, le jeton de région de mémoire pour l’accès à distance est disponible avec la fonction NdkGetRemoteTokenFromMr (NDK_FN_GET_REMOTE_TOKEN_FROM_MR) de la mr.
NdkFastRegister ne prend pas en charge les adresses virtuelles de base zéro.
Si l’indicateur NDK_ADAPTER_FLAG_RDMA_READ_SINK_NOT_REQUIRED n’est pas défini dans le membre AdapterFlags de la structure NDK_ADAPTER_INFO , un consommateur NDK doit passer l’indicateur NDK_OP_FLAG_RDMA_READ_SINK lorsqu’il inscrit la mémoire qui peut être utilisée comme mémoire tampon récepteur pour une demande de lecture RDMA. Certains fournisseurs NDK peuvent nécessiter l’activation de droits d’accès spéciaux sur la mémoire tampon du récepteur pour une demande de lecture RDMA. Cet indicateur permet à ces fournisseurs de prendre en charge les demandes d’inscription de manière appropriée. Notez que les mémoires tampons peuvent être inscrites à plusieurs fins. Par conséquent, cet indicateur peut être accompagné d’autres.
Si un consommateur NDK transmet l’indicateur NDK_OP_FLAG_RDMA_READ_SINK sur une carte pour laquelle l’indicateur NDK_ADAPTER_FLAG_RDMA_READ_SINK_NOT_REQUIRED est défini dans le membre AdapterFlags de la structure NDK_ADAPTER_INFO , le fournisseur n’est pas tenu de gérer l’indicateur NDK_OP_FLAG_RDMA_READ_SINK et ne doit pas échouer à la demande en raison de la présence de cet indicateur.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Aucun pris en charge, pris en charge dans NDIS 6.30 et versions ultérieures. |
Serveur minimal pris en charge | Windows Server 2012 |
Plateforme cible | Windows |
En-tête | ndkpi.h (inclure Ndkpi.h) |
IRQL | <=DISPATCH_LEVEL |
Voir aussi
Schéma de traitement différé NDKPI
Exigences de publication de demande de travail NDKPI
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour