Compartir a través de


Función NdisGetDataBuffer (ndis/nblapi.h)

Llame a la función NdisGetDataBuffer para obtener acceso a un bloque contiguo de datos de una estructura NET_BUFFER .

Sintaxis

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

Parámetros

[in] NetBuffer

Puntero a una estructura de NET_BUFFER.

[in] BytesNeeded

Número de bytes contiguos de datos solicitados.

[in, optional] Storage

Puntero a un búfer o NULL si el autor de la llamada no proporciona ningún búfer. El búfer debe ser mayor o igual que el tamaño del número de bytes especificados en BytesNeeded . Si este valor no es NULL y los datos solicitados no son contiguos, NDIS copia los datos solicitados en el área indicada por Storage .

[in] AlignMultiple

Alineación múltiple expresada en poder de dos. Por ejemplo, 2, 4, 8, 16, etc. Si AlignMultiple es 1, no hay ningún requisito de alineación.

[in] AlignOffset

Desplazamiento, en bytes, de la alineación múltiple.

Valor devuelto

NdisGetDataBuffer devuelve un puntero al inicio de los datos contiguos o devuelve NULL.

Si el miembro DataLength de la estructura NET_BUFFER_DATA de la estructura NET_BUFFER a la que apunta el parámetro NetBuffer es menor que el valor del parámetro BytesNeeded , el valor devuelto es NULL.

Si los datos solicitados en el búfer son contiguos, el valor devuelto es un puntero a una ubicación que proporciona NDIS. Si los datos no son contiguos, NDIS usa el parámetro Storage de la siguiente manera:

  • Si el parámetro Storage no es NULL, NDIS copia los datos en el búfer en Storage. El valor devuelto es el puntero pasado al parámetro Storage .
  • Si el parámetro Storage es NULL, el valor devuelto es NULL.
El valor devuelto también puede ser NULL debido a una condición de recurso baja en la que no se puede asignar un búfer de datos. Esto puede ocurrir incluso si los datos son contiguos o el parámetro Storage no es NULL.

Comentarios

Llame a esta función para obtener un puntero a un encabezado de datos de red contenido en la estructura NET_BUFFER . Puede analizar fácilmente el encabezado almacenado en el bloque de datos contiguo que devuelve esta función.

El requisito de alineación solicitado se expresa como una potencia de dos múltiplos más un desplazamiento. Por ejemplo, si AlignMultiple es 4 y AlignOffset es 3, la dirección de datos debe ser un múltiplo de 4 más 3. Si es necesario, NDIS asignará memoria para satisfacer el requisito de alineación.

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con NDIS 6.0 y versiones posteriores.
Plataforma de destino Universal
Encabezado ndis/nblapi.h (include ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
Reglas de cumplimiento de DDI Irql_NetBuffer_Function(ndis)

Consulte también

NET_BUFFER

NET_BUFFER_DATA