영어로 읽기

다음을 통해 공유


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 대상의 부모 개체가 디바이스 개체인 경우 프레임워크는 대상을 닫고 부모 개체를 삭제할 때 대상 개체를 삭제합니다.) 대상에 보류 중인 자식 요청 개체가 있는 경우 드라이버는 WdfIoTargetClose 호출해야 WdfObjectDelete안전하게 호출할 수 있습니다.

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