NdisGetDataBuffer, fonction (ndis/nblapi.h)

Appelez la fonction NdisGetDataBuffer pour accéder à un bloc de données contigu à partir d’une structure NET_BUFFER .

Syntaxe

NDIS_EXPORTED_ROUTINE PVOID NdisGetDataBuffer(
  [in]           NET_BUFFER *NetBuffer,
  [in]           ULONG      BytesNeeded,
  [in, optional] PVOID      Storage,
  [in]           ULONG      AlignMultiple,
  [in]           ULONG      AlignOffset
);

Paramètres

[in] NetBuffer

Pointeur vers une structure NET_BUFFER.

[in] BytesNeeded

Nombre d’octets contigus de données demandés.

[in, optional] Storage

Pointeur vers une mémoire tampon ou NULL si aucune mémoire tampon n’est fournie par l’appelant. La mémoire tampon doit être supérieure ou égale au nombre d’octets spécifié dans BytesNeededed . Si cette valeur n’est pas NULL et que les données demandées ne sont pas contiguës, NDIS copie les données demandées dans la zone indiquée par Stockage .

[in] AlignMultiple

Multiple d’alignement exprimé en puissance de deux. Par exemple, 2, 4, 8, 16, etc. Si AlignMultiple a la valeur 1, il n’existe aucune exigence d’alignement.

[in] AlignOffset

Décalage, en octets, du multiple d’alignement.

Valeur retournée

NdisGetDataBuffer retourne un pointeur vers le début des données contiguës ou retourne NULL.

Si le membre DataLength de la structure NET_BUFFER_DATA dans le NET_BUFFER structure vers laquelle pointe le paramètre NetBuffer est inférieur à la valeur dans le paramètre BytesNeededed , la valeur de retour est NULL.

Si les données demandées dans la mémoire tampon sont contiguës, la valeur de retour est un pointeur vers un emplacement fourni par NDIS. Si les données ne sont pas contiguës, NDIS utilise le paramètre Storage comme suit :

  • Si le paramètre Stockage n’a pas la valeur NULL, NDIS copie les données dans la mémoire tampon sur Stockage. La valeur de retour est le pointeur passé au paramètre Storage .
  • Si le paramètre Stockage a la valeur NULL, la valeur de retour est NULL.
La valeur de retour peut également être NULL en raison d’une condition de ressource faible où une mémoire tampon de données ne peut pas être mappée. Cela peut se produire même si les données sont contiguës ou si le paramètre Stockage n’est pas NULL.

Remarques

Appelez cette fonction pour obtenir un pointeur vers un en-tête de données réseau contenu dans la structure NET_BUFFER . Vous pouvez facilement analyser l’en-tête stocké dans le bloc de données contigu que cette fonction retourne.

L’exigence d’alignement demandée est exprimée sous la forme d’un multiple power-of-two plus un décalage. Par exemple, si AlignMultiple a la valeur 4 et AlignOffset est 3, l’adresse de données doit être un multiple de 4 plus 3. Si nécessaire, NDIS allouera de la mémoire pour répondre à l’exigence d’alignement.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 6.0 et versions ultérieures.
Plateforme cible Universal
En-tête ndis/nblapi.h (include ndis.h)
Bibliothèque Ndis.lib
IRQL <= DISPATCH_LEVEL
Règles de conformité DDI Irql_NetBuffer_Function(ndis)

Voir aussi

NET_BUFFER

NET_BUFFER_DATA