파일 시스템 필터 로드 순서
Windows 운영 체제는 다음을 기반으로 파일 시스템 필터 드라이버를 로드합니다.
- 드라이버의 시작 유형으로, 각 시작 유형은 시스템 부팅 단계를 나타냅니다.
- 시스템 시작 시 로드되는 파일 시스템 필터 드라이버에 대한 부하 순서 그룹입니다. 미니 필터 드라이버는 레거시 파일 시스템 필터 드라이버와의 상호 운용성을 위해 부하 순서 그룹의 개념이 필요합니다. ninifilter 드라이버는 언제든지 로드할 수 있습니다.
시스템 부팅 시퀀스 중에 파일 시스템 필터 드라이버가 로드되는 시기와 방법을 살펴보기 전에 드라이버 시작 유형 및 로드 순서 그룹을 이해해야 합니다.
드라이버 시작 유형
커널 모드 드라이버의 시작 유형 은 시스템 시작 중 또는 이후에 드라이버를 로드할지 여부를 지정합니다. 다음과 같은 다섯 가지 시작 유형이 있습니다.
시작 유형 | 설명 |
---|---|
SERVICE_BOOT_START(0x00000000) | 운영 체제(OS) 로더에서 시작한 드라이버를 나타냅니다. 파일 시스템 필터 드라이버는 일반적으로 이 시작 형식 또는 SERVICE_DEMAND_START 사용합니다. 레거시 파일 시스템 필터는 이 시작 형식을 사용해야 합니다. 자세한 내용은 파일 시스템 필터 로드 순서 그룹을 참조 하세요. |
SERVICE_SYSTEM_START(0x00000001) | OS 초기화 중에 시작된 드라이버를 나타냅니다. 이 시작 형식은 파일 시스템 인식기에서 사용됩니다. "SERVICE_DISABLED"에 나열된 파일 시스템(네트워크 파일 시스템 구성 요소 포함)을 제외하고 일반적으로 이 시작 형식 또는 SERVICE_DEMAND_START 사용합니다. 이 시작 유형은 시스템 초기화 중에 열거되지만 시스템을 로드할 필요가 없는 PnP 디바이스의 디바이스 드라이버에서도 사용됩니다. |
SERVICE_AUTO_START(0x00000002) | 시스템 시작 중에 Service Control Manager에서 시작한 드라이버를 나타냅니다. 거의 사용되지 않습니다. |
SERVICE_DEMAND_START(0x00000003) | PnP 관리자(디바이스 드라이버용) 또는 서비스 제어 관리자(파일 시스템 및 파일 시스템 필터 드라이버용)에서 요청 시 시작된 드라이버를 나타냅니다. |
SERVICE_DISABLED(0x00000004) | OS 로더, 서비스 제어 관리자 또는 PnP 관리자에서 시작하지 않은 드라이버를 나타냅니다. 파일 시스템 인식기에서 로드하는 파일 시스템(부팅 파일 시스템인 경우 제외) 또는 EFS용 다른 파일 시스템에서 사용됩니다. 이러한 파일 시스템에는 CDFS, EFS, FastFat, NTFS 및 UDFS가 포함됩니다. 디버깅하는 동안 드라이버를 일시적으로 사용하지 않도록 설정하는 데도 사용됩니다. |
SERVICE_BOOT_START 시작 유형을 지정하는 모든 드라이버는 시작 유형이 SERVICE_SYSTEM_START 또는 SERVICE_AUTO_START 드라이버 앞에 로드됩니다. 각 시작 유형 범주 내에서 부하 순서 그룹은 파일 시스템 필터 드라이버(및 레거시 필터 드라이버)가 로드되는 시기를 결정합니다.
시작 유형 지정
드라이버 작성기는 다음 방법 중 하나를 사용하여 설치 시 드라이버의 시작 유형을 지정할 수 있습니다.
드라이버의 INF 파일에서 AddService 지시문에서 참조하는 service-install-section에서 StartType 항목에 대해 원하는 시작 유형을 지정합니다. 이 메서드는 필터 드라이버에 대한 INF 파일 만들기의 ServiceInstall 섹션에 설명되어 있습니다.
사용자 모드 설치 프로그램에서 CreateService 또는 ChangeServiceConfig를 호출할 때 dwStartType 매개 변수에 대해 원하는 시작 형식을 전달합니다. 이 메서드는 Microsoft Windows SDK 설명서의 CreateService 및 ChangeServiceConfig에 대한 참조 항목에 설명되어 있습니다.
드라이버 로드 순서 그룹
SERVICE_BOOT_START 및 SERVICE_SYSTEM_START 시작 유형 내에서 각 드라이버의 부하 순서 그룹은 드라이버의 상대 순서를 지정합니다.
시작 유형이 SERVICE_BOOT_START 드라이버를 부팅(또는 부팅 시작) 드라이버라고 합니다. 부팅 드라이버인 필터는 일반적으로 FSFilter 부하 순서 그룹 중 하나에 속합니다. 이러한 부하 순서 그룹은 파일 시스템 필터 드라이버에 대한 부하 순서 그룹에 자세히 설명되어 있습니다.
시작 유형이 SERVICE_SYSTEM_START 드라이버도 속한 부하 순서 그룹의 순서대로 로드됩니다. 그러나 모든 부팅 드라이버가 로드될 때까지 시스템 시작 드라이버가 로드되지 않습니다.
시작 유형이 SERVICE_AUTO_START, SERVICE_DEMAND_START 또는 SERVICE_DISABLED 드라이버의 경우 부하 순서 그룹은 무시됩니다.
로드 순서 그룹의 순서가 지정된 전체 목록은 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control 레지스트리 키의 ServiceGroupOrder 하위 키에서 찾을 수 있습니다.
동일한 부하 그룹 순서는 SERVICE_BOOT_START 및 SERVICE_SYSTEM_START 드라이버에 사용됩니다. 그러나 SERVICE_SYSTEM_START 드라이버가 로드되기 전에 모든 SERVICE_BOOT_START 드라이버가 로드되고 시작됩니다.
부하 순서 그룹 지정
드라이버 작성기는 다음 방법 중 하나를 사용하여 설치 시 드라이버에 대한 부하 순서 그룹을 지정할 수 있습니다.
드라이버의 INF 파일에서 AddService 지시문에서 참조하는 service-install-section에서 LoadOrderGroup 항목에 대해 원하는 부하 순서 그룹을 지정합니다. 이 메서드는 필터 드라이버에 대한 INF 파일 만들기의 ServiceInstall 섹션에 설명되어 있습니다.
사용자 모드 설치 프로그램에서 CreateService 또는 ChangeServiceConfig를 호출할 때 lpLoadOrderGroup 매개 변수에 대해 원하는 시작 형식을 전달합니다. 이 메서드는 Microsoft Windows SDK 설명서의 CreateService 및 ChangeServiceConfig에 대한 참조 항목에 설명되어 있습니다.
드라이버 부하 순서 및 부하 순서 그룹에 대한 자세한 내용은 드라이버 부하 순서 지정을 참조하세요.
필터 드라이버 로드 규칙
시작 유형 및 로드 순서 그룹에 대한 다음 규칙은 필터 드라이버가 로드되는 시기를 결정합니다.
특정 시작 유형 및 부하 순서 그룹을 지정하는 필터 드라이버는 해당 시작 유형 및 로드 순서 그룹의 다른 모든 필터 드라이버와 동시에 로드됩니다.
각 부하 순서 그룹 내에서 미니 필터 및 레거시 필터 드라이버는 일반적으로 임의 순서로 로드됩니다. 이 경우 일반적으로 드라이버가 설치된 순서에 따라 드라이버가 로드됩니다.
미니 필터 또는 레거시 필터 드라이버가 부하 순서 그룹을 지정하지 않으면 부하 순서 그룹을 지정하는 동일한 시작 형식의 다른 모든 드라이버가 로드됩니다.