Где реализована IFileOperation (и как я могу это проверить)? - PullRequest
1 голос
/ 16 февраля 2011

Я пытаюсь выяснить, где IFileOperation реализован в Windows 7. Насколько я понимаю из страницы MSDN она находится в shell32.dll.

Итак, япроверил все объекты COM в shell32.dll, используя программу просмотра экспорта DLL (из NirSoft), и IFileOperation не является одним из них.

Я искал в реестре CLSID_FileOperation {3ad05575-8857-4850-9277-11b85bdb8e09} и я обнаружил (насколько я понимаю), что он находится в shell32.dll.

Но как это может быть, если я не смог найти этот экспорт COM с помощью экспорта DLL?

1 Ответ

5 голосов
/ 16 февраля 2011

DLL не нужно экспортировать ничего особенного для реализации этого интерфейса.Реестр сообщает ОС, какая DLL реализует интерфейс.Когда программа вызывает CoCreateInstance, ОС может найти указанный CLSID в реестре.Затем ОС загружает связанную DLL и вызывает свою функцию DllGetClassObject, чтобы получить объект IClassFactory.Затем ОС использует этот интерфейс для получения чего-то, что реализует запрошенный интерфейс.

...