다음을 통해 공유


CreateIpForwardEntry2 함수

CreateIpForwardEntry2 함수는 로컬 컴퓨터에 새 IP 경로 항목을 만듭니다.

구문

NETIOAPI_API CreateIpForwardEntry2(
  _In_ const MIB_IPFORWARD_ROW2 *Row
);

매개 변수

  • [in]
    IP 경로 항목에 대한 MIB_IPFORWARD_ROW2 구조 항목에 대한 포인터입니다.

반환 값

CreateIpForwardEntry2 는 함수가 성공하면 STATUS_SUCCESS 반환합니다.

함수가 실패하면 CreateIpForwardEntry2 는 다음 오류 코드 중 하나를 반환합니다.

반환 코드 설명
STATUS_INVALID_PARAMETER

잘못된 매개 변수가 함수에 전달되었습니다. 이 오류는 다음 상황 중 하나가 발생하는 경우 반환됩니다.

  • NULL 포인터는 Row 매개 변수에 전달됩니다.

  • Row 매개 변수가 가리키는 MIB_IPFORWARD_ROW2 구조체의 DestinationPrefix 멤버가 지정되지 않았습니다.

  • MIB_IPFORWARD_ROW2 구조체의 NextHop 멤버가 지정되지 않았습니다.

  • MIB_IPFORWARD_ROW2 구조체의 InterfaceLuidInterfaceIndex 멤버는 모두 지정되지 않았습니다.

  • MIB_IPFORWARD_ROW2 구조체의 PreferredLifetime 멤버가 ValidLifetime 멤버보다 큽니다.

  • MIB_IPFORWARD_ROW2 구조체의 SitePrefixLength 멤버가 DestinationPrefix 멤버에 지정된 접두사 길이보다 큽니다.

이 오류는 NULL 포인터가 Row 매개 변수에 전달되거나, Row 매개 변수가 가리키는 MIB_IPFORWARD_ROW2 구조체의 DestinationPrefix 멤버를 지정하지 않았거나, MIB_IPFORWARD_ROW2 구조체의 NextHop 멤버를 지정하지 않았거나, MIB_IPFORWARD_ROW2 구조체의 InterfaceLuidInterfaceIndex 멤버를 모두 지정하지 않은 경우 반환됩니다. 이 오류는 MIB_IPFORWARD_ROW2 구조에 지정된 PreferredLifetime 멤버가 ValidLifetime 멤버보다 크거나 MIB_IPFORWARD_ROW2 구조의 SitePrefixLengthDestinationPrefix 멤버에 지정된 접두사 길이보다 큰 경우에도 반환됩니다.

STATUS_NOT_FOUND

지정된 인터페이스를 찾을 수 없습니다. 이 오류는 함수가 Row 매개 변수가 가리키는 MIB_IPNET_ROW2 구조체의 InterfaceLuid 또는 InterfaceIndex 멤버에 의해 지정된 네트워크 인터페이스를 찾을 수 없는 경우 반환됩니다.

STATUS_NOT_SUPPORTED

요청이 지원되지 않습니다. 지정된 인터페이스가 경로를 지원하지 않는 경우 이 오류가 반환됩니다. 이 오류는 로컬 컴퓨터에 IPv4 스택이 없고 Row 매개 변수가 가리키는 MIB_IPFORWARD_ROW2 구조의 DestinationPrefix 멤버의 주소 패밀리에 AF_INET 지정되었거나, 로컬 컴퓨터에 IPv6 스택이 없고 DestinationPrefix 멤버의 주소 패밀리에 대해 AF_INET6 지정한 경우 반환됩니다.

ERROR_OBJECT_ALREADY_EXISTS

개체가 이미 있습니다. 이 오류는 Row 매개 변수가 가리키는 MIB_IPFORWARD_ROW2 구조체의 DestinationPrefix 멤버가 MIB_IPFORWARD_ROW2 구조체의 InterfaceLuid 또는 InterfaceIndex 멤버로 지정된 인터페이스의 기존 IP 경로 항목과 중복된 경우 반환됩니다.

기타

FormatMessage 함수를 사용하여 반환된 오류에 대한 메시지 문자열을 가져옵니다.

설명

CreateIpForwardEntry2 함수는 로컬 컴퓨터에 새 인접 IP 주소 항목을 추가하는 데 사용됩니다. InitializeIpForwardEntry 함수를 사용하여 기본값으로 MIB_IPFORWARD_ROW2 구조체 항목의 멤버를 초기화합니다. 그런 다음 드라이버는 수정하려는 MIB_IPFORWARD_ROW2 항목의 멤버를 변경한 다음 CreateIpForwardEntry2를 호출할 수 있습니다.

드라이버는 Row 매개 변수가 가리키는 MIB_IPFORWARD_ROW2 구조체의 다음 멤버를 초기화해야 합니다.

  • DestinationPrefix를 유효한 IPv4 또는 IPv6 주소 접두사로 설정합니다.

  • NextHop을 유효한 IPv4 또는 IPv6 주소 및 패밀리로 설정합니다.

  • InterfaceLuid 또는 InterfaceIndex를 인터페이스의 LUID 또는 인덱스 값으로 설정합니다.

InterfaceLuidInterfaceIndex 멤버는 이전에 나열된 순서대로 사용됩니다. 따라서 InterfaceLuid 가 지정된 경우 이 멤버는 IP 경로 항목을 추가할 인터페이스를 결정하는 데 사용됩니다. InterfaceLuid 멤버에 대해 값이 설정되지 않은 경우(이 멤버의 값이 0으로 설정됨) InterfaceIndex 멤버는 인터페이스를 결정하는 데 다음에 사용됩니다.

Row 매개 변수가 가리키는 MIB_IPFORWARD_ROW2 구조체의 메트릭 멤버에 지정된 경로 메트릭 오프셋은 전체 경로 메트릭의 일부만 나타냅니다. 전체 메트릭은 연결된 인터페이스의 MIB_IPINTERFACE_ROW 구조의 메트릭 멤버에 지정된 인터페이스 메트릭에 추가된 이 경로 메트릭 오프셋의 조합입니다. 드라이버는 GetIpInterfaceEntry 함수를 호출하여 인터페이스 메트릭을 검색할 수 있습니다.

CreateIpForwardEntry2 함수가 호출될 때 Row 매개 변수가 가리키는 MIB_IPFORWARD_ROW2 구조체의 AgeOrigin 멤버는 무시됩니다. 이러한 멤버는 네트워크 스택에 의해 설정되며 CreateIpForwardEntry2 함수를 사용하여 설정할 수 없습니다.

Row 매개 변수가 가리키는 MIB_IPFORWARD_ROW2 구조의 DestinationPrefixNextHop 멤버가 InterfaceLuid 또는 InterfaceIndex 멤버에 지정된 인터페이스의 기존 IP 경로 항목과 중복되는 경우 CreateIpForwardEntry2 함수가 실패합니다.

요구 사항

대상 플랫폼

유니버설

버전

Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.

헤더

Netioapi.h(Netioapi.h 포함)

라이브러리

Netio.lib

Irql

< DISPATCH_LEVEL

추가 정보

DeleteIpForwardEntry2

GetBestRoute2

GetIpForwardEntry2

GetIpForwardTable2

GetIpInterfaceEntry

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

MIB_IPINTERFACE_ROW

NotifyRouteChange2

SetIpForwardEntry2