私はパッケージをそらすために、次のフィルタを使用しようとしていますが、それは失敗します。Windivertフィルタエラー:IfIdx
WinDivertOpen("IfIdx == X", WINDIVERT_LAYER::WINDIVERT_LAYER_NETWORK, 0, 0);
私はそのインデックスX(0である特定のインターフェイスからのトラフィックをそらすために持っているプログラムを味わっています、1、2、...)、エラーコード番号87が表示されます。これは、無効なパケットフィルタ文字列、レイヤー、優先度、またはフラグを示します。
「tcp」のような他のフィルタを使用しようとすると動作しますが、インデックスを知っている特定のインターフェイスにフィルタを適用するだけで済みます。このフィルタキーが機能しない場合、どのような解決策ができますか。ここで
はドキュメントです:https://reqrypt.org/windivert-doc.html#filter_language
よろしくとお願いします。
編集:私はこの試みた:
handle = WinDivertOpen("true", WINDIVERT_LAYER::WINDIVERT_LAYER_NETWORK, 0, 0);
if (handle == INVALID_HANDLE_VALUE)
printf("ERROR WINDIVERT: %d", GetLastError());
else
{
while (TRUE)
{
if (WinDivertRecv(handle, packet, sizeof(packet), &addr, &packetLen))
{
if (addr.IfIdx != X)
{
WinDivertSend(handle, packet, packetLen, &addr, NULL);
}
}
}
WinDivertClose(handle);
をしかし、それはすべてのインターフェイスのトラフィックをブロックし、唯一の指標であるX.