第一个CONTAINING_RECORD&NPORT_RECV_PACKET_RSVD得到了NPROT_RECT_PACKET_RSVD.link的地址,因为NPROT_RECT_PACKET_RSVD存于NDIS_PACKET.ProtocolReserved处,所以NPROT_RECT_PACKET_RSVD.link的地址就NDIS_PACKET结构中最后一个成员ProtocolReserved的地址。
第一个CONTAINING_RECORD&NDIS_PACKET得到了NDIS_PACKET结构的首地址,因为第一个CONTAINING_RECORD返回的正是ProtocolReserved的地址,再用该地址减去结构体成员ProtocolReserved到首地址的距离(&NDIS_PACKET.ProtocolReserved)就得到了包描述符的首地址。