⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ndis.h

📁 MinGW+MSYS开发必用的api参考
💻 H
📖 第 1 页 / 共 5 页
字号:
NDISAPIULONGDDKAPINDIS_BUFFER_TO_SPAN_PAGES(  /*IN*/ PNDIS_BUFFER  Buffer);NDISAPIVOIDDDKAPINdisFreeBuffer(  /*IN*/ PNDIS_BUFFER  Buffer);NDISAPIVOIDDDKAPINdisGetBufferPhysicalArraySize(  /*IN*/ PNDIS_BUFFER  Buffer,  /*OUT*/ PUINT  ArraySize);NDISAPIVOIDDDKAPINdisGetFirstBufferFromPacket(  /*IN*/ PNDIS_PACKET  _Packet,  /*OUT*/ PNDIS_BUFFER  *_FirstBuffer,  /*OUT*/ PVOID  *_FirstBufferVA,  /*OUT*/ PUINT  _FirstBufferLength,  /*OUT*/ PUINT  _TotalBufferLength);NDISAPIVOIDDDKAPINdisQueryBuffer(  /*IN*/ PNDIS_BUFFER  Buffer,  /*OUT*/ PVOID  *VirtualAddress /*OPTIONAL*/,  /*OUT*/ PUINT  Length);NDISAPIVOIDDDKAPINdisQueryBufferOffset(  /*IN*/ PNDIS_BUFFER  Buffer,  /*OUT*/ PUINT  Offset,  /*OUT*/ PUINT  Length);NDISAPIVOIDDDKAPINdisFreeBuffer(  /*IN*/ PNDIS_BUFFER  Buffer);/* * VOID * NdisGetBufferPhysicalArraySize( * IN PNDIS_BUFFER  Buffer, * OUT PUINT  ArraySize); */#define NdisGetBufferPhysicalArraySize(Buffer,        \                                       ArraySize)     \{                                                     \  (*(ArraySize) = NDIS_BUFFER_TO_SPAN_PAGES(Buffer))  \}/* * VOID * NdisGetFirstBufferFromPacket( * IN PNDIS_PACKET  _Packet, * OUT PNDIS_BUFFER  * _FirstBuffer, * OUT PVOID  * _FirstBufferVA, * OUT PUINT  _FirstBufferLength, * OUT PUINT  _TotalBufferLength) */#define	NdisGetFirstBufferFromPacket(_Packet,             \                                     _FirstBuffer,        \                                     _FirstBufferVA,      \                                     _FirstBufferLength,  \                                     _TotalBufferLength)  \{                                                         \  PNDIS_BUFFER _Buffer;                                   \                                                          \  _Buffer         = (_Packet)->Private.Head;              \  *(_FirstBuffer) = _Buffer;                              \  if (_Buffer != NULL)                                    \    {                                                     \	    *(_FirstBufferVA)     = MmGetSystemAddressForMdl(_Buffer);  \	    *(_FirstBufferLength) = MmGetMdlByteCount(_Buffer);	        \	    _Buffer = _Buffer->Next;                                    \		  *(_TotalBufferLength) = *(_FirstBufferLength);              \		  while (_Buffer != NULL) {                                   \		    *(_TotalBufferLength) += MmGetMdlByteCount(_Buffer);      \		    _Buffer = _Buffer->Next;                                  \		  }                                                           \    }                             \  else                            \    {                             \      *(_FirstBufferVA) = 0;      \      *(_FirstBufferLength) = 0;  \      *(_TotalBufferLength) = 0;  \    } \}/* * VOID * NdisQueryBuffer( * IN PNDIS_BUFFER  Buffer, * OUT PVOID  *VirtualAddress OPTIONAL, * OUT PUINT  Length) */#define NdisQueryBuffer(Buffer,         \                        VirtualAddress, \                        Length)         \{                                       \	if (VirtualAddress)                   \		*((PVOID*)VirtualAddress) = MmGetSystemAddressForMdl(Buffer); \                                        \	*((PUINT)Length) = MmGetMdlByteCount(Buffer); \}/* * VOID * NdisQueryBufferOffset( * IN PNDIS_BUFFER  Buffer, * OUT PUINT  Offset, * OUT PUINT  Length); */#define NdisQueryBufferOffset(Buffer,             \                              Offset,             \                              Length)             \{                                                 \  *((PUINT)Offset) = MmGetMdlByteOffset(Buffer);  \  *((PUINT)Length) = MmGetMdlByteCount(Buffer);   \}/* * PVOID * NDIS_BUFFER_LINKAGE( * IN PNDIS_BUFFER  Buffer); */#define NDIS_BUFFER_LINKAGE(Buffer)(Buffer)->Next;/* * VOID * NdisChainBufferAtBack( * IN OUT PNDIS_PACKET  Packet, * IN OUT PNDIS_BUFFER  Buffer) */#define NdisChainBufferAtBack(Packet,           \                              Buffer)           \{                                               \	PNDIS_BUFFER NdisBuffer = (Buffer);           \                                                \	while (NdisBuffer->Next != NULL)              \   NdisBuffer = NdisBuffer->Next;               \	                                              \	NdisBuffer->Next = NULL;                      \	                                              \	if ((Packet)->Private.Head != NULL)           \    (Packet)->Private.Tail->Next = (Buffer);    \	else                                          \    (Packet)->Private.Head = (Buffer);          \	                                              \	(Packet)->Private.Tail = NdisBuffer;          \	(Packet)->Private.ValidCounts = FALSE;        \}/* * VOID * NdisChainBufferAtFront( * IN OUT PNDIS_PACKET  Packet, * IN OUT PNDIS_BUFFER  Buffer) */#define NdisChainBufferAtFront(Packet,        \                               Buffer)        \{                                             \	PNDIS_BUFFER _NdisBuffer = (Buffer);        \                                              \  while (_NdisBuffer->Next != NULL)           \    _NdisBuffer = _NdisBuffer->Next;          \                                              \  if ((Packet)->Private.Head == NULL)         \    (Packet)->Private.Tail = _NdisBuffer;     \                                              \	_NdisBuffer->Next = (Packet)->Private.Head; \	(Packet)->Private.Head = (Buffer);          \	(Packet)->Private.ValidCounts = FALSE;      \}/* * VOID * NdisGetNextBuffer( * IN PNDIS_BUFFER  CurrentBuffer, * OUT PNDIS_BUFFER  * NextBuffer) */#define NdisGetNextBuffer(CurrentBuffer,  \                          NextBuffer)     \{                                         \  *(NextBuffer) = (CurrentBuffer)->Next;  \}/* * UINT * NdisGetPacketFlags( * IN PNDIS_PACKET  Packet);  */#define NdisGetPacketFlags(Packet)(Packet)->Private.Flags;/* * VOID * NdisClearPacketFlags( * IN PNDIS_PACKET  Packet, * IN UINT  Flags); */#define NdisClearPacketFlags(Packet, Flags) \  (Packet)->Private.Flags &= ~(Flags)/* * VOID * NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO( * IN PNDIS_PACKET    Packet, * IN PPVOID          pMediaSpecificInfo, * IN PUINT           pSizeMediaSpecificInfo); */#define NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(_Packet,                                  \                                            _pMediaSpecificInfo,                      \                                            _pSizeMediaSpecificInfo)                  \{                                                                                     \  if (!((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) ||            \      !((_Packet)->Private.NdisPacketFlags & fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO))   \	  {                                                                                 \	    *(_pMediaSpecificInfo) = NULL;                                                  \	    *(_pSizeMediaSpecificInfo) = 0;                                                 \	  }                                                                                 \  else                                                                                \	  {                                                                                 \	    *(_pMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +           \        (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation;           \	    *(_pSizeMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +       \	      (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo;              \	  }                                                                                 \}/* * ULONG * NDIS_GET_PACKET_PROTOCOL_TYPE( * IN PNDIS_PACKET  Packet); */#define NDIS_GET_PACKET_PROTOCOL_TYPE(_Packet) \  ((_Packet)->Private.Flags & NDIS_PROTOCOL_ID_MASK)/* * ULONG * NDIS_GET_PACKET_HEADER_SIZE( * IN PNDIS_PACKET  Packet); */#define NDIS_GET_PACKET_HEADER_SIZE(_Packet) \	((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \	(_Packet)->Private.NdisPacketOobOffset))->HeaderSize/* * NDIS_STATUS * NDIS_GET_PACKET_STATUS( * IN PNDIS_PACKET  Packet); */#define NDIS_GET_PACKET_STATUS(_Packet) \	((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \	(_Packet)->Private.NdisPacketOobOffset))->Status/* * ULONGLONG * NDIS_GET_PACKET_TIME_RECEIVED( * IN PNDIS_PACKET  Packet); */#define NDIS_GET_PACKET_TIME_RECEIVED(_Packet)  \	((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +  \	(_Packet)->Private.NdisPacketOobOffset))->TimeReceived/* * ULONGLONG * NDIS_GET_PACKET_TIME_SENT( * IN PNDIS_PACKET  Packet); */#define NDIS_GET_PACKET_TIME_SENT(_Packet)      \	((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +  \	(_Packet)->Private.NdisPacketOobOffset))->TimeSent/* * ULONGLONG * NDIS_GET_PACKET_TIME_TO_SEND( * IN PNDIS_PACKET  Packet); */#define NDIS_GET_PACKET_TIME_TO_SEND(_Packet)   \	((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) +  \	(_Packet)->Private.NdisPacketOobOffset))->TimeToSend/* * PNDIS_PACKET_OOB_DATA * NDIS_OOB_DATA_FROM_PACKET( * IN PNDIS_PACKET  Packet); */#define NDIS_OOB_DATA_FROM_PACKET(_Packet)    \  (PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \  (_Packet)->Private.NdisPacketOobOffset) /* * VOID * NdisQueryPacket( * IN PNDIS_PACKET  Packet, * OUT PUINT  PhysicalBufferCount  OPTIONAL, * OUT PUINT  BufferCount  OPTIONAL, * OUT PNDIS_BUFFER  *FirstBuffer OPTIONAL, * OUT PUINT  TotalPacketLength  OPTIONAL); */#define NdisQueryPacket(Packet,                                           \                        PhysicalBufferCount,                              \                        BufferCount,                                      \                        FirstBuffer,                                      \                        TotalPacketLength)                                \{                                                                         \  if (FirstBuffer)                                                        \    *((PNDIS_BUFFER*)FirstBuffer) = (Packet)->Private.Head;               \  if ((TotalPacketLength) || (BufferCount) || (PhysicalBufferCount))      \  {                                                                       \    if (!(Packet)->Private.ValidCounts) {                                 \      UINT _Offset;                                                       \      UINT _PacketLength;                                                 \      PNDIS_BUFFER _NdisBuffer;                                           \      UINT _PhysicalBufferCount = 0;                                      \      UINT _TotalPacketLength   = 0;                                      \      UINT _Count               = 0;                                      \                                                                          \      for (_NdisBuffer = (Packet)->Private.Head;                          \        _NdisBuffer != (PNDIS_BUFFER)NULL;                                \        _NdisBuffer = _NdisBuffer->Next)                                  \      {                                                                   \        _PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(_NdisBuffer);   \        NdisQueryBufferOffset(_NdisBuffer, &_Offset, &_PacketLength);     \        _TotalPacketLength += _PacketLength;                              \        _Count++;                                                         \      }                                                                   \      (Packet)->Private.PhysicalCount = _PhysicalBufferCount;             \      (Packet)->Private.TotalLength   = _TotalPacketLength;               \      (Packet)->Private.Count         = _Count;                           \      (Packet)->Private.ValidCounts   = TRUE;                             \	}                                                                       \                                                                          \  if (PhysicalBufferCount)                                                \      *((PUINT)PhysicalBufferCount) = (Packet)->Private.PhysicalCount;    \                                                                          \  if (BufferCount)                                                        \      *((PUINT)BufferCount) = (Packet)->Private.Count;                    \                                                                          \  if (TotalPacketLength)                                                  \      *((PUINT)TotalPacketLength) = (Packet)->Private.TotalLength;        \  } \}/* * VOID * NdisQueryPacketLength( * IN PNDIS_PACKET  Packet, * OUT PUINT  PhysicalBufferCount  OPTIONAL, * OUT PUINT  BufferCount  OPTIONAL, * OUT PNDIS_BUFFER  *FirstBuffer  OPTIONAL, * OUT PUINT  TotalPacketLength  OPTIONAL); */#define NdisQueryPacketLength(Packet,                                     \                              TotalPacketLength)                          \{                                                                         \  if ((TotalPacketLength))                                                \  {                                                                       \    if (!(Packet)->Private.ValidCounts) {                                 \      UINT _Offset;                                                       \      UINT _PacketLength;                                                 \      PNDIS_BUFFER _NdisBuffer;                                           \      UINT _PhysicalBufferCount = 0;                                      \      UINT _TotalPacketLength   = 0;                                      \      UINT _Count               = 0;                                      \                                                                          \      for (_NdisBuffer = (Packet)->Private.Head;                          \        _NdisBuffer != (PNDIS_BUFFER)NULL;                                \        _NdisBuffer = _NdisBuffer->Next)                                  \      {                                                                   \        _PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(_NdisBuffer);   \        NdisQueryBufferOffset(_NdisBuffer, &_Offset, &_PacketLength);     \        _TotalPacketLength += _PacketLength;                              \        _Count++;                                                         \      }                                                                   \      (Packet)->Private.PhysicalCount = _PhysicalBufferCount;             \      (Packet)->Private.TotalLength   = _TotalPacketLength;               \      (Packet)->Private.Count         = _Count;                           \      (Packet)->Private.ValidCounts   = TRUE;                             \  }                                                                       \                                                   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -