Share via


MINIPORT_SHUTDOWN 콜백 함수(ndis.h)

NDIS는 시스템이 종료되면 미니포트 드라이버의 MiniportShutdownEx 함수를 호출합니다. 이 함수는 미니포트를 종료 상태로 전환합니다. 여기서 다른 콜백이 발생할 수 없습니다( MiniportHaltEx 포함). 미니포트 드라이버 상태에 대한 자세한 내용은 미니포트 어댑터 상태 및 작업을 참조하세요.

참고MINIPORT_SHUTDOWN 형식을 사용하여 함수를 선언해야 합니다. 자세한 내용은 다음 예제 섹션을 참조하세요.
 

구문

MINIPORT_SHUTDOWN MiniportShutdown;

void MiniportShutdown(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] NDIS_SHUTDOWN_ACTION ShutdownAction
)
{...}

매개 변수

[in] MiniportAdapterContext

Miniport 드라이버가 MiniportInitializeEx 함수에 할당한 컨텍스트 영역에 대한 핸들입니다. 드라이버는 이 컨텍스트 영역을 사용하여 미니포트 어댑터에 대한 상태 정보를 유지 관리합니다.

[in] ShutdownAction

NDIS가 종료 함수를 호출한 이유입니다. 유효한 값은 다음과 같습니다.

NdisShutdownPowerOff

시스템이 종료되고 있으므로 NDIS가 MiniportShutdownEx 라고 했음을 나타냅니다.

NdisShutdownBugCheck

시스템 오류로 인해 NDIS가 MiniportShutdownEx 라고 했음을 나타냅니다.

반환 값

없음

설명

드라이버는 를 호출할 때 MiniportShutdownEx 진입점을 지정합니다. NdisMRegisterMiniportDriver 함수.

MiniportShutdownEx 는 미니포트 어댑터를 알려진 초기 상태로 복원합니다(미니포트 어댑터에 대한 미니포트 드라이버의 MiniportInitializeEx 함수라고 하는 NDIS 이전의 상태). 이렇게 하면 미니포트 어댑터가 알려진 상태이며 복구할 수 없는 시스템 오류를 포함하여 어떤 이유로든 시스템 종료가 발생한 후 컴퓨터를 다시 시작할 때 다시 초기화할 준비가 된 것입니다.

MiniportShutdownExNdisMGetBusData 또는 NdisMSetBusData 함수를 호출하여 I/O 포트, 메모리 매핑 디바이스 I/O 공간 또는 버스 관련 구성 공간을 읽거나 쓸 수 있습니다. DMA 엔진을 사용하지 않도록 설정하거나 인터럽트를 사용하지 않도록 설정하거나 하드웨어를 알려진 상태로 다시 설정하여 하드웨어를 안전하게 다시 시작할 수 있습니다.

복구할 수 없는 오류로 인해 NDIS가 MiniportShutdownEx 를 호출하는 경우 ShutdownAction 매개 변수는 NdisShutdownBugCheck 로 설정되고 MiniportShutdownEx 는 높은 IRQL에서 실행됩니다. 이 경우 미니포트 드라이버는 IRQL에서 호출할 수 있는 함수를 제외하고 NdisXxx 함수를 호출해서는 안 됩니다.

사용자가 시작한 종료로 인해 NDIS가 MiniportShutdownEx를 호출하는 경우 MiniportShutdownEx는 IRQL = PASSIVE_LEVEL 실행되고 미니포트 드라이버는 다른 NdisXxx 함수를 호출할 수 있습니다.

복구할 수 없는 오류로 인해 NDIS가 MiniportShutdownEx 를 호출하는 경우 ShutdownAction 매개 변수는 NdisShutdownBugCheck 로 설정되고 MiniportShutdownEx 는 높은 IRQL에서 실행됩니다. 이 경우 미니포트 드라이버는 IRQL에서 호출할 수 있는 함수를 제외하고 NdisXxx 함수를 호출해서는 안 됩니다. NDIS 6.30 미니포트부터 NDIS는 미니포트가 어댑터 등록 특성에 NDIS_MINIPORT_ATTRIBUTES_REGISTER_BUGCHECK_CALLBACK 플래그를 제공하지 않는 한 BugCheck 중에 MiniportShutdownEx를 호출하지 않습니다.

ShutdownAction 값이 NdisShutdownPowerOff인 경우 미니포트 드라이버는 필요에 따라 리소스를 해제할 수 있습니다. 그러나 시스템 종료로 인해 필요하지 않으므로 필수도 권장되지도 않습니다.

ShutdownAction 값이 NdisShutdownBugCheck인 경우 미니포트 드라이버는 리소스를 해제해서는 안 됩니다.

중요MiniportHaltEx에서 시스템 오류가 발생하면 미니포트 드라이버에 ShutdownActionNdisShutdownBugCheck를 사용하여 MiniportShutdownEx에 대한 중첩된 호출이 표시됩니다. 이 경우 MiniportShutdownEx 는 작업을 수행하지 않고 즉시 반환해야 합니다.

 

MiniportShutdownEx 함수를 정의하려면 먼저 정의할 함수의 형식을 식별하는 함수 선언을 제공해야 합니다. Windows는 드라이버에 대한 함수 형식 집합을 제공합니다. 함수 형식을 사용하여 함수를 선언하면 드라이버에 대한 코드 분석, SDV( 정적 드라이버 검증 도구 ) 및 기타 확인 도구에서 오류를 찾는 데 도움이 되며 Windows 운영 체제용 드라이버를 작성하기 위한 요구 사항입니다.

예를 들어 " MyShutdownEx"라는 MiniportShutdownEx 함수를 정의하려면 다음 코드 예제와 같이 MINIPORT_SHUTDOWN 형식을 사용합니다.

MINIPORT_SHUTDOWN MyShutdownEx;

그런 다음 다음과 같이 함수를 구현합니다.

_Use_decl_annotations_
VOID
 MyShutdownEx(
    NDIS_HANDLE  MiniportAdapterContext,
    NDIS_SHUTDOWN_ACTION  ShutdownAction
    )
  {...}

MINIPORT_SHUTDOWN 함수 형식은 Ndis.h 헤더 파일에 정의되어 있습니다. 코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 Use_decl_annotations 주석을 추가해야 합니다. Use_decl_annotations 주석은 헤더 파일의 MINIPORT_SHUTDOWN 함수 형식에 적용되는 주석이 사용되도록 합니다. 함수 선언 요구 사항에 대한 자세한 내용은 NDIS 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요.

Use_decl_annotations 대한 자세한 내용은 함수 동작에 주석을 추가를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.0 이상에서 지원됩니다.
대상 플랫폼 Windows
헤더 ndis.h(Ndis.h 포함)
IRQL 설명 섹션을 참조하세요.

추가 정보

미니포트 드라이버의 어댑터 상태

미니포트 어댑터 종료

미니포트 어댑터 상태 및 작업

MiniportInitializeEx

NdisMGetBusData

NdisMRegisterMiniportDriver

NdisMSetBusData