簡體   English   中英

c++/C 中以太網 ip 中的 eth_dr 是什么?

[英]What is eth_dr in ethernet ip in c++/C?

我想在驅動程序模塊中編寫一行代碼以獲得對移動寬帶的支持。 這是代碼:

   PUCHAR pCurrData;

   struct eth_hdr *pEthHeader = (struct eth_hdr*)pCurrData;
   NET_BUFFER_LIST_INFO(pNBL, NetBufferListFrameType) = (PVOID)(ULONG_PTR)pEthHeader->type;

    switch( pEthHeader->type ){

        case PP_HTONS(ETHTYPE_IP):

             NdisSetNblFlag(pNBL, 0x00000200 /*NDIS_NBL_FLAGS_IS_IPV4*/);

         break;

            }

所以我懷疑,什么是struct eth_hdr 我包含哪個頭文件? 所以我應該把這個結構定義為我自己的?

在 google 上稍微搜索一下就會從 GitHub 上的 repo返回這些精確的行

使用 repo 上的 GitHub 搜索功能返回這些行

/** Ethernet header */
struct eth_hdr {
#if ETH_PAD_SIZE
  PACK_STRUCT_FIELD(u8_t padding[ETH_PAD_SIZE]);
#endif
  PACK_STRUCT_FIELD(struct eth_addr dest);
  PACK_STRUCT_FIELD(struct eth_addr src);
  PACK_STRUCT_FIELD(u16_t type);
} PACK_STRUCT_STRUCT;
PACK_STRUCT_END
#ifdef PACK_STRUCT_USE_INCLUDES
#  include "arch/epstruct.h"
#endif

這似乎僅描述了具有 MAC 目標、MAC 源和以太網類型的以太網幀的一部分。

您應該注意到該代碼是直接從bootkit (即Caberp )中提取的,它在內核網絡驅動程序堆棧中注入了一個網絡驅動程序。 我不認為這種代碼是了解如何制作 NDIS 驅動程序的良好開端。

WDK 上有足夠多的優秀 NDIS 驅動程序示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM