Partager via


NDK_FN_BIND fonction de rappel (ndkpi.h)

La fonction NdkBind (NDK_FN_BIND) lie une fenêtre mémoire à une sous-région spécifique d’une région de mémoire (MR).

Syntaxe

NDK_FN_BIND NdkFnBind;

NTSTATUS NdkFnBind(
  [in]           NDK_QP *pNdkQp,
  [in, optional] PVOID RequestContext,
  [in]           NDK_MR *pMr,
  [in]           NDK_MW *pMw,
  [in]           PVOID VirtualAddress,
  [in]           SIZE_T Length,
  [in]           ULONG Flags
)
{...}

Paramètres

[in] pNdkQp

Pointeur vers un objet de paire de files d’attente (QP) NDK (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 (MR) NDK (NDK_MR).

[in] pMw

Pointeur vers un objet de fenêtre de mémoire NDK (MW) (NDK_MW).

[in] VirtualAddress

Adresse virtuelle qui doit être supérieure ou égale à l’adresse virtuelle de la MDL pour le MR et inférieure à l’adresse virtuelle de la MDL pour la mr plus la valeur dans le paramètre Length .

Utilisez la macro MmGetMdlVirtualAddress pour obtenir l’adresse virtuelle de la MDL pour le mr.

[in] Length

Longueur du MR à lier au MW.

[in] Flags

Or au niveau du bit d’indicateurs qui spécifie les opérations autorisées. Les indicateurs suivants sont pris en charge :

Valeur Signification
NDK_OP_FLAG_SILENT_SUCCESS
0x00000001
Indique que la réussite de cette requête 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 une complétion dans la file d’attente d’achèvement.
NDK_OP_FLAG_READ_FENCE
0x00000002
Indique que toutes les demandes de lecture antérieures doivent être terminées avant que le matériel commence à traiter cette demande.
NDK_OP_FLAG_ALLOW_REMOTE_READ
0x00000008
Activez l’accès en lecture à la fenêtre mémoire pour n’importe quel homologue connecté. Pour accéder à la fenêtre mémoire, les homologues connectés doivent avoir un jeton valide.
NDK_OP_FLAG_ALLOW_REMOTE_WRITE
0x00000030
Activez l’accès en écriture à la fenêtre mémoire pour n’importe quel homologue connecté. Pour accéder à la fenêtre mémoire, les homologues connectés doivent avoir un jeton valide.
NDK_OP_FLAG_DEFER
0x00000200
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 NdkBind retourne l’un des codes NTSTATUS suivants.

Code de retour Description
STATUS_SUCCESS
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.
STATUS_CONNECTION_INVALID
La paire de files d’attente (QP) n’est pas connectée.
STATUS_ACCESS_VIOLATION
La région de mémoire n’autorise pas le type d’accès demandé pour la fenêtre mémoire. L’indicateur NDK_OP_FLAG_ALLOW_WRITE nécessite une région de mémoire inscrite avec l’indicateur NDK_MR_FLAG_ALLOW_LOCAL_WRITE.
Autres codes status
Une erreur est survenue.

Remarques

NdkBind lie une fenêtre mémoire (MW) à une sous-région spécifique d’une région de mémoire (MR).

L’adresse dans le paramètre VirtualAddress doit être une adresse dans la région pratiquement contiguë décrite par la chaîne MDL spécifiée lors de l’inscription de la mémoire. L’adresse doit être traitée par le fournisseur comme un index dans la région de mémoire. L’adresse ne doit pas être utilisée par le fournisseur comme adresse virtuelle valide pour la lecture ou l’écriture du contenu de la mémoire tampon.

Une fois cet appel retourné, le jeton distant est disponible avec la fonction NdkGetRemotetokenFromMw (NDK_FN_GET_REMOTE_TOKEN_FROM_MW).

Cette fonction ne prend pas en charge une adresse virtuelle de base zéro.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Aucune prise en charge, prise 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 (incluez Ndkpi.h)
IRQL <=DISPATCH_LEVEL

Voir aussi

MmGetMdlVirtualAddress

Schéma de traitement différé NDKPI

Conditions d’affichage des demandes de travail NDKPI

NDK_FN_GET_REMOTE_TOKEN_FROM_MW

NDK_MR

NDK_MW

NDK_QP

NDK_RESULT