考虑以下结构声明:
typedef struct
{
UINT8 HdrLength:4;
UINT8 Version:4;
UINT8 TOS;
UINT16 Length;
UINT16 Id;
UINT16 FragOff0;
UINT8 TTL;
UINT8 Protocol;
UINT16 Checksum;
UINT32 SrcAddr;
UINT32 DstAddr;
} WINDIVERT_IPHDR, *PWINDIVERT_IPHDR;
在末尾声明了“*PWINDIVERT_IPHDR”,我以前从未见过这种写法。看起来它只是一个指向WINDIVERT_IPHDR结构体的指针类型声明。我的假设是正确的吗?如果是,那么这段代码:
extern BOOL WinDivertHelperParsePacket(PVOID pPacket, UINT packetLen,
PWINDIVERT_IPHDR *ppIpHdr, PWINDIVERT_IPV6HDR *ppIpv6Hdr,
PWINDIVERT_ICMPHDR *ppIcmpHdr, PWINDIVERT_ICMPV6HDR *ppIcmpv6Hdr,
PWINDIVERT_TCPHDR *ppTcpHdr, PWINDIVERT_UDPHDR *ppUdpHdr, PVOID *ppData,
UINT *pDataLen)
具体来说,PWINDIVERT_IPHDR *ppIpHdr
是指方法参数 "ppIpHdr" 实际上是一个指向指针的指针吗?