window driver (2) 썸네일형 리스트형 Device Object와 Device Stack 형성 과정 Device Object 연결 관계 attachedDevice 는 연결된 DeviceObject에 대한 포인터값을 담고있고, NextDevice 는 같은 드라이버에 의해 생성된 DeviceObject의 포인터값을 담고있다. (나중에 생성된 오브젝트가 먼저 생성된 오브젝트를 가리킴)NextDevice 로 연결된 오브젝트들을 형제디바이스오브젝트라고 한다. DEVICE_OBJECT structure typedef struct _DEVICE_OBJECT { CSHORT Type; USHORT Size; LONG ReferenceCount; struct _DRIVER_OBJECT *DriverObject; struct _DEVICE_OBJECT *NextDevice; struct _DEVICE_OBJECT *At.. Buffered I/O vs Direct I/O 커널모드와 유저모드가 데이터를 교환 하는 방식에는 세가지가 있다. BUFFERED I/O : User Application의 버퍼와 크기가 같은 NonPaged SystemBuffer를 만들어서 복사하고, 커널 드라이버에서는 이 버퍼에 접근하여 Access 한다. DIRECT I/O : User Application의 버퍼를 MDL을 이용하여 전달받아 Kernel 드라이버에서 접근하는 방삭이다. 엑세스 하는동안 메모리가 잠기게된다. NEITHER I/O : UserApplication의 가상메모리의 시작주소를 Kernel드라이버에게 전달하여 접근하게 된다. 윈도우에서는 페이징 기법이 사용되므로 다른 메모리를 참조할 가능 성이 있기때문에 쓰지 않는것을 권장한다. 어떤 방식을 사용할지는 사용하는 Device.. 이전 1 다음