Этот конкретный интерфейс задокументирован как предоставляемый <mshtml.h>
. Теперь, как это происходит, вторая и третья строки этого файла:
// Include the full header file that works for C
#include "mshtmlc.h"
Глядя в этот файл, мы находим объявление
/* [id][vararg] */ HRESULT ( STDMETHODCALLTYPE *write )(
IHTMLDocument2 * This,
/* [in] */ __RPC__in SAFEARRAY * psarray);
Обратите внимание, что на самом деле это указатель на метод IHTMLDocument2::write
.
Иногда объявление C имеет один и тот же заголовок; иногда декларация не является общедоступной. Но стандарт COM - это ABI ( двоичный интерфейс), разработанный таким образом, что вы всегда можете написать объявление C. Хотя может быть больно.