Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Funktionen CreateUnicastIpAddressEntry lägger till en ny unicast-IP-adresspost på den lokala datorn.
Syntax
NETIOAPI_API CreateUnicastIpAddressEntry(
_In_ const MIB_UNICASTIPADDRESS_ROW *Row
);
Parametrar
-
rad [in]
En pekare till en MIB_UNICASTIPADDRESS_ROW strukturpost för en unicast-IP-adresspost.
Returvärde
CreateUnicastIpAddressEntry returnerar STATUS_SUCCESS om funktionen lyckas.
Om funktionen misslyckas returnerar CreateUnicastIpAddressEntry någon av följande felkoder:
| Returnera kod | Beskrivning |
|---|---|
| STATUS_INVALID_PARAMETER | En ogiltig parameter skickades till funktionen. Det här felet returneras om en NULL- pekare skickas i parametern Rad. Adress medlem i den MIB_UNICASTIPADDRESS_ROW struktur som Rad parametern pekar på inte har angetts till en giltig unicast IPv4- eller IPv6-adress, eller både InterfaceLuid och InterfaceIndex medlemmar i MIB_UNICASTIPADDRESS_ROW-strukturen var ospecificerade. Det här felet returneras också för andra fel i de värden som anges för medlemmar i MIB_UNICASTIPADDRESS_ROW-strukturen. Dessa fel omfattar följande situationer:
Möjliga värden för NL_PREFIX_ORIGIN- och NL_SUFFIX_ORIGIN-uppräkningar finns i MIB_UNICASTIPADDRESS_ROW. |
| STATUS_NOT_FOUND | Det gick inte att hitta det angivna gränssnittet. Det här felet returneras om funktionen inte kan hitta nätverksgränssnittet som anges av InterfaceLuid eller InterfaceIndex medlem i den MIB_UNICASTIPADDRESS_ROW struktur som rad parameter pekar på. |
| STATUS_NOT_SUPPORTED | Begäran stöds inte. Det här felet returneras om ingen IPv4-stack finns på den lokala datorn och en IPv4-adress angavs i adress medlem i den MIB_UNICASTIPADDRESS_ROW struktur som Rad parameter pekar på, eller om ingen IPv6-stack finns på den lokala datorn och en IPv6-adress angavs i adress medlem. |
| ERROR_OBJECT_ALREADY_EXISTS | Objektet finns redan. Det här felet returneras om Adress medlem i den MIB_UNICASTIPADDRESS_ROW struktur som rad parametern pekar på är en dubblett av en befintlig unicast IP-adress i gränssnittet som anges av InterfaceLuid eller InterfaceIndex medlem i MIB_UNICASTIPADDRESS_ROW. |
| Andra | Använd funktionen FormatMessage för att hämta meddelandesträngen för det returnerade felet. |
Anmärkningar
Använd funktionen InitializeUnicastIpAddressEntry för att initiera medlemmar i en MIB_UNICASTIPADDRESS_ROW strukturpost med standardvärden. En drivrutin kan sedan ändra medlemmarna i posten MIB_UNICASTIPADDRESS_ROW som den vill ändra och sedan anropa funktionen CreateUnicastIpAddressEntry.
Vid indata måste drivrutinen initiera följande medlemmar i den MIB_UNICASTIPADDRESS_ROW struktur som rad parametern pekar på.
adress
Ange till en giltig unicast IPv4- eller IPv6-adress och -familj.InterfaceLuid eller InterfaceIndex
Dessa medlemmar används i den ordning som anges tidigare. Så om InterfaceLuid anges används den här medlemmen för att fastställa vilket gränssnitt som unicast-IP-adressen ska läggas till i. Om inget värde har angetts för InterfaceLuid medlem (värdet för den här medlemmen har angetts till noll) används InterfaceIndex medlem för att fastställa gränssnittet.
Om OnLinkPrefixLength medlem i den MIB_UNICASTIPADDRESS_ROW struktur som rad parametern pekar på är inställd på 255 CreateUnicastIpAddressEntry lägger till den nya unicast-IP-adressen med OnLinkPrefixLength medlem som är lika med LÄNGDEN på IP-adressen. Så för en unicast IPv4-adress är OnLinkPrefixLength inställd på 32 och OnLinkPrefixLength är inställd på 128 för en unicast IPv6-adress. Om den här inställningen skulle resultera i en felaktig nätmask för en IPv4-adress eller det felaktiga länkprefixet för en IPv6-adress, bör drivrutinen ange OnLinkPrefixLength medlem till rätt värde innan CreateUnicastIpAddressEntry.
Om en unicast-IP-adress skapas med OnLinkPrefixLength medlem felaktigt inställd kan drivrutinen ändra IP-adressen genom att anropa SetUnicastIpAddressEntry med OnLinkPrefixLength medlem inställd på rätt värde.
Funktionen DadState, ScopeIdoch CreationTimeStamp medlemmar i den MIB_UNICASTIPADDRESS_ROW struktur som Rad parameter pekar på ignoreras när funktionen CreateUnicastIpAddressEntry anropas. Dessa medlemmar anges av nätverksstacken. ScopeId- medlem bestäms automatiskt av gränssnittet som adressen läggs till på.
Funktionen CreateUnicastIpAddressEntry misslyckas om den unicast-IP-adress som skickas i -adressen medlem i den MIB_UNICASTIPADDRESS_ROW struktur som rad parameter pekar på är en dubblett av en befintlig unicast-IP-adress i gränssnittet. Observera att drivrutinen endast kan lägga till en loopback-IP-adress i ett loopback-gränssnitt med hjälp av funktionen CreateUnicastIpAddressEntry.
Den unicast-IP-adress som skickas i -adressen medlem i den MIB_UNICASTIPADDRESS_ROW struktur som rad parametern pekar på kan inte användas omedelbart. IP-adressen kan användas när processen för identifiering av dubbletter av adresser har slutförts. Det kan ta flera sekunder innan dubblet av adressidentifieringen har slutförts eftersom IP-paket måste skickas och potentiella svar måste väntas. För IPv6 tar processen för dubblet av adressidentifiering vanligtvis cirka 1 sekund. För IPv4 tar processen för duplicerad adressidentifiering vanligtvis cirka 3 sekunder.
När en drivrutin anropar funktionen CreateUnicastIpAddressEntry kan den använda följande metoder för att avgöra om en IP-adress fortfarande kan användas:
Använd avsökning och funktionen GetUnicastIpAddressEntry
När anropet till funktionen CreateUnicastIpAddressEntry returneras, pausa i 1 till 3 sekunder (beroende på om en IPv6- eller IPv4-adress skapas) för att ge tid för att slutföra identifieringsprocessen för dupliceringsadressen. Anropa sedan GetUnicastIpAddressEntry för att hämta den uppdaterade MIB_UNICASTIPADDRESS_ROW-strukturen och granska värdet för DadState- medlem. Om värdet för DadState-medlemmen har angetts till IpDadStatePreferred kan IP-adressen nu användas. Om värdet för DadState-medlemmen har angetts till IpDadStateTentative har identifieringen av duplicerade adresser ännu inte slutförts. I det här fallet anropar du funktionen GetUnicastIpAddressEntry igen var 0,5:e sekund medan DadState medlem fortfarande är inställd på IpDadStateTentative. Om värdet för DadState--medlemmen returnerar med något annat värde än IpDadStatePreferred- eller IpDadStateTentative, har identifieringen av duplicerade adresser misslyckats och IP-adressen kan inte användas.Anropa en av IP-hjälpfunktionerna NotifyXxx för att konfigurera ett asynkront meddelande för när en adress ändras
När anropet till funktionen CreateUnicastIpAddressEntry returneras anropar du funktionen NotifyUnicastIpAddressChange för att registrera drivrutinen som ska meddelas om ändringar i antingen IPv6- eller IPv4 unicast-IP-adresser, beroende på vilken typ av IP-adress som skapas. När ett meddelande tas emot för den IP-adress som skapas anropar du funktionen GetUnicastIpAddressEntry för att hämta DadState- medlem. Om värdet för DadState-medlemmen har angetts till IpDadStatePreferred kan IP-adressen nu användas. Om värdet för DadState-medlemmen har angetts till IpDadStateTentative har identifieringen av duplicerade adresser ännu inte slutförts och drivrutinen måste vänta på framtida meddelanden. Om värdet för DadState--medlemmen returnerar med något annat värde än IpDadStatePreferred- eller IpDadStateTentative, har identifieringen av duplicerade adresser misslyckats och IP-adressen kan inte användas.Om mediet kopplas från under processen för identifiering av dubbletter av adresser och sedan återansluts startas processen för dubblettadressidentifiering om. Tiden för att slutföra processen kan därför öka utöver det typiska värdet på 1 sekund för IPv6 eller 3 sekunders värde för IPv4.
Krav
Målplattform |
Universell |
Version |
Finns i Windows Vista och senare versioner av Windows-operativsystemen. |
Rubrik |
Netioapi.h (inkludera Netioapi.h) |
Bibliotek |
Netio.lib |
IRQL |
< DISPATCH_LEVEL |
Se även
InitializeUnicastIpAddressEntry