Aracılığıyla paylaş


CreateUnicastIpAddressEntry işlevi

CreateUnicastIpAddressEntry işlevi yerel bilgisayara yeni bir tek noktaya yayın IP adresi girişi ekler.

Sözdizimi

NETIOAPI_API CreateUnicastIpAddressEntry(
  _In_ const MIB_UNICASTIPADDRESS_ROW *Row
);

Parametre

  • Satır [in]
    Tek noktaya yayın IP adresi girişi için MIB_UNICASTIPADDRESS_ROW yapı girdisine yönelik bir işaretçi.

Dönüş değeri

CreateUnicastIpAddressEntry, işlev başarılı olursa STATUS_SUCCESS döndürür.

İşlev başarısız olursa CreateUnicastIpAddressEntry 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. Satırı parametresinde bir NULL işaretçisi geçirilirse bu hata döndürülür. Satırı parametresinin işaretdiği MIB_UNICASTIPADDRESS_ROW yapısının Adresi üyesi geçerli bir tek noktaya yayın IPv4 veya IPv6 adresine ayarlanmamış ya da MIB_UNICASTIPADDRESS_ROW yapısının InterfaceLuid ve InterfaceIndex üyeleri belirtilmemişti.

Bu hata, MIB_UNICASTIPADDRESS_ROW yapısındaki üyeler için ayarlanan değerlerdeki diğer hatalar için de döndürülür. Bu hatalar aşağıdaki durumları içerir:

  • ValidLifetime üyesi, PreferredLifetime üyeden küçüktür.

  • PrefixOrigin üyesi IpPrefixOriginUnchanged ve SuffixOrigin IpSuffixOriginUnchanged olarak ayarlanmadı.

  • PrefixOrigin üyesi IpPrefixOriginUnchanged ve SuffixOrigin ipSuffixOriginUnchanged olarak ayarlanır.

  • PrefixOrigin üyesi NL_PREFIX_ORIGIN numaralandırmasından bir değere ayarlanmadı.

  • SuffixOrigin üyesi NL_SUFFIX_ORIGIN numaralandırmasından bir değere ayarlanmadı.

  • OnLinkPrefixLength üyesi, bit cinsinden IP adresi uzunluğundan büyük bir değere ayarlanır (tek noktaya yayın IPv4 adresi için 32 veya tek noktaya yayın IPv6 adresi için 128).

NL_PREFIX_ORIGIN ve NL_SUFFIX_ORIGIN numaralandırmalarının olası değerleri için bkz. MIB_UNICASTIPADDRESS_ROW.

STATUS_NOT_FOUND

Belirtilen arabirim bulunamadı. İşlev, Satırı parametresinin işaret ettiği MIB_UNICASTIPADDRESS_ROW yapısının InterfaceLuid veya InterfaceIndex üyesi tarafından belirtilen ağ arabirimini bulamazsa bu hata döndürülür.

STATUS_NOT_SUPPORTED

İstek desteklenmiyor. Yerel bilgisayarda IPv4 yığını yoksa ve Satırı parametresinin işaret MIB_UNICASTIPADDRESS_ROW yapısının Adresi üyesinde bir IPv4 adresi belirtildiyse veya yerel bilgisayarda IPv6 yığını yoksa ve Adres üyesinde bir IPv6 adresi belirtildiyse bu hata döndürülür.

ERROR_OBJECT_ALREADY_EXISTS

Nesne zaten var. Satırı parametresinin işaret ettiği MIB_UNICASTIPADDRESS_ROW yapısının Adresi üyesi, MIB_UNICASTIPADDRESS_ROW InterfaceLuid veya InterfaceIndex üyesi tarafından belirtilen arabirimde var olan tek noktaya yayın IP adresinin bir kopyasıysa 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

MIB_UNICASTIPADDRESS_ROW yapı girişinin üyelerini varsayılan değerlerle başlatmak için InitializeUnicastIpAddressEntry işlevini kullanın. Sürücü daha sonra değiştirmek istediği MIB_UNICASTIPADDRESS_ROW girdisindeki üyeleri değiştirebilir ve ardından CreateUnicastIpAddressEntry işlevini çağırabilir.

Girişte, sürücünüz Satır parametresinin işaret MIB_UNICASTIPADDRESS_ROW yapısının aşağıdaki üyelerini başlatmalıdır.

  • Adresi
    Geçerli bir tek noktaya yayın IPv4 veya IPv6 adresi ve ailesi olarak ayarlayın.

  • InterfaceLuid veya InterfaceIndex
    Bu üyeler daha önce listelenen sırayla kullanılır. Bu nedenle InterfaceLuid belirtilirse, bu üye tek noktaya yayın IP adresinin ekleneceği arabirimi belirlemek için kullanılır. InterfaceLuid üyesi için değer ayarlanmadıysa (bu üyenin değeri sıfır olarak ayarlandı), arabirimi belirlemek için InterfaceIndex üyesi kullanılır.

Satırı parametresinin işaretlediği MIB_UNICASTIPADDRESS_ROW yapısının OnLinkPrefixLength üyesi 255 olarak ayarlanırsa, CreateUnicastIpAddressEntry yeni tek noktaya yayın IP adresini OnLinkPrefixLength üye kümesi IP adresinin uzunluğuna eşit olarak ekler. Bu nedenle, tek noktaya yayın IPv4 adresi için OnLinkPrefixLength 32 ve OnLinkPrefixLength tek noktaya yayın IPv6 adresi için 128 olarak ayarlanır. Bu ayar bir IPv4 adresi için yanlış alt ağ maskesine veya bir IPv6 adresi için yanlış bağlantı ön ekine neden olursa, sürücü CreateUnicastIpAddressEntry çağırmadan önce OnLinkPrefixLength üyesini doğru değere ayarlamalıdır.

OnLinkPrefixLength üye yanlış ayarlanmış bir tek noktaya yayın IP adresi oluşturulursa, sürücünüz OnLinkPrefixLength üyenin doğru değere ayarlandığı SetUnicastIpAddressEntryçağırarak IP adresini değiştirebilir.

DadState, ScopeIdve CreationTimeStampSatır parametresinin işaret olduğu MIB_UNICASTIPADDRESS_ROW yapısının üyeleri createUnicastIpAddressEntry işlevi çağrıldığında yoksayılır. Bu üyeler ağ yığını tarafından ayarlanır. ScopeId üyesi, adresin eklendiği arabirim tarafından otomatik olarak belirlenir.

CreateUnicastIpAddressEntry işlevi, Satırı parametresinin işaret MIB_UNICASTIPADDRESS_ROW yapısının Adresi üyesine geçirilen tek noktaya yayın IP adresinin arabirimdeki mevcut bir tek noktaya yayın IP adresinin yinelemesi olması durumunda başarısız olur. Sürücünüzün geri döngü arabirimine bir geri döngü IP adresi eklemesi için createUnicastIpAddressEntry işlevini.

Satırı parametresinin işaret MIB_UNICASTIPADDRESS_ROW yapısının Adresi üyesine geçirilen tek noktaya yayın IP adresi hemen kullanılamaz. Yinelenen adres algılama işlemi başarıyla tamamlandıktan sonra IP adresi kullanılabilir. IP paketlerinin gönderilmesi ve olası yanıtların beklenilmesi gerektiğinden yinelenen adres algılama işleminin tamamlanması birkaç saniye sürebilir. IPv6 için yinelenen adres algılama işlemi genellikle yaklaşık 1 saniye sürer. IPv4 için yinelenen adres algılama işlemi genellikle yaklaşık 3 saniye sürer.

Bir sürücü CreateUnicastIpAddressEntry işlevini çağırdıktan sonra, ip adresinin hala kullanılabilir olup olmadığını belirlemek için aşağıdaki yöntemleri kullanabilir:

  • Yoklamayı ve GetUnicastIpAddressEntry işlevini kullanma
    CreateUnicastIpAddressEntry işlevine yapılan çağrı başarıyla döndürüldükten sonra, yineleme adresi algılama işleminin başarıyla tamamlanması için zaman sağlamak için 1 ile 3 saniye (bir IPv6 veya IPv4 adresi oluşturulup oluşturulmadığına bağlı olarak) duraklatın. Ardından, güncelleştirilmiş MIB_UNICASTIPADDRESS_ROW yapısını almak ve DadState üyesinin değerini incelemek için GetUnicastIpAddressEntry çağırın. DadState üyesinin değeri IpDadStatePreferred olarak ayarlandıysa, IP adresi artık kullanılabilir durumdadır. DadState üyesinin değeri IpDadStateTentative olarak ayarlandıysa, yinelenen adres algılama henüz tamamlanmamıştır. Bu durumda, DadState üyesi hala IpDadStateTentative olarak ayarlanırken her 0,5 saniyede bir GetUnicastIpAddressEntry işlevini yeniden çağırın. DadState üyesinin değeri IpDadStatePreferred veya IpDadStateTentative dışında bir değerle döndürülüyorsa, yinelenen adres algılama başarısız olmuştur ve IP adresi kullanılamaz.

  • Adres değiştiğinde zaman uyumsuz bildirim ayarlamak için IP Yardımcısı NotifyXxx bildirim işlevlerinden birini çağırın
    CreateUnicastIpAddressEntry işlevine yapılan çağrı başarıyla döndürüldükten sonra, oluşturulan IP adresinin türüne bağlı olarak IPv6 veya IPv4 tek noktaya yayın IP adreslerinde yapılan değişiklikler hakkında bildirim almak üzere sürücüyü kaydetmek için NotifyUnicastIpAddressChangeişleviniçağırın. Oluşturulan IP adresi için bir bildirim alındığında, DadState üyesini almak için GetUnicastIpAddressEntry işlevini çağırın. DadState üyesinin değeri IpDadStatePreferred olarak ayarlandıysa, IP adresi artık kullanılabilir durumdadır. DadState üyesinin değeri IpDadStateTentative olarak ayarlandıysa, yinelenen adres algılaması henüz tamamlanmamıştır ve sürücünün gelecekteki bildirimleri beklemesi gerekir. DadState üyesinin değeri IpDadStatePreferred veya IpDadStateTentative dışında bir değerle döndürülüyorsa, yinelenen adres algılama başarısız olmuştur ve IP adresi kullanılamaz.

    Yinelenen adres algılama işlemi sırasında medyanın bağlantısı kesilir ve yeniden bağlanırsa, yinelenen adres algılama işlemi yeniden başlatılır. Bu nedenle, işlemi tamamlama süresi IPv6 için tipik 1 saniye değerinin veya IPv4 için 3 saniye değerinin üzerine çıkabilir.

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.

DeleteUnicastIpAddressEntry

GetUnicastIpAddressEntry

GetUnicastIpAddressTable

InitializeUnicastIpAddressEntry

MIB_UNICASTIPADDRESS_ROW

MIB_UNICASTIPADDRESS_TABLE

NL_PREFIX_ORIGIN

NL_SUFFIX_ORIGIN

NotifyIpInterfaceChange

NotifyRouteChange2

NotifyStableUnicastIpAddressTable

NotifyTeredoPortChange

NotifyUnicastIpAddressChange

SetUnicastIpAddressEntry