Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Блокировка STI-части драйвера WIA требует особого внимания. Несмотря на то, что приложение может напрямую получить доступ к опубликованным интерфейсам STI, такое прямое обращение к устройству может быть неправильно использовано. Методы блокировки, реализованные неправильно, могут оставить устройство открытым для атаки типа "отказ в обслуживании" (DoS).
Для приложений STI
В следующем списке содержатся меры предосторожности и рекомендации, которые следует соблюдать при использовании приложений STI:
Не удерживайте блокировки в течение длительного периода времени.
Если у вас нет прямого доступа к устройству, возможно, можно получить те же сведения с помощью методов интерфейса WIA. Это предпочтительнее, так как служба WIA затем управляет блокировкой для вас.
Драйверы TWAIN, использующие STI, используют метод IStiUSD::LockDevice для управления доступом к устройству. Если драйвер TWAIN использует STI, драйвер TWAIN отвечает за управление временем блокировки.
Его можно создать таким образом, чтобы он реализовал только методы интерфейса IStiUSD . Недостатком этого подхода является то, что приложение может вызывать IStiUSD::LockDevice напрямую, тем самым блокируя устройство для монопольного использования приложением. Лаборатория качества оборудования Windows не сертифицируют драйверы, использующие этот метод; такие драйверы можно установить только как неподписанные драйверы.
Для драйверов WIA
В следующем списке содержатся меры предосторожности и рекомендации, которые следует соблюдать при работе с драйверами WIA:
Отслеживайте активность устройства в течение длительных периодов блокировки. Если нет действий, драйвер должен разблокировать устройство и разрешить другим клиентам подключаться. Драйвер не должен разблокировать устройство, например, если он сканирует очень большой образ, или если требуется необычно длительное время для получения изображения. Это прерывает текущий сеанс. В зависимости от устройства и шины, на которой он работает, очень большое изображение может быть в любом месте от 10 мегабайт до более чем гигабайт, и длительный период времени может быть в любом месте от 500 миллисекунд до более чем минуты. Вы должны тестировать устройство и шину, на которой она работает, чтобы вы знали, какие именно значения относятся к устройству.
Приложения, использующие WIA, не обращаются к методам блокировки драйвера, IWiaMiniDrv::d rvLockWiaDevice и IWiaMiniDrv::d rvUnLockWiaDevice. Только служба WIA вызывает эти методы блокировки, служба WIA распространяет вызовы блокировки к IStiUSD с помощью метода IStiUSD::LockDevice.
Если приложение блокирует устройство WIA исключительно с помощью метода IStiUSD::LockDevice , служба WIA не может получить доступ к устройству, пока это приложение не вызывает метод IStiUSD::UnLockDevice . Если служба WIA не может заблокировать устройство, устройство не будет доступно для приложений или драйверов, использующих службу WIA.
Метод IWiaMiniDrv::d rvLockWiaDevice всегда должен вызывать метод IStiDevice::LockDevice , а метод IWiaMiniDrv::d rvUnLockWiaDevice всегда должен вызывать метод IStiDevice::UnLockDevice . Это гарантирует, что служба WIA выполняет надлежащее управление блокировкой для устройства. Интерфейс IStiDevice передается драйверу в вызовах метода IWiaMiniDrv::d rvInitializeWia . Этот интерфейс следует кэшировать и использовать для вызова метода IStiDevice::LockDevice . Этот метод вызывает метод IStiUSD::LockDevice драйвера.
Если значение BOOL используется для управления блокировкой, защитите это значение от нескольких потоков. Если два драйвера пытаются заблокировать одно устройство одновременно, только одному драйверу это удастся.