通知没有被传递或处理一定是有原因的。我会先集中在那里。但是,如果没有来源,那是很难确定的。
否则,与 TDI_QUERY_INFORMATION 相关:
使用传入 QType TDI_QUERY_ADDRESS_INFO 的 TdiBuildQueryInformation 宏。TDI_ADDRESS_INFO 定义传输返回请求信息的格式。
TDI_ADDRESS_INFO 包含一个 TRANSPORT_ADDRESS,其中包含 1 个或多个 TA_ADDRESS 结构。
每个 TA_ADDRESS 结构指定特定 TDI_ADDRESS_TYPE_XXX 的传输地址。传入一个 TA_IP_ADDRESS 结构,并将类型指定为 TDI_ADDRESS_TYPE_IP。
// From Tdi.h or TdiKrnl.h
#define TDI_ADDRESS_TYPE_IP ((USHORT)2) // internetwork: UDP, TCP, etc.
在 TA_IP_ADDRESS 结构中,有一个 TDI_ADDRESS_IP,其中包含端口。
typedef struct _TA_ADDRESS_IP {
LONG TAAddressCount;
struct _AddrIp {
USHORT AddressLength;
USHORT AddressType;
TDI_ADDRESS_IP Address[1];
} Address[1];
} TA_IP_ADDRESS, *PTA_IP_ADDRESS;
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
typedef struct _TDI_ADDRESS_IP {
USHORT sin_port;
ULONG in_addr;
UCHAR sin_zero[8];
} TDI_ADDRESS_IP, *PTDI_ADDRESS_IP;
看起来大多数 TDI 功能已被弃用,并将在未来版本的 Windows 中删除。因此,它们会将您指向 Winsock 内核 (WSK) 或 Windows 过滤平台 (WFP)。
Winsock 内核
http://msdn.microsoft.com/en-us/library/windows/hardware/ff571083(v=vs.85).aspx
Windows 过滤平台
http://msdn.microsoft.com/en-us/library/windows/hardware/ff571068(v=vs.85).aspx
希望这可以帮助。