IWDFIoRequest::MarkCancelable 메서드(wudfddi.h)
[경고: UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에는 새로운 기능이 추가되지 않으며 최신 버전의 Windows 10에서는 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다. 자세한 내용은 UMDF시작 .]을 참조하세요.
MarkCancelable 메서드를 사용하면 I/O 요청을 취소할 수 있습니다.
통사론
void MarkCancelable(
[in] IRequestCallbackCancel *pCancelCallback
);
매개 변수
[in] pCancelCallback
I/O 요청이 취소된 후 프레임워크가 호출하는 IRequestCallbackCancel 인터페이스에 대한 포인터입니다.
반환 값
없음
발언
드라이버가 IQueueCallbackRead::OnRead , IQueueCallbackWrite::OnWrite또는 IQueueCallbackDeviceIoControl::OnDeviceIoControl 이벤트 콜백 함수에 대한 입력으로 I/O 요청을 수신한 후 드라이버는 MarkCancelable 메서드를 호출하여 요청을 취소할 수 있습니다. 나중에 드라이버는 IWDFIoRequest::UnmarkCancelable 메서드를 호출하여 요청 취소를 사용하지 않도록 설정할 수 있습니다.
드라이버가 markCancelable 호출하기 전에 드라이버는 IRequestCallbackCancel::OnCancel 메서드를 구현해야 합니다.
UMDF(사용자 모드 드라이버 프레임워크)는 큐당 하나의 IRequestCallbackCancel::OnCancel 메서드를 허용합니다. 따라서 드라이버가 특정 큐와 연결된 요청에 대해 MarkCancelable 호출하여 프레임워크가 해당 요청을 취소할 수 있도록 하는 경우 드라이버는 동일한 요청 콜백 개체에 대한 IRequestCallbackCancel 인터페이스에 대한 포인터를 전달해야 합니다. 나중에 각 요청을 취소하기 위해 프레임워크는 이 요청 콜백 개체의 IRequestCallbackCancel::OnCancel 메서드에 대한 호출에서 요청에 대한 IWDFIoRequest 인터페이스에 대한 포인터를 전달합니다.
드라이버는 IRequestCallbackCancel::OnCancel 메서드 또는 일반 I/O 완료 경로에서 IWDFIoRequest::Complete호출해야 합니다.
취소를 사용하도록 설정하기 위해 MarkCancelable 호출한 후 드라이버가 취소를 사용하지 않도록 설정하기 위해 unmarkCancelable 호출하지 않는 한 드라이버가 요청 개체를 소유하고 있는 동안 요청은 취소할 수 있습니다.
드라이버가 IWDFIoRequest::ForwardToIoQueue 메서드를 호출하여 요청을 다른 큐로 전달하는 경우 다음 규칙이 적용됩니다.
-
드라이버가 요청을 다른 큐로 전달할 때 I/O 요청 취소를 사용할 수 없습니다.
일반적으로 드라이버는 IWDFIoRequest::ForwardToIoQueue호출하기 전에 요청을 취소할 수 있도록 MarkCancelable 호출해서는 안 됩니다. 또는 드라이버가 요청을 취소할 수 있도록 할 수 있습니다. 그러나 드라이버는 UnmarkCancelable 호출하여 IWDFIoRequest::ForwardToIoQueue호출하기 전에 요청 취소를 사용하지 않도록 설정해야 합니다.
- 요청이 두 번째 큐에 있는 동안 프레임워크는 요청을 소유하고 드라이버에 알리지 않고 취소할 수 있습니다.
- 프레임워크가 두 번째 큐에서 요청을 큐에서 제거하고 드라이버에 요청을 전달한 후 드라이버는 MarkCancelable 호출하여 취소를 사용하도록 설정할 수 있습니다.
예제
다음 코드 예제에서는 프레임워크에서 취소할 수 있도록 요청을 설정합니다.
//
// The QueryInteraface should not fail.
//
(VOID)this->QueryInterface(_uuidof(IRequestCallbackCancel),
(PVOID *)&cancelCallback);
pWdfRequest->MarkCancelable(cancelCallback);
요구 사항
요구 | 값 |
---|---|
지원 종료 | UMDF 2.0 이상에서는 사용할 수 없습니다. |
대상 플랫폼 | 바탕 화면 |
최소 UMDF 버전 | 1.5 |
헤더 | wudfddi.h(Wudfddi.h 포함) |
DLL | WUDFx.dll |
참고 항목
IQueueCallbackDeviceIoControl::OnDeviceIoControl
IRequestCallbackCancel::OnCancel