WdfIoTargetClose 함수(wdfiotarget.h)
[KMDF 및 UMDF에 적용]
WdfIoTargetClose 메서드는 지정된 원격 I/O 대상을 닫습니다.
구문
void WdfIoTargetClose(
[in] WDFIOTARGET IoTarget
);
매개 변수
[in] IoTarget
WdfIoTargetCreate에 대한 이전 호출에서 가져온 I/O 대상 개체에 대한 핸들입니다.
반환 값
없음
설명
드라이버가 잘못된 개체 핸들을 제공하는 경우 버그 검사 발생합니다.
드라이버가 WdfIoTargetClose를 호출한 후 WdfIoTargetOpen을 호출하여 원격 I/O 대상을 다시 열 수 있습니다.
EvtIoTargetRemoveComplete 콜백 함수를 제공하는 드라이버는 해당 콜백 함수 내에서 WdfIoTargetClose를 호출해야 합니다.
WdfIoTargetClose 메서드가 반환되기 전에 프레임워크는 대상 큐의 모든 I/O 요청을 취소합니다.
드라이버가 원격 I/O 대상 사용을 완료하고 대상을 다시 사용하지 않고 대상에 아직 보류 중인 자식 요청 개체가 없는 경우 드라이버는 먼저 WdfIoTargetClose를 호출하지 않고 WdfObjectDelete를 호출할 수 있습니다. WdfObjectDelete 호출은 원격 I/O 대상을 닫고, 대상 큐의 모든 I/O 요청을 취소하고, I/O 대상 개체를 삭제합니다. (원격 I/O 대상의 부모 개체가 디바이스 개체인 경우 프레임워크는 대상을 닫고 부모 개체를 삭제할 때 대상 개체를 삭제합니다.) 대상에 아직 보류 중인 자식 요청 개체가 있는 경우 드라이버는 WdfObjectDelete를 안전하게 호출하기 전에 WdfIoTargetClose를 호출해야 합니다.
WdfIoTargetClose에 대한 자세한 내용은 일반 I/O 대상의 상태 제어를 참조하세요.
I/O 대상에 대한 자세한 내용은 I/O 대상 사용을 참조하세요.
예제
다음 코드 예제는 드라이버의 I/O 대상 컬렉션에서 지정된 I/O 대상을 제거한 다음 I/O 대상을 닫는 EvtIoTargetRemoveComplete 콜백 함수입니다.
VOID
MyEvtIoTargetRemoveComplete(
WDFIOTARGET IoTarget
)
{
//
// Get device information from the I/O target object's
// context space.
//
targetDeviceInfo = GetTargetDeviceInfo(IoTarget);
deviceExtension = targetDeviceInfo->DeviceExtension;
//
// Remove the target device from the collection.
//
WdfWaitLockAcquire(
deviceExtension->TargetDeviceCollectionLock,
NULL
);
WdfCollectionRemove(
deviceExtension->TargetDeviceCollection,
IoTarget
);
WdfWaitLockRelease(deviceExtension->TargetDeviceCollectionLock);
//
// Close the target.
//
WdfIoTargetClose(IoTarget);
}
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
최소 KMDF 버전 | 1.0 |
최소 UMDF 버전 | 2.0 |
머리글 | wdfiotarget.h(Wdf.h 포함) |
라이브러리 | Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF) |
IRQL | PASSIVE_LEVEL |
DDI 규정 준수 규칙 | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |