// Copyright 2010 The win Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // +build windows package win import ( "syscall" "unsafe" ) type SCODE int32 type EXCEPINFO struct { wCode uint16 wReserved uint16 bstrSource *uint16 /*BSTR*/ bstrDescription *uint16 /*BSTR*/ bstrHelpFile *uint16 /*BSTR*/ dwHelpContext uint32 pvReserved uintptr pfnDeferredFillIn uintptr scode SCODE } var ( IID_ITypeInfo = IID{0x00020401, 0x0000, 0x0000, [8]byte{0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}} ) type ITypeInfoVtbl struct { IUnknownVtbl GetTypeAttr uintptr GetTypeComp uintptr GetFuncDesc uintptr GetVarDesc uintptr GetNames uintptr GetRefTypeOfImplType uintptr GetImplTypeFlags uintptr GetIDsOfNames uintptr Invoke uintptr GetDocumentation uintptr GetDllEntry uintptr GetRefTypeInfo uintptr AddressOfMember uintptr CreateInstance uintptr GetMops uintptr GetContainingTypeLib uintptr ReleaseTypeAttr uintptr ReleaseFuncDesc uintptr ReleaseVarDesc uintptr } type ITypeInfo struct { LpVtbl *ITypeInfoVtbl } func (obj *ITypeInfo) QueryInterface(riid REFIID, ppvObject *unsafe.Pointer) HRESULT { ret, _, _ := syscall.Syscall(obj.LpVtbl.QueryInterface, 3, uintptr(unsafe.Pointer(obj)), uintptr(unsafe.Pointer(riid)), uintptr(unsafe.Pointer(ppvObject))) return HRESULT(ret) } func (obj *ITypeInfo) AddRef() uint32 { ret, _, _ := syscall.Syscall(obj.LpVtbl.AddRef, 1, uintptr(unsafe.Pointer(obj)), 0, 0) return uint32(ret) } func (obj *ITypeInfo) Release() uint32 { ret, _, _ := syscall.Syscall(obj.LpVtbl.Release, 1, uintptr(unsafe.Pointer(obj)), 0, 0) return uint32(ret) }