Object-Based
Microsoft Windows NT 기반 운영 체제는 개체 기반입니다. 경영진의 다양한 구성 요소는 하나 이상의 개체 형식을 정의합니다. 각 구성 요소는 해당 개체 형식의 인스턴스를 조작하는 커널 모드 지원 루틴을 내보냅니다. 어떤 구성 요소도 다른 구성 요소의 개체에 직접 액세스할 수 없습니다. 다른 구성 요소의 개체를 사용하려면 구성 요소가 내보낸 지원 루틴을 호출해야 합니다.
이 설계를 통해 운영 체제는 이식 가능하고 유연할 수 있습니다. 예를 들어 운영 체제의 향후 릴리스에는 동일한 개체 형식을 정의하지만 내부 구조가 완전히 다른 리코딩된 커널 구성 요소가 포함될 수 있습니다. 이 가상의 리코딩된 버전의 커널이 기존 집합과 동일한 이름 및 매개 변수를 가진 지원 루틴 집합을 내보내는 경우 내부 변경 내용은 기존 시스템의 다른 임원 구성 요소의 이식성에 영향을 주지 않습니다.
마찬가지로 이식 가능하고 구성 가능한 상태를 유지하려면 드라이버는 WDK에 설명된 지원 루틴 및 기타 인터페이스만 사용하여 운영 체제 및 서로 통신해야 합니다.
운영 체제와 마찬가지로 드라이버도 개체 기반입니다. 예:
파일 개체 는 디바이스에 대한 사용자 모드 애플리케이션의 연결을 나타냅니다.
디바이스 개체는 각 드라이버의 논리적, 가상 또는 물리적 디바이스를 나타냅니다.
드라이버 개체는 각 드라이버의 부하 이미지를 나타냅니다.
I/O 관리자는 파일 개체, 디바이스 개체 및 드라이버 개체에 대한 구조와 인터페이스를 정의합니다.
다른 임원 구성 요소와 마찬가지로 드라이버는 I/O 관리자 및 기타 시스템 구성 요소가 내보내는 커널 모드 지원 루틴을 호출하여 개체를 사용합니다. 커널 모드 지원 루틴에는 일반적으로 각 루틴이 조작하는 특정 개체와 각 루틴이 해당 개체에서 수행하는 작업을 식별하는 이름이 있습니다. 이러한 지원 루틴 이름은 다음과 같은 형식입니다.
PrefixOperationObject
where
접두사 지원 루틴을 내보내는 커널 모드 구성 요소와 일반적으로 개체 형식을 정의한 구성 요소를 식별합니다. 대부분의 접두사에는 두 글자가 있습니다.
작업 개체에 대해 수행하는 작업을 설명합니다.
개체 개체의 형식을 식별합니다.
예를 들어 I/O 관리자의 IoCreateDevice 루틴은 I/O 요청의 대상으로 물리적, 논리적 또는 가상 디바이스를 나타내는 디바이스 개체를 만듭니다.
한 시스템 구성 요소는 다른 구성 요소의 지원 루틴을 호출하는 루틴을 내보낼 수 있습니다. 이렇게 하면 드라이버가 수행해야 하는 호출 수가 줄어들 수 있습니다. 특히 I/O 관리자는 드라이버를 더 쉽게 개발할 수 있는 특정 루틴을 내보냅니다. 예를 들어, 가장 낮은 수준의 드라이버가 ISR을 등록하기 위해 를 호출하는 IoConnectInterruptEx는 인터럽트 개체에 대한 커널 지원 루틴을 호출합니다.
개체 불투명도
일부 시스템 정의 개체는 불투명합니다. 정의 시스템 구성 요소만 이러한 개체의 내부 구조를 인식하고 개체에 포함된 모든 데이터에 직접 액세스할 수 있습니다. 불투명 개체 내보내기를 정의하는 시스템 구성 요소는 드라이버 및 기타 커널 모드 구성 요소가 해당 개체를 조작하기 위해 호출할 수 있는 루틴을 지원합니다. 드라이버는 불투명 개체 구조에 직접 액세스하지 않습니다.
참고 드라이버 이식성을 유지하려면 드라이버는 시스템 제공 지원 루틴을 사용하여 시스템 정의 개체를 조작해야 합니다. 정의 시스템 구성 요소는 언제든지 개체 형식의 내부 구조를 변경할 수 있습니다.