Поддержка драйвера принтера для служб каталогов принтеров
Драйверы принтеров не несут ответственности за публикацию очереди печати в службах каталогов. Папка печати Microsoft Windows 2000 и более поздних версий создает объект очереди печати (путем вызова функции SetPrinter очереди очереди печати) в процессе установки принтера.
Свойства очереди печати публикуются таким образом, что пользователь может искать принтеры с определенными свойствами с помощью параметра Поиск в меню "Пуск " на панели задач. Папка печати публикует некоторые, но не все возможности принтера, доступные в DriverCapabilities. Публикуются только те возможности, которые считаются полезными для просмотра.
Драйверы принтеров могут добавлять или изменять сведения о свойствах объекта очереди печати. Свойства очереди печати, которые можно опубликовать, определяются константами с SPLDS_ префиксом, определенными в winspool.h. Чтобы добавить или изменить свойства принтера, драйвер должен использовать эти предопределенные идентификаторы имен свойств.
Чтобы добавить или изменить сведения о свойстве объекта очереди печати, выполните следующие действия.
Добавьте имена свойств и значения в реестр в SPLDS_DRIVER_KEY, вызвав функцию SetPrinterDataEx очереди очереди.
Вызовите функцию SetPrinter очереди печати с входной структурой PRINTER_INFO_7 (описанной в документации по Пакету SDK для Windows) и действием DSPRINT_UPDATE, чтобы сообщить очереди очереди печати о том, что он должен обновить опубликованный объект очереди печати. (Драйверы не должны указывать действие DSPRINT_PUBLISH.)
Эти шаги должны быть реализованы в функции DrvPrinterEvent драйвера принтера, когда функция получает событие PRINTER_EVENT_INITIALIZE.
Если драйвер должен получить текущие значения опубликованных свойств принтера, он должен вызвать GetPrinterDataEx или EnumPrinterDataEx , чтобы получить сведения из реестра, который поддерживается и всегда является актуальным. Альтернативным способом является вызов GetPrinter для получения идентификатора объекта очереди печати, а затем вызов функций ADSI для получения значений опубликованных свойств. Этот метод не рекомендуется использовать как из-за того, что он является более ресурсоемким, так и из-за того, что возвращаемые данные не всегда могут быть актуальными.