디바이스 개체에 대한 단독 액세스 지정

디바이스에 대한 단독 액세스를 사용하도록 설정하면 디바이스에 대한 핸들을 한 번에 하나만 열 수 있습니다. I/O 관리자가 디바이스에 대한 단독 액세스를 적용하려면 디바이스 스택의 명명된 디바이스 개체에 대해 배타적 속성을 설정해야 합니다.

PDO와 FDO가 모두 있는 WDM 디바이스 스택의 경우 INF AddReg 지시문을 사용하여 INF 파일에서만 배타적 속성을 설정할 수 있습니다. PDO는 스택의 명명된 개체이지만, 버스 드라이버(함수 드라이버 자체가 아님)는 함수 드라이버를 대신하여 PDO를 만듭니다. 버스 드라이버가 PDO에 대한 배타적 플래그를 설정하도록 지시하는 유일한 방법은 클래스 또는 디바이스 INF 파일을 사용하는 것입니다. (IoCreateDevice 루틴에 대한 호출은 FDO를 만듭니다. FDO에 대한 배타적 플래그를 설정해도 아무 효과가 없습니다.)

비 WDM 드라이버 및 원시 모드에서 작동하는 디바이스와 같이 디바이스 개체가 누적되지 않은 드라이버는 IoCreateDeviceSecure 루틴을 사용하여 명명된 디바이스 개체에 대한 배타적 속성을 설정할 수 있습니다.

I/O 관리자는 후행 이름에 관계없이 명명된 디바이스 개체에 대해 이름별로 독점성을 적용합니다. 예를 들어 디바이스 개체의 이름이 "\Device\DeviceName"인 경우를 가정해 보겠습니다. 그런 다음, I/O 관리자는 "\Device\DeviceName\Filename1"과 "\Device\DeviceName\Filename2"를 여는 요청에 대해 독점성을 적용합니다. 디바이스 스택의 두 개체 이름이 지정되면(권장되지 않음) I/O 관리자에서 각 개체에 대해 단일 핸들을 열 수 있습니다. 이러한 상황에서 드라이버는 DRIVER_DISPATCH 콜백 함수 내에서 배타성을 적용해야 합니다. 또한 I/O 관리자는 다른 파일 핸들을 기준으로 열기에 대한 독점성을 적용하지 않습니다. 디바이스 네임스페이스의 파일 열기 요청에 대한 자세한 내용은 디바이스 네임스페이스 액세스 제어를 참조하세요.