Ваш интерфейс, вероятно, зарегистрирован как «двойной», и HWND не является одним из типов, поддерживаемых OLE-автоматизацией. Должен ли ваш интерфейс быть совместимым с IDispatch (вам нужно вызывать его из скриптовых или поздне-связанных языков)? Если нет, то вам поможет выход из IUnknown, а не IDispatch и не регистрация в качестве двойного.
Примечание: кастинг в порядке, если вы используете только метод в процессе.