Регистрация обработчика для события устройства
Обработчики определяют программную часть автозапуска. Они определяют значок и понятное имя программного обеспечения, а также компонент com для создания экземпляра и способ инициализации компонента в ответ на событие. Каждый обработчик для определенного события регистрируется как значение в соответствующем ключе EventHandler . При обнаружении этого события пользователю предлагается выбрать обработчик из списка всех обработчиков, зарегистрированных для этого события.
Инструкции
Обработчики и связанные с ними значения определяютсяв разделеОбработчики AutoplayHandlers\. Подразделы различаются в зависимости от того, может ли система считывать содержимое устройства напрямую или устройство предоставляет содержимое системе через собственный интерфейс.
В следующем примере показаны подразделы и значения, используемые для устройства, например цифровой видеокамеры или проигрывателя .mp3, который предоставляет свое содержимое системе через собственный интерфейс. Пример обработчика называется MyHandler.
HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
SOFTWARE
Microsoft
Windows
CurrentVersion
Explorer
AutoplayHandlers
Handlers
MyHandler
Action [REG_SZ] = Play music
CLSID [REG_SZ] = {a51f2ed3-634e-4a97-9d55-efcf08e7b32f}
DefaultIcon [REG_EXPAND_SZ] = %ProgramFiles%\Windows Media Player\wmplayer.exe,0
InitCmdLine [REG_SZ] = /Play
ProgID [REG_SZ] = WMP.PlayMusicFiles
Provider [REG_SZ] = Windows Media Player
Примечание
Хотя в примере показаны значения ProgID и идентификатора класса (CLSID), на практике эти значения являются взаимоисключающими, так что присутствует только одно или другое. Предпочтительнее значение ProgID. Какой бы он ни использовался, он должен указывать на com-компонент, реализующий интерфейс IHWEventHandler .
Значение Action можно ввести как литеральное значение, например "Воспроизвести музыку", как показано в этом примере, или как имя файла со строкой ресурса. Можно также ввести значение поставщика в виде литерального значения или имени файла со строкой ресурса. Автозапуск объединяет значения Action и Provider со словом using, чтобы создать понятное подпись, отображаемое в пользовательском интерфейсе. В этом примере результирующий подпись — "Воспроизведение музыки с помощью Медиаплеер Windows".
Значение DefaultIcon указывает на ICO-файл или ресурс в двоичном файле. Если числовое значение, следующее за именем двоичного файла, равно нулю или больше, это значение индекса значка в этом двоичном файле. Если это отрицательное значение, то это идентификатор ресурса значка. Рекомендуется использовать отрицательные значения индекса. В случае ICO-файла значение не требуется. Рекомендуется использовать переменные среды в пути.
Значение InitCmdLine передается без изменения через метод IHWEventHandler::Initialize перед вызовом любых других методов.
В следующем примере показаны подразделы и значения, используемые для устройства, которое можно считывать напрямую, например дисковод КОМПАКТ-дисков или другой съемный диск. Опять же, обработчик примера называется MyHandler.
HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
SOFTWARE
Microsoft
Windows
CurrentVersion
Explorer
AutoplayHandlers
Handlers
MyHandler
Action [REG_SZ] = @%systemroot%\System32\wiaacmgr.exe,-276
DefaultIcon [REG_EXPAND_SZ] = %systemroot%\System32\wiaacmgr.exe,-2
InvokeProgID [REG_SZ] = WIA.AutoPlayDropHandler
InvokeVerb [REG_SZ] = open
Provider [REG_SZ] = @%systemroot%\System32\wiaacmgr.exe,-101
В этом примере значения Action и Provider отображаются как имя файла со строкой ресурса, а не литеральными значениями, но строки, на которые они ссылаются, используются таким же образом. Они объединяются со словом "использование", чтобы сформировать понятное подпись, как описано ранее.
Значения InvokeProgID и InvokeVerb заменяют значения CLSID, InitCmdLine и ProgID. Значения InvokeProgID и InvokeVerb соответствуют именам ключей, которые находятся в HKEY_CLASSES_ROOT, как показано в следующей записи реестра. Этот набор примеров ключей соответствует конкретному примеру обработчика, описанному ранее.
HKEY_CLASSES_ROOT
WIA.AutoplayDropHandler
shell
open
DropTarget
Clsid = {F1ABE2B5-C073-4dba-B6EB-FD7A5111DD8F}
Функция CoCreateInstance использует CLSID для реализации соответствующего приложения.
После определения обработчика в любом из этих двух способов необходимо зарегистрировать его для определенного события. Для этого необходимо указать имя обработчика в качестве значения для ключа этого события в разделе EventHandlers. В следующем примере показано, как зарегистрировать MyHandler в качестве обработчика для события GenericVolumeArrival. Ему не назначено значение данных.
HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
SOFTWARE
Microsoft
Windows
CurrentVersion
Explorer
AutoplayHandlers
EventHandlers
GenericVolumeArrival
MyHandler [REG_SZ]
Связанные темы