PROTOCOL_UNINSTALL 콜백 함수(ndis.h)
NDIS는 프로토콜 드라이버의 ProtocolUninstall 함수를 호출하여 프로토콜 드라이버를 제거하기 전에 정리 작업을 수행합니다.
구문
PROTOCOL_UNINSTALL ProtocolUninstall;
void ProtocolUninstall()
{...}
반환 값
없음
설명
ProtocolUninstall 함수는 선택 사항입니다. 프로토콜 드라이버는 의 이 함수에 대한 진입점(있는 경우)을 등록했습니다. 에 전달된 NDIS_PROTOCOL_DRIVER_CHARACTERISTICS 구조체 NdisRegisterProtocolDriver 함수.
프로토콜 드라이버를 제거하라는 사용자 요청에 대한 응답으로 NDIS는 프로토콜 드라이버의 ProtocolUninstall 함수를 호출합니다. NDIS는 프로토콜 드라이버의 를 호출한 후 ProtocolUninstall 을 호출합니다.각 바인딩된 어댑터에 대해 ProtocolUnbindAdapterEx 함수가 한 번 작동합니다.
ProtocolUninstall 은 드라이버 결정 정리 작업을 수행합니다. 예를 들어 ProtocolUninstall 은 프로토콜 드라이버가 내보낸 디바이스 개체에 대한 열린 핸들을 닫도록 클라이언트에 요청할 수 있습니다. 이러한 모든 핸들을 닫을 때까지 I/O 관리자는 드라이버 개체에 등록된 프로토콜 드라이버가 DriverEntry 루틴에 전달한 Unload 루틴을 호출하지 않습니다. 모든 핸들이 닫힌 후 ProtocolUninstall 은 NdisDeregisterDeviceEx 를 호출하여 프로토콜 드라이버에서 만든 모든 디바이스 개체를 삭제할 수 있습니다.
중간 드라이버의 프로토콜 아래쪽 가장자리에는 ProtocolUninstall 함수가 필요할 수 있습니다. 중간 드라이버는 NDIS가 MiniportDriverUnload 함수를 호출하기 전에 ProtocolUninstall에서 프로토콜 에지 리소스를 해제할 수 있습니다.
NDIS는 IRQL = PASSIVE_LEVEL ProtocolUninstall 을 호출합니다.
예
ProtocolUninstall 함수를 정의하려면 먼저 정의 중인 함수의 형식을 식별하는 함수 선언을 제공해야 합니다. Windows는 드라이버에 대한 함수 형식 집합을 제공합니다. 함수 형식을 사용하여 함수를 선언하면 드라이버에 대한 코드 분석, SDV( 정적 드라이버 검증 도구 ) 및 기타 확인 도구에서 오류를 찾을 수 있으며 Windows 운영 체제용 드라이버를 작성하기 위한 요구 사항입니다.예를 들어 " MyUninstall"이라는 ProtocolUninstall 함수를 정의하려면 다음 코드 예제와 같이 PROTOCOL_UNINSTALL 형식을 사용합니다.
PROTOCOL_UNINSTALL MyUninstall;
그런 다음 다음과 같이 함수를 구현합니다.
_Use_decl_annotations_
VOID
MyUninstall(void)
{...}
PROTOCOL_UNINSTALL 함수 형식은 Ndis.h 헤더 파일에 정의되어 있습니다. 코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 Use_decl_annotations 주석을 추가해야 합니다. Use_decl_annotations 주석은 헤더 파일의 PROTOCOL_UNINSTALL 함수 형식에 적용되는 주석이 사용되도록 합니다. 함수 선언 요구 사항에 대한 자세한 내용은 NDIS 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요.
Use_decl_annotations 대한 자세한 내용은 함수 동작 주석 지정을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | NDIS 6.0 이상에서 지원됩니다. |
대상 플랫폼 | Windows |
헤더 | ndis.h(Ndis.h 포함) |
IRQL | PASSIVE_LEVEL |