Учитывая следующую декларацию STRUCT:Является ли это указателем на указатель?
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» есть на самом деле указатель на указатель?
Да, это так. Вот почему его название начинается с 'pp', в конце концов. – Angew
lol @ Спасибо, должен ли я просто удалить вопрос, потому что он настолько очевиден или вы хотите опубликовать ответ? Еще раз спасибо, просто хотел быть уверенным, что я не схожу с ума. –
Да, вы должны удалить его. На самом деле нет смысла отвечать на этот вопрос вне комментария, сделанного @Angew. –