Должна быть причина, по которой уведомления не доставляются или не обрабатываются. Я бы сосредоточился там в первую очередь. Однако, не имея источника, это трудно определить.
В противном случае, в отношении TDI_QUERY_INFORMATION:
Используйте макрос TdiBuildQueryInformation, передавая в QType TDI_QUERY_ADDRESS_INFO. 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 Kernel (WSK), либо на Windows Filtering Platform (WFP).
Ядро Винсока
http://msdn.microsoft.com/en-us/library/windows/hardware/ff571083%28v=vs.85%29.aspx
Платформа фильтрации Windows
http://msdn.microsoft.com/en-us/library/windows/hardware/ff571068%28v=vs.85%29.aspx
Надеюсь это поможет.
person
Jeff
schedule
23.04.2014