Share via


NdisMIndicateStatus 함수(ndis.h)

참고 NDIS 5. x 는 더 이상 사용되지 않으며 NDIS 6으로 대체됩니다. x. 새로운 NDIS 드라이버 개발은 Windows Vista부터 시작하는 네트워크 드라이버를 참조하세요. NDIS 5 포팅에 대한 자세한 내용입니다. x 드라이버를 NDIS 6에 연결합니다. x, NDIS 5.x 드라이버를 NDIS 6.0으로 포팅을 참조하세요.

NdisMIndicateStatus는 NIC의 상태 상위 수준 NDIS 드라이버에 대한 변경 내용을 나타냅니다.

구문

void NdisMIndicateStatus(
  [in] NDIS_HANDLE MiniportHandle,
  [in] NDIS_STATUS GeneralStatus,
  [in] PVOID       StatusBuffer,
  [in] UINT        StatusBufferSize
);

매개 변수

[in] MiniportHandle

MiniportInitialize에 원래 입력된 핸들을 지정합니다.

[in] GeneralStatus

NIC에 대한 상태 일반적인 변경을 나타내는 NDIS_STATUS_ XXX 값을 지정합니다.

[in] StatusBuffer

일반 통계의 값에 따라 중간 특정 데이터를 포함하는 호출자가 할당한 버퍼에 대한 포인터입니다. 상태 변경에 대한 자세한 정보를 나타냅니다.

[in] StatusBufferSize

StatusBuffer에서 버퍼의 크기(바이트)를 지정합니다.

반환 값

없음

설명

미니포트 드라이버가 NdisMIndicateStatus를 호출하면 NDIS는 각 바인딩된 프로토콜의 ProtocolStatus 함수를 호출합니다. 이렇게 하면 바인딩된 프로토콜 드라이버 또는 구성 관리자가 기본 NIC의 상태 변경 사항을 기록하거나 수정 작업을 수행할 수 있습니다. 예를 들어 프로토콜은 표시된 NDIS_STATUS_ 따라 NdisReset을 호출할 수 있습니다.

미니포트 드라이버가 NdisMIndicateStatus를 호출하여 NIC 상태 변경 사항을 보고하는 경우 NDIS는 MiniportReset 함수를 호출하여 NIC를 작업 조건으로 복원할 수 있습니다. 이러한 상황에서 NDIS는 미니포트 드라이버가 나타내는 GeneralStatus 가 아닌 NDIS_STATUS_RESET_START 이상에서만 NDIS_STATUS_RESET_END 사용하여 바인딩된 프로토콜을 호출할 수 있습니다.

NdisMIndicateStatus 는 다음 두 가지 정보를 제공합니다.

  • 상태 일반적인 변경을 나타내는 전체 상태 값입니다.
  • 네트워크별일 수 있는 일반적인 변경의 특정 이유입니다. 예를 들어 링 삽입 실패는 토큰 링(802.5) 네트워크에만 해당하지만 이더넷(802.3) NIC 및 해당 드라이버와는 관련이 없습니다.

또한 미니포트 드라이버는 NdisMIndicateStatus 를 호출하여 실수로 제거된 후 다시 삽입된 케이블 또는 일시적으로 실패한 링과 같은 문제를 나타낼 수 있습니다. 예를 들어 다음 조건이 모두 발생한다고 가정해 보겠습니다.

  • 미니포트 드라이버는 NDIS_STATUS_RING_STATUS 사용하여 NdisMIndicateStatus 를 호출합니다.

  • StatusBuffer에는 다음 상태 값 중 하나가 포함됩니다.

    • NDIS_RING_LOBE_WIRE_FAULT
    • NDIS_RING_HARD_ERROR NDIS_RING_SIGNAL_LOSS

상태 이러한 변경이 표시와 함께 신호를 받은 후 연결된 임계값 또는 통계 카운터는 변경되지 않은 상태로 유지됩니다.

미니포트 드라이버는 MiniportISR, MiniportHalt 또는 MiniportShutdown 함수의 컨텍스트에서 NdisMIndicateStatus 호출할 수 없습니다. 역직렬화된 미니포트 드라이버만 MiniportInitialize 함수의 컨텍스트에서 NdisMIndicateStatus를 호출할 수 있습니다.

미니포트 드라이버는 NdisMIndicateStatus를 호출하기 전에 보유하고 있는 스핀 잠금을 해제해야 합니다.

NdisMIndicateStatus의 직렬화된 호출자는 IRQL = DISPATCH_LEVEL 실행해야 합니다. NdisMIndicateStatus의 역직렬화된 호출자는 IRQL <= DISPATCH_LEVEL 실행해야 합니다.

네트워크 연결의 손실 및 복원 표시

미니포트 드라이버가 네트워크 연결이 끊어졌는지 감지하면 NDIS_STATUS_MEDIA_DISCONNECT NdisMIndicateStatus 를 호출해야 합니다. 연결이 복원되면 미니포트 드라이버는 NDIS_STATUS_MEDIA_CONNECT NdisMIndicateStatus 를 호출해야 합니다.

참고 802.11 미니포트 드라이버는 네트워크 연결 표시를 생성할 때 무선 란에 대한 미디어 상태 지침을 따라야 합니다. 이러한 지침에 대한 자세한 내용은 802.11 네트워크에 대한 미디어 상태 표시를 참조하세요.

802.11 NdisMIndicateStatus에 무선 LAN 미니포트 드라이버 호출

802.11 WLAN(무선 LAN) 미니포트 드라이버는 WLAN 미디어와 관련된 다양한 표시를 할 수 있습니다. 예를 들어 미니포트 드라이버는 다음이 발생할 때 WLAN 관련 표시를 할 수 있습니다.

  • 드라이버는 현재 BSS 연결의 수신된 신호 강도가 변경되었음을 감지합니다.
  • 드라이버는 수신된 패킷에서 TKIP MIC 오류를 감지합니다.

NdisMIndicateStatus를 사용하는 802.11 미니포트 드라이버에서 다음과 같은 유형의 WLAN 관련 표시를 수행할 수 있습니다.

이러한 미디어 관련 표시에 대한 자세한 내용은 802.11 Media-Specific 상태 표시를 참조하세요.

NdisMIndicateStatus에 대한 WAN 미니포트 드라이버 호출

대부분의 WAN NIC 드라이버는 몇 가지 특수 상태 코드 및 버퍼 내용이 포함된 상태 나타냅니다. 이러한 상태 표시는 WAN NIC 드라이버에 의해 생성되며, 이러한 미니포트 드라이버에 바인딩된 NDIS 프로토콜 드라이버는 이러한 표시를 무시할 수 있습니다. 그러나 이러한 표시를 올바르게 처리하면 일반적으로 프로토콜 및 WAN NIC 드라이버의 성능이 향상됩니다.

NdisMIndicateStatus를 사용하여 바인딩된 프로토콜 드라이버에 다음과 같은 4가지 유형의 WAN 관련 표시를 보낼 수 있습니다.

  • 줄 위로
  • 줄 아래로
  • Fragment
  • TAPI 줄 이벤트

NDIS_STATUS_WAN_LINE_UP

WAN 미니포트 드라이버는 새 링크가 활성화될 때마다 라인업 표시를 합니다. 이 문제가 발생할 때까지 NIC는 프레임을 수락하고 성공하거나 실패하게 하지만 실제로 원격 노드에서 수신될 가능성은 낮습니다. 이 문제가 발생할 때까지 프로토콜은 타이머를 줄이고 재시도 횟수를 줄여 나가는 연결 시도에 빠르게 실패해야 합니다.

WAN 미니포트 드라이버는 OID_TAPI_GET_ID 요청에서 반환되기 전에 NdisMIndicateStatus를 사용하여 이 표시를 수행합니다.

라인업 표시에 대한 상태 코드는 NDIS_STATUS_WAN_LINE_UP. StatusBuffer의 버퍼는 NDIS_MAC_LINE_UP 구조체로 서식이 지정됩니다.

NDIS_STATUS_WAN_LINE_DOWN

WAN 미니포트 드라이버는 링크가 다운 될 때마다 라인다운 표시를 합니다. 이 경우 바인딩된 프로토콜은 타이머를 줄이고 다음 라인업 표시까지 다시 시도해야 합니다.

줄 바꿈 표시에 대한 상태 코드가 NDIS_STATUS_WAN_LINE_DOWN. StatusBuffer의 버퍼는 NDIS_MAC_LINE_DOWN 구조체로 형식이 지정됩니다.

NDIS_STATUS_WAN_FRAGMENT

WAN 미니포트 드라이버는 원격 노드에서 부분 패킷을 받을 때마다 조각 표시를 합니다. 이 경우 바인딩된 프로토콜은 시간 초과가 발생할 때까지 기다리지 않고 이 상황을 알리는 프레임을 원격 노드로 보내야 합니다.

조각 표시에 대한 상태 코드가 NDIS_STATUS_WAN_FRAGMENT. StatusBuffer의 버퍼는 NDIS_MAC_FRAGMENT 구조체로 형식이 지정됩니다.

NDISWAN은 각 링크의 조각 표시 수를 계산하여 삭제된 패킷을 모니터링합니다.

NDIS_TAPI_EVENT

WAN 미니포트 드라이버는 TAPI 상태 표시에 NDIS_STATUS_TAPI_INDICATION GeneralStatus 값을 사용해야 합니다.StatusBuffer의 버퍼는 NDIS_TAPI_EVENT 구조체로 형식이 지정됩니다.

  • 대상 플랫폼: 유니버설
  • 버전: Windows Vista의 NDIS 6.0 드라이버에는 지원되지 않습니다. 대신 NdisMIndicateStatusEx를 사용합니다. Windows Vista 및 Windows XP에서 NDIS 5.1 드라이버에 대해 지원됩니다.

요구 사항

요구 사항
헤더 ndis.h(Ndis.h 포함)
라이브러리 Ndis.lib

추가 정보