What does DO_DEVICE_INITIALIZING really do?

DO_DEVICE_INITIALIZING 플래그는 대체 뭘하는 거야??
일반적으로 드라이버에서 장치객체를 생성한 후 장치객체의 플래그에서 DO_DEVICE_INITIALIZING 를 클리어 해주는데…
왜? 무엇때문에??? [WinHEC 2005 Kernel Mode Basics Tip 중에서]

– IoCreateDevice 함수가 장치 객체를 생성하는 순간 I/O Manager 는 이 장치 객체의 플래그(flags) 필드를 DO_DEVICE_INITIALIZING으로 설정한다. 이는 장치객체가 생성되는 과정 동안 이 장치로의 I/O가 일어나는 것을 막기 위해서이다.

– DO_DEVICE_INITIALIZING 플래그가 설정되면 I/O Manager는 다른 윈도우 컴포넌트들(다른 드라이버나 App 등)이 그 장치에 대한 CreateFile, OpenFile, IoGetDeviceObjectPointer 를 막는다. 단, Plug & Play Request 나 상위 레벨 드라이버의 Request를 막지는 않는다.

– DriverEntry에서 생성한 장치 객체의 DO_DEVICE_INITIALIZING 플래그는 I/O Manager가 클리어 하지만, 다른 루틴(AddDevice 루틴 등)에서 생성한 것은 드라이버가(개발자가) 클리어 해 주어야 한다.

– Legacy Driver(Non Plug & Play)는 장치객체를 DriverEngry 에서 생성하지만, Plug & Play Driver는 보통 AddDevice 루틴에서 생성한다.(여기서 장치객체는 Device Stack 상에 Attach 할 장치 객체를 말함). 참고로 Plug & Play Driver도 Control Device Object(Application 과 통신을 위한 장치 객체)는 DriverEntry 에서 생성한다

What does DO_DEVICE_INITIALIZING really do?”에 대한 28개의 생각

  1. 핑백: Weatherbeeta Orican Freestyle Standard Neck Lite

  2. 핑백: Weatherbeeta Orican Freestyle Standard Neck Lite

  3. 핑백: Weatherbeeta Orican Freestyle Standard Neck Lite

  4. 핑백: Orican Dog Black And Gold Blanket Size 32 In

  5. 핑백: Kashi Tlc Chewy Granola Bar Trail Mix 6 Pack

  6. 핑백: Kashi Tlc Chewy Granola Bar Trail Mix 6 Pack

  7. 핑백: Wire Gauge Drills Short Length 26s 1470

  8. 핑백: Weatherbeeta Orican Freestyle Standard Neck Lite

  9. 핑백: homepage

  10. 핑백: homepage

  11. 핑백: homepage

  12. 핑백: how to get faster at running

  13. 핑백: Cool page

  14. 핑백: cool page

  15. 핑백: provillus women

  16. 핑백: fake pussy

  17. 핑백: cell phone lookup

  18. 핑백: reverse phone lookup

  19. 핑백: binary options signals

  20. 핑백: t8 bulbs

  21. 핑백: オンラインカジノ

  22. 핑백: reverse phone lookup cell free name

  23. 핑백: mouse click the next web site

  24. 핑백: gift cards buy

  25. 핑백: minecraftcodes.org

  26. 핑백: e1evationpartners.com

  27. 핑백: free codes 2013

  28. 핑백: working wii Points codes

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다