DO_DEVICE_INITIALIZING 플래그 지우기

필터 디바이스 개체를 파일 시스템 또는 볼륨에 연결한 후 항상 필터 디바이스 개체의 DO_DEVICE_INITIALIZING 플래그를 지워야 합니다. (이 플래그에 대한 자세한 내용은 커널 참조의 DEVICE_OBJECT 참조하세요.) ntifs.h에 정의된 ClearFlag 매크로를 사용하여 다음과 같이 수행할 수 있습니다.

ClearFlag(NewDeviceObject->Flags, DO_DEVICE_INITIALIZING);

필터 디바이스 개체를 만들 때 IoCreateDevice 는 디바이스 개체에서 DO_DEVICE_INITIALIZING 플래그를 설정합니다. 필터가 성공적으로 연결되면 이 플래그를 지워야 합니다. 이 플래그가 지워지지 않으면 IoAttachDeviceToDeviceStackSafe 에 대한 호출이 실패하므로 더 이상 필터 드라이버가 필터 체인에 연결할 수 없습니다.

참고 I/O 관리자가 자동으로 수행하므로 DriverEntry에서 만든 디바이스 개체에서 DO_DEVICE_INITIALIZING 플래그를 지울 필요는 없습니다. 그러나 드라이버가 만드는 다른 모든 디바이스 개체에서 이 플래그를 지워야 합니다.