Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если исключительный доступ к устройству включен, одновременно можно открыть только один дескриптор устройства. Чтобы диспетчер ввода-вывода применял монопольный доступ к устройству, монопольное свойство должно быть задано для именованного объекта устройства в стеке устройств.
Для стека устройств WDM, имеющего PDO и FDO, монопольное свойство можно задать только в INF-файле с помощью директивы INF AddReg. PDO — это именованный объект в стеке, но драйвер шины (а не драйвер функции) создает PDO от имени драйвера функции. Единственный способ дать указание водителю шины установить эксклюзивный флаг для PDO - это с помощью INF-файлов класса или устройства. (Вызов функции IoCreateDevice создает FDO; установка монопольного флага для FDO не оказывает эффекта.)
Драйверы, объекты устройств которых не стекаются, такие как драйверы, не являющиеся WDM, и устройства, работающие в необработанном режиме, могут использовать подпрограмму IoCreateDeviceSecure, чтобы задать эксклюзивное свойство для именованного объекта устройства.
Диспетчер операций ввода-вывода применяет эксклюзивность для каждого имени на основе именованных объектов устройства независимо от конечного имени. Например, предположим, что объект устройства имеет имя \Device\DeviceName. Затем диспетчер ввода-вывода применяет эксклюзивность для запроса, чтобы открыть "\Device\DeviceName\Filename1", а затем "\Device\DeviceName\Filename2". Если два объекта в стеке устройств именуются (что не рекомендуется), диспетчер ввода-вывода позволяет открывать один дескриптор для каждого объекта. В такой ситуации водители должны применять эксклюзивность в своих DRIVER_DISPATCH функциях обратного вызова. Диспетчер ввода-вывода также не обеспечивает эксклюзивность при открытии по отношению к другому дескриптору файла. Дополнительные сведения о запросах на открытие файлов в пространстве имен устройства см. в разделе "Управление доступом к пространству имен устройств".