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.
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) |