У меня есть обработчик событий автозапуска, зарегистрированный в COM для DVD-фильмов.
Я использую С# и следую этому руководству от CodeProject: http://www.codeproject.com/KB/system/AutoplayDemo.aspx.
Когда DVD-фильм вставлен, я вижу свой обработчик в списке, и он срабатывает (я добавил Debugger.Break() внутри кода, чтобы я мог его отлаживать)
В моем объекте я реализую интерфейс IDropTarget, и вызывается мое событие Drop.
Однако для DVD-фильмов я не могу опросить переданный IDataObject. Вызов IDataObject.QueryGetData с форматом «Autoplay Enumerated IDList Array» возвращает значение int 1 вместо S_OK (0). Похоже, это не одно из определенных выходных значений для вызова QueryGetData, и я совершенно в растерянности.
В журнале событий автозапуска (%SystemRoot%\Autoplay.log) указано: ~0x000006E0~[0312]DVD Movie -> Автовоспроизведение без содержимого!
Означает ли это, что я не могу узнать, какой DVD-привод запустил событие? Конечно, в большинстве систем будет только один, но я все же хотел бы опросить правильное устройство, чтобы получить информацию о фильме!