Aracılığıyla paylaş


GetBestRoute2 işlevi

GetBestRoute2 işlevi, belirtilen hedef IP adresine en iyi yol için yerel bilgisayardaki IP yolu girdisini alır.

Sözdizimi

NETIOAPI_API GetBestRoute2(
  _In_opt_       NET_LUID            *InterfaceLuid,
  _In_           NET_IFINDEX         InterfaceIndex,
  _In_opt_ const SOCKADDR_INET       *SourceAddress,
  _In_     const SOCKADDR_INET       *DestinationAddress,
  _In_           ULONG               AddressSortOptions,
  _Out_          PMIB_IPFORWARD_ROW2 BestRoute,
  _Out_          SOCKADDR_INET       *BestSourceAddress
);

Parametre

  • InterfaceLuid [in, isteğe bağlı]
    Bir IP yolu girişiyle ilişkili ağ arabirimini belirtmek için yerel olarak benzersiz tanımlayıcı (LUID).

  • InterfaceIndex [in]
    Bir IP yolu girişiyle ilişkili ağ arabirimini belirtmek için yerel dizin değeri. Bir ağ bağdaştırıcısı devre dışı bırakılıp etkinleştirildiğinde veya başka koşullar altında bu dizin değeri değişebilir, bu nedenle bu değer kalıcı olmaz.

  • sourceaddress [in, optional]
    Kaynak IP adresi. Sürücünüz bu parametreyi atlayabilir ve NULL işaretçisi geçirebilir.

  • DestinationAddress [in]
    Hedef IP adresi.

  • AddressSortOptions [in]
    IP adreslerinin sıralanma şeklini etkileyen bir dizi seçenek. Bu parametre şu anda kullanılmıyor.

  • BestRoute [out]
    Kaynak IP adresinden hedef IP adresine en iyi yol için MIB_IPFORWARD_ROW2 yapısının işaretçisi.

  • BestSourceAddress [out]
    En iyi kaynak IP adresine yönelik bir işaretçi.

Dönüş değeri

getbestroute2 işlevin başarılı olması durumunda STATUS_SUCCESS döndürür.

İşlev başarısız olursa GetBestRoute2 aşağıdaki hata kodlarından birini döndürür:

İade kodu Açıklama
STATUS_INVALID_PARAMETER

İşleve geçersiz bir parametre geçirildi. DestinationAddress, BestSourceAddressveya BestRoute parametrelerinde NULL işaretçisi geçirilirse bu hata döndürülür. InterfaceLuid ve InterfaceIndex parametreleri belirtilmemişse de bu hata döndürülür. DestinationAddress parametresi bir IPv4 veya IPv6 adresi ve ailesi belirtmiyorsa da bu hata döndürülür

STATUS_NOT_FOUND

Belirtilen arabirim bulunamadı. InterfaceLuid veya InterfaceIndex parametresinin belirttiği ağ arabirimi bulunamazsa bu hata döndürülür.

STATUS_NOT_SUPPORTED

İstek desteklenmiyor. Yerel bilgisayarda IPv4 yığını yoksa ve DestinationAddress parametresinde bir IPv4 adresi ve ailesi belirtildiyse veya yerel bilgisayarda IPv6 yığını yoksa ve DestinationAddress parametresinde bir IPv4 adresi ve ailesi belirtildiyse bu hata döndürülür.

Diğer

Döndürülen hatanın ileti dizesini almak için FormatMessage işlevini kullanın.

Açıklamalar

GetBestRoute2 işlevi, kaynak IP adresinden hedef IP adresine en iyi yol için MIB_IPFORWARD_ROW2 yapı girişi almak için kullanılır.

Girişte, sürücünüz aşağıdaki parametreleri başlatmalıdır.

  • DestinationAddress
    Geçerli bir IPv4 veya IPv6 adresi ve ailesi olarak ayarlayın.

  • InterfaceLuid veya InterfaceIndex
    Bu parametreler daha önce listelenen sırayla kullanılır. Bu nedenle InterfaceLuid belirtilirse, arabirimi belirlemek için bu parametre kullanılır. InterfaceLuid üyesi için hiçbir değer ayarlanmadıysa (bu parametrenin değeri sıfır olarak ayarlandı), arabirimi belirlemek için InterfaceIndex parametresi kullanılır.

Ayrıca, girişte, sürücünüz tercih edilen IPv4 veya IPv6 adresi ve ailesi için sourceAddress parametresini başlatabilir.

Çıktıda, çağrı başarılı olduğunda GetBestRoute2 hedef IP adresinden en iyi yol için bir MIB_IPFORWARD_ROW2 yapısı alır.

Gereksinim -leri

Hedef platform

Evrensel

Sürüm

Windows Vista ve Windows işletim sistemlerinin sonraki sürümlerinde kullanılabilir.

Üstbilgi

Netioapi.h (Netioapi.h içerir)

Kütüphane

Netio.lib

IRQL

< DISPATCH_LEVEL

Ayrıca bkz.

CreateIpForwardEntry2

DeleteIpForwardEntry2

GetIpForwardEntry2

GetIpForwardTable2

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

NotifyRouteChange2

SetIpForwardEntry2