Go언어에서 윈도 인터페이스를 구현하는 경우 매개 변수의 형식은 uintptr 또는 이와 같은 크기의 변수(int,uint,포인터)만 가능하다.
HRESULT Invoke(
DISPID dispIdMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS *pDispParams,
VARIANT *pVarResult,
EXCEPINFO *pExcepInfo,
UINT *puArgErr
);
위의 경우를 Go언어에서 구현하면, 아래와 같은 형태가 된다.
func Invoke(idMember int,riid *GUID,lcid uint,flags uint,
dispParams *DISPPARAMS,varResult *VARIANT,
excepInfo *EXCEPINFO,argErr *uint32) uintptr {
}
원래는 아래처럼 되어야 하지만 제대로 실행되지 않고 비정상 종료된다.
매개변수가 OS에 따라서 32bit 또는 64bit 크기로 정렬되어야 하는 것으로 보인다.
func NotWorkingInvoke(idMember int32,riid *GUID,lcid uint32,flags uint16,
dispParams *DISPPARAMS,varResult *VARIANT,
excepInfo *EXCEPINFO,argErr *uint32) uintptr {
}