EVT_SPB_TARGET_DISCONNECT 콜백 함수(spbcx.h)
SPB 컨트롤러 드라이버의 EvtSpbTargetDisconnect 이벤트 콜백 함수는 드라이버의 EvtSpbTargetConnect 이벤트 콜백 함수에 대한 호출로 이전에 열린 대상 디바이스에 대한 연결을 닫습니다.
통사론
EVT_SPB_TARGET_DISCONNECT EvtSpbTargetDisconnect;
void EvtSpbTargetDisconnect(
[in] WDFDEVICE Controller,
[in] SPBTARGET Target
)
{...}
매개 변수
[in] Controller
SPB 컨트롤러를 나타내는 프레임워크 디바이스 개체 대한 WDFDEVICE 핸들입니다.
[in] Target
닫을 대상에 대한 SPBTARGET 핸들입니다. 대상은 버스에 연결된 주변 장치 또는 포트입니다. SPB 프레임워크 확장(SpbCx)은 이전에 대상에 대한 연결을 연 EvtSpbTargetConnect 콜백의 대상에 이 핸들을 할당했습니다.
반환 값
없음
발언
SPB 컨트롤러 드라이버에서 이 함수를 구현하는 것은 선택 사항입니다.
SpbCx는 SPB 컨트롤러에 대한 I/O 큐를 관리합니다. SPB 컨트롤러 드라이버가 EvtSpbTargetDisconnect 콜백 함수를 등록하는 경우 SpbCx는 컨트롤러 드라이버의 클라이언트(주변 드라이버)가 SPBTARGET 핸들을 닫기 위한 IRP_MJ_CLOSE 요청을 보낼 때 이 함수를 호출합니다. 이 핸들은 클라이언트가 이전 IRP_MJ_CREATE 요청에서 연 버스의 대상 디바이스에 대한 연결을 나타냅니다. EvtSpbTargetDisconnect 함수가 오류 코드를 반환하는 경우 SpbCx는 IRP_MJ_CLOSE 요청에 실패합니다.
EvtSpbTargetDisconnect 함수는 클라이언트에서 시작한 모든 I/O 작업이 종료된 후와 클라이언트가 컨트롤러를 잠금 해제한 후(클라이언트가 이전에 컨트롤러를 잠근 경우) 클라이언트의 닫는 스레드 컨텍스트에서 동기적으로 호출됩니다.
SPB 컨트롤러 드라이버가 I/O 요청을 할당하고 대상 디바이스에 대한 I/O 요청 체인의 다음 하위 드라이버로 보낸 경우 EvtSpbTargetDisconnect 함수는 반환되기 전에 이러한 요청을 취소해야 합니다.
클라이언트 드라이버의 DispatchCleanup 및 CreateProcessNotifyEx 콜백 루틴은 EvtSpbTargetDisconnect 콜백이 반환된 후 언제든지 호출할 수 있습니다. 클라이언트 드라이버의 프로세스가 종료되면 CreateProcessNotifyEx 루틴은 프로세스를 종료하기 위한 마지막 스레드 바로 전에 호출됩니다.
EvtSpbTargetDisconnect 콜백 함수를 등록하려면 SpbDeviceInitialize 메서드를 호출합니다.
예제
EvtSpbTargetDisconnect 콜백 함수를 정의하려면 먼저 정의하는 콜백 함수의 형식을 식별하는 함수 선언을 제공해야 합니다. Windows는 드라이버에 대한 콜백 함수 형식 집합을 제공합니다. 콜백 함수 형식을 사용하여 함수를 선언하면 드라이버 , SDV(정적 드라이버 검증 도구) 및 기타 확인 도구에 대한 코드 분석을데 도움이 되며 Windows 운영 체제용 드라이버를 작성하기 위한 요구 사항입니다.
예를 들어 MyEvtSpbTargetDisconnect
명명된 EvtSpbTargetDisconnect 콜백 함수를 정의하려면 이 코드 예제와 같이 EVT_SPB_TARGET_DISCONNECT 함수 형식을 사용합니다.
EVT_SPB_TARGET_DISCONNECT MyEvtSpbTargetDisconnect;
그런 다음 다음과 같이 콜백 함수를 구현합니다.
_Use_decl_annotations_
VOID
MyEvtSpbTargetDisconnect(
WDFDEVICE Controller,
SPBTARGET Target
)
{ ... }
EVT_SPB_TARGET_DISCONNECT 함수 형식은 Spbcx.h 헤더 파일에 정의됩니다. 코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 Use_decl_annotations 주석을 추가해야 합니다. Use_decl_annotations 주석은 헤더 파일의 EVT_SPB_TARGET_DISCONNECT 함수 형식에 적용되는 주석이 사용되는지 확인합니다. 함수 선언 요구 사항에 대한 자세한 내용은 KMDF 드라이버함수 역할 형식을 사용하여 함수 선언을 참조하세요. Use_decl_annotations대한 자세한 내용은 함수 동작 주석을참조하세요.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8부터 지원됩니다. |
대상 플랫폼 | 바탕 화면 |
헤더 | spbcx.h |
IRQL | PASSIVE_LEVEL 호출합니다. |