드라이버 대상 과 장치 프로그램 대상

DRIVER_OBJECT 는 드라이버 가 커 널 에 있 는 데이터 구조 로 드라이버 마다 유일한 DRIVER 가 있 습 니 다.OBJECT, IO 관리 자 는 드라이버 대상 을 사용 하여 모든 장치 드라이버 를 대표 합 니 다. 드라이버 대상 은 하나의 DeviceObject 도 메 인 이 장치 대상 링크 를 가리 키 고 모든 장치 대상 은 하나의 장 치 를 대표 합 니 다.
DEVICE_OBJECT 는 물리 장치 나 논리 장치 가 커 널 에 있 는 데이터 구조 로 이 개념 과 관련 된 것 은 PDO 와 FDO 가 있다.PDO 는 구체 적 인 하드웨어 설비 에 대응 하고 모든 하드웨어 설 비 는 하나의 PDO 에 대응 하 며 하나의 PDO 는 여러 개의 FDO 에 대응 할 수 있다.PDO 와 FDO 는 모두 DEVICEOBJECT 의 실체;
typedef struct _DRIVER_OBJECT
{
        CSHORT      Type;
        CSHORT      Size;
        //이 드라이브 가 만 든 모든 장치 대상 을 기록 하 는 링크
        PDEVICE_OBJECT  DeiceObject;
        ULONG  Flags;
        PVOID DriverStart;
        ULONG DriverSize;
        PVOID DriverSection;
        PDRIVER_EXTENSION DriverExtension;
        UNICODE_STRING DriverName;
        PUNICODE_STRING HardwareDataBase;
        PFAST_IO_DISPATCH FastIoDispatch;
        PDRIVER_INITIALIZE DriverInit;
        PDRIVER_STARTIO DriverStartIo;
        PDRIVER_UNLOAD DriverUnload;
        PDRIVER_DISPAT
        CH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION];
}DRIVER_OBJECT;
 
struct DEVICE_OBJECT
 
typedef struct _DEVICE_OBJECT
{
     SHORT Type;
     WORD Size;
     LONG ReferenceCount;
     PDRIVER_OBJECT DriverObject;
     PDEVICE_OBJECT NextDevice;
     PDEVICE_OBJECT AttachedDevice;
     PIRP CurrentIrp;
     PIO_TIMER Timer;
     ULONG Flags;
     ULONG Characteristics;
     PVPB Vpb;
     PVOID DeviceExtension;
     ULONG DeviceType;
     CHAR StackSize;
     BYTE Queue[40];
     ULONG AlignmentRequirement;
     KDEVICE_QUEUE DeviceQueue;
     KDPC Dpc;
     ULONG ActiveThreadCount;
     PVOID SecurityDescriptor;
     KEVENT DeviceLock;
     WORD SectorSize;
     WORD Spare1;
     PDEVOBJ_EXTENSION DeviceObjectExtension;
     PVOID Reserved;
} DEVICE_OBJECT

같은 장치 드라이버 대상 의 모든 장 치 는 NextObject 도 메 인 을 통 해 하나의 링크 로 연결 합 니 다 (즉, 상기 드라이버 장치 대상 의 도 메 인).DriverObject 도 메 인 은 이 장치 와 관련 된 드라이버 대상 을 가리 키 고 있 습 니 다.

좋은 웹페이지 즐겨찾기