WdfDeviceInitSetRemoveLockOptions 함수(wdfdevice.h)

[KMDF에만 적용]

WdfDeviceInitSetRemoveLockOptions 메서드는 프레임워크가 드라이버에 모든 형식의 IRP를 제공하기 전에 제거 잠금을 획득하도록 합니다.

구문

void WdfDeviceInitSetRemoveLockOptions(
  [in] PWDFDEVICE_INIT          DeviceInit,
  [in] PWDF_REMOVE_LOCK_OPTIONS Options
);

매개 변수

[in] DeviceInit

WDFDEVICE_INIT 구조체에 대한 호출자 제공 포인터입니다.

[in] Options

WDF_REMOVE_LOCK_OPTIONS 구조체에 대한 포인터입니다.

반환 값

없음

설명

기본적으로 프레임워크는 다음 주요 유형의 IRP를 드라이버에 전달하기 전에 제거 잠금을 획득합니다.

IRP_MJ_PNP
IRP_MJ_POWER
IRP_MJ_SYSTEM_CONTROL

IRP가 완료되면 프레임워크는 제거 잠금을 해제합니다.

KMDF 1.11부터 드라이버는 필요에 따라 WdfDeviceInitSetRemoveLockOptions 를 호출하여 프레임워크가 위에 나열된 형식뿐만 아니라 모든 IRP 형식을 제공하기 전에 제거 잠금을 획득하도록 할 수 있습니다.

드라이버에 디바이스의 PnP 상태로 동기화되지 않은 I/O를 보내는 커널 모드 클라이언트가 있는 경우 프레임워크 디바이스 개체가 제거된 후 I/O IRP가 도착하여 충돌이 발생할 수 있습니다. 이 경우 WdfDeviceInitSetRemoveLockOptions를 호출할 수 있습니다. 그런 다음 클라이언트가 디바이스에 I/O 요청을 보낼 때 다음을 수행합니다.

  • 디바이스가 아직 제거되지 않은 경우 제거 잠금이 성공적으로 획득되고 요청이 전달됩니다. 제거가 나중에 발생하면 프레임워크는 모든 성공적인 잠금 획득이 해제될 때까지 차단되는 IoReleaseRemoveLockAndWait 을 호출합니다(I/O 요청이 완료됨).
  • 디바이스가 이미 IRP_MN_REMOVE_DEVICE 처리했지만 디바이스가 해제되지 않도록 하는 WDM 디바이스 개체에 대한 미해결 참조가 있는 경우 제거 잠금이 획득되지 않고 프레임워크가 요청을 즉시 완료합니다.
참고WdfDeviceInitSetRemoveLockOptions 는 컨트롤 개체에서 지원되지 않습니다.
 
일반적으로 드라이버는 WdfDeviceCreate를 호출하기 직전에 EvtDriverDeviceAdd 콜백 함수 내에서 WdfDeviceInitSetRemoveLockOptions를 호출합니다.

드라이버가 WdfDeviceInitSetRemoveLockOptions를 호출한 후에도 프레임워크 디바이스 개체의 수명 동안 설정이 계속 적용됩니다.

잠금 제거에 대한 자세한 내용은 잠금 제거 사용을 참조하세요.

예제

이 코드 예제에서는 WDF_REMOVE_LOCK_OPTIONS 구조를 초기화하고 WdfDeviceInitSetRemoveLockOptions를 호출합니다.


WDF_REMOVE_LOCK_OPTIONS RemoveLockOptions;

WDF_REMOVE_LOCK_OPTIONS_INIT(
                             &RemoveLockOptions,
                             WDF_REMOVE_LOCK_OPTION_ACQUIRE_FOR_IO
                             );
WdfDeviceInitSetRemoveLockOptions(
                                  DeviceInit,
                                  &RemoveLockOptions
                                  );

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.11
머리글 wdfdevice.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(프레임워크 라이브러리 버전 관리 참조)
IRQL <= DISPATCH_LEVEL
DDI 규정 준수 규칙 DriverCreate(kmdf)

추가 정보

WDF_REMOVE_LOCK_OPTIONS

WDF_REMOVE_LOCK_OPTIONS_FLAGS

WDF_REMOVE_LOCK_OPTIONS_INIT