다음을 통해 공유


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)

추가 정보

EvtIoTargetRemoveComplete

WdfIoTargetCreate