ndis.h : Group related definitions, add missing PROTOCOL_RESERVED_SIZE_IN_PACKET, NdisGetFirstBufferFromPacketSafe, NdisSetPacketPoolProtocolId and use _ANONYMOUS_UNION/_ANONYMOUS_STRUCT.

svn path=/branches/header-work/; revision=46866
This commit is contained in:
Amine Khaldi 2010-04-14 13:40:55 +00:00
parent 7927a9d7b6
commit 1698f62b8d

View file

@ -388,22 +388,22 @@ typedef struct _NDIS_PACKET_PRIVATE {
} NDIS_PACKET_PRIVATE, * PNDIS_PACKET_PRIVATE; } NDIS_PACKET_PRIVATE, * PNDIS_PACKET_PRIVATE;
typedef struct _NDIS_PACKET { typedef struct _NDIS_PACKET {
NDIS_PACKET_PRIVATE Private; NDIS_PACKET_PRIVATE Private;
__GNU_EXTENSION union { _ANONYMOUS_UNION union {
__GNU_EXTENSION struct { _ANONYMOUS_STRUCT struct {
UCHAR MiniportReserved[2 * sizeof(PVOID)]; UCHAR MiniportReserved[2 * sizeof(PVOID)];
UCHAR WrapperReserved[2 * sizeof(PVOID)]; UCHAR WrapperReserved[2 * sizeof(PVOID)];
}; } DUMMYSTRUCTNAME;
__GNU_EXTENSION struct { _ANONYMOUS_STRUCT struct {
UCHAR MiniportReservedEx[3 * sizeof(PVOID)]; UCHAR MiniportReservedEx[3 * sizeof(PVOID)];
UCHAR WrapperReservedEx[sizeof(PVOID)]; UCHAR WrapperReservedEx[sizeof(PVOID)];
}; } DUMMYSTRUCTNAME;
__GNU_EXTENSION struct { _ANONYMOUS_STRUCT struct {
UCHAR MacReserved[4 * sizeof(PVOID)]; UCHAR MacReserved[4 * sizeof(PVOID)];
}; } DUMMYSTRUCTNAME;
}; } DUMMYUNIONNAME;
ULONG_PTR Reserved[2]; ULONG_PTR Reserved[2];
UCHAR ProtocolReserved[1]; UCHAR ProtocolReserved[1];
} NDIS_PACKET, *PNDIS_PACKET, **PPNDIS_PACKET; } NDIS_PACKET, *PNDIS_PACKET, **PPNDIS_PACKET;
typedef enum _NDIS_CLASS_ID { typedef enum _NDIS_CLASS_ID {
@ -936,18 +936,6 @@ typedef struct _NDIS_TASK_IPSEC {
} V4ESP; } V4ESP;
} NDIS_TASK_IPSEC, *PNDIS_TASK_IPSEC; } NDIS_TASK_IPSEC, *PNDIS_TASK_IPSEC;
typedef struct _NDIS_TASK_OFFLOAD {
ULONG Version;
ULONG Size;
NDIS_TASK Task;
ULONG OffsetNextTask;
ULONG TaskBufferLength;
UCHAR TaskBuffer[1];
} NDIS_TASK_OFFLOAD, *PNDIS_TASK_OFFLOAD;
/* NDIS_TASK_OFFLOAD_HEADER.Version constants */
#define NDIS_TASK_OFFLOAD_VERSION 1
typedef enum _NDIS_ENCAPSULATION { typedef enum _NDIS_ENCAPSULATION {
UNSPECIFIED_Encapsulation, UNSPECIFIED_Encapsulation,
NULL_Encapsulation, NULL_Encapsulation,
@ -966,15 +954,26 @@ typedef struct _NDIS_ENCAPSULATION_FORMAT {
ULONG EncapsulationHeaderSize; ULONG EncapsulationHeaderSize;
} NDIS_ENCAPSULATION_FORMAT, *PNDIS_ENCAPSULATION_FORMAT; } NDIS_ENCAPSULATION_FORMAT, *PNDIS_ENCAPSULATION_FORMAT;
typedef struct _NDIS_TASK_OFFLOAD_HEADER typedef struct _NDIS_TASK_OFFLOAD_HEADER {
{ ULONG Version;
ULONG Version; ULONG Size;
ULONG Size; ULONG Reserved;
ULONG Reserved; ULONG OffsetFirstTask;
ULONG OffsetFirstTask; NDIS_ENCAPSULATION_FORMAT EncapsulationFormat;
NDIS_ENCAPSULATION_FORMAT EncapsulationFormat;
} NDIS_TASK_OFFLOAD_HEADER, *PNDIS_TASK_OFFLOAD_HEADER; } NDIS_TASK_OFFLOAD_HEADER, *PNDIS_TASK_OFFLOAD_HEADER;
typedef struct _NDIS_TASK_OFFLOAD {
ULONG Version;
ULONG Size;
NDIS_TASK Task;
ULONG OffsetNextTask;
ULONG TaskBufferLength;
UCHAR TaskBuffer[1];
} NDIS_TASK_OFFLOAD, *PNDIS_TASK_OFFLOAD;
/* NDIS_TASK_OFFLOAD_HEADER.Version constants */
#define NDIS_TASK_OFFLOAD_VERSION 1
typedef struct _NDIS_TASK_TCP_IP_CHECKSUM { typedef struct _NDIS_TASK_TCP_IP_CHECKSUM {
struct { struct {
ULONG IpOptionsSupported:1; ULONG IpOptionsSupported:1;
@ -1572,6 +1571,8 @@ NdisAllocatePacketPool(
IN UINT NumberOfDescriptors, IN UINT NumberOfDescriptors,
IN UINT ProtocolReservedLength); IN UINT ProtocolReservedLength);
#define PROTOCOL_RESERVED_SIZE_IN_PACKET (4 * sizeof(PVOID))
NDISAPI NDISAPI
VOID VOID
NTAPI NTAPI
@ -1739,6 +1740,46 @@ NdisGetFirstBufferFromPacket(
OUT PUINT _FirstBufferLength, OUT PUINT _FirstBufferLength,
OUT PUINT _TotalBufferLength); OUT PUINT _TotalBufferLength);
/*
* VOID
* NdisGetFirstBufferFromPacketSafe(
* IN PNDIS_PACKET _Packet,
* OUT PNDIS_BUFFER * _FirstBuffer,
* OUT PVOID * _FirstBufferVA,
* OUT PUINT _FirstBufferLength,
* OUT PUINT _TotalBufferLength),
* IN MM_PAGE_PRIORITY _Priority)
*/
#define NdisGetFirstBufferFromPacketSafe(_Packet, \
_FirstBuffer, \
_FirstBufferVA, \
_FirstBufferLength, \
_TotalBufferLength, \
_Priority) \
{ \
PNDIS_BUFFER _Buffer; \
\
_Buffer = (_Packet)->Private.Head; \
*(_FirstBuffer) = _Buffer; \
if (_Buffer != NULL) \
{ \
*(_FirstBufferVA) = MmGetSystemAddressForMdlSafe(_Buffer, _Priority); \
*(_FirstBufferLength) = MmGetMdlByteCount(_Buffer); \
_Buffer = _Buffer->Next; \
*(_TotalBufferLength) = *(_FirstBufferLength); \
while (_Buffer != NULL) { \
*(_TotalBufferLength) += MmGetMdlByteCount(_Buffer); \
_Buffer = _Buffer->Next; \
} \
} \
else \
{ \
*(_FirstBufferVA) = 0; \
*(_FirstBufferLength) = 0; \
*(_TotalBufferLength) = 0; \
} \
}
NDISAPI NDISAPI
VOID VOID
NTAPI NTAPI
@ -2973,6 +3014,13 @@ NdisAllocatePacketPoolEx(
IN UINT NumberOfOverflowDescriptors, IN UINT NumberOfOverflowDescriptors,
IN UINT ProtocolReservedLength); IN UINT ProtocolReservedLength);
NDISAPI
VOID
NTAPI
NdisSetPacketPoolProtocolId(
IN NDIS_HANDLE PacketPoolHandle,
IN UINT ProtocolId);
NDISAPI NDISAPI
VOID VOID
NTAPI NTAPI
@ -4781,15 +4829,15 @@ NDISAPI
VOID VOID
NTAPI NTAPI
NdisMSetPeriodicTimer( NdisMSetPeriodicTimer(
IN PNDIS_MINIPORT_TIMER Timer, IN PNDIS_MINIPORT_TIMER Timer,
IN UINT MillisecondPeriod); IN UINT MillisecondPeriod);
NDISAPI NDISAPI
VOID VOID
NTAPI NTAPI
NdisMCancelTimer( NdisMCancelTimer(
IN PNDIS_MINIPORT_TIMER Timer, IN PNDIS_MINIPORT_TIMER Timer,
OUT PBOOLEAN TimerCancelled); OUT PBOOLEAN TimerCancelled);
#if !defined(NDIS_WRAPPER) #if !defined(NDIS_WRAPPER)