Что такое eth_dr в ethernet ip в 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 ? какой заголовочный файл я включаю? поэтому я должен определить эту структуру как свою собственную?

-1

Решение

Поиск немного в Google возвращает эти точные линии из репо на GitHub.

Использование функции поиска 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

Это, кажется, описывает только часть сеть Ethernet с MAC Dest, источником MAC и Ethertype.

Вы должны заметить, что этот код извлекается непосредственно из буткит (а именно Caberp) которые, помимо прочего, внедряют сетевой драйвер в стек сетевых драйверов ядра. Я не думаю, что такого рода код является хорошим началом для понимания того, как должен создаваться драйвер NDIS.

На WDK достаточно хороших примеров драйверов NDIS для начала.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]