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ées.

[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 à la taille du nombre d’octets spécifié dans BytesNeeded . 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

Alignement multiple exprimé en puissance de deux. Par exemple, 2, 4, 8, 16, etc. Si AlignMultiple est 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 la structure NET_BUFFER vers laquelle pointe le paramètre NetBuffer est inférieur à la valeur du paramètre BytesNeeded , 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 Stockage comme suit :

  • Si le paramètre Stockage n’est pas NULL, NDIS copie les données dans la mémoire tampon à Stockage. La valeur de retour est le pointeur passé au paramètre Stockage.
  • 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’une puissance de deux multiples et d’un décalage. Par exemple, si AlignMultiple est 4 et AlignOffset est 3, l’adresse de données doit être un multiple de 4 plus 3. Si nécessaire, NDIS alloue de la mémoire pour répondre à l’exigence d’alignement.

Spécifications

   
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