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