func NewHString(s string) (hstring hstr.HString, err error) { u16 := windows.StringToUTF16Ptr(s) len := uint32(utf8.RuneCountInString(s)) err = errors.MaybeError(procWindowsCreateString.Call( uintptr(unsafe.Pointer(u16)), uintptr(len), uintptr(unsafe.Pointer(&hstring)))) return }
func RoActivateInstance(classID string) (obj *iinspectable.Inspectable, err error) { hClassID, err := NewHString(classID) if err != nil { return nil, err } defer DeleteHString(hClassID) err = errors.MaybeError(procRoActivateInstance.Call( uintptr(unsafe.Pointer(hClassID)), uintptr(unsafe.Pointer(&obj)))) return }
func RoGetActivationFactory(classID string, interfaceID *types.GUID) (obj *iinspectable.Inspectable, err error) { hClassID, err := NewHString(classID) if err != nil { return nil, err } defer DeleteHString(hClassID) err = errors.MaybeError(procRoGetActivationFactory.Call( uintptr(unsafe.Pointer(hClassID)), uintptr(unsafe.Pointer(interfaceID)), uintptr(unsafe.Pointer(&obj)))) return }
func AllocateArrayDescriptorEx(variantType types.VariantType, dimensions uint32) (array *types.COMArray, err error) { err = errors.MaybeError(C.SafeArrayAllocDescriptorEx(uint16(variantType), dimensions, unsafe.Pointer(&array))) return }
func AllocateArrayDescriptor(dimensions uint32) (array *types.COMArray, err error) { err = errors.MaybeError(C.SafeArrayAllocDescriptor(dimensions, unsafe.Pointer(&array))) return }
func AllocateArrayData(array *types.COMArray) error { return errors.MaybeError(C.SafeArrayAllocData(array)) }
func GetUpperBound(array *types.COMArray, dimension uint32) (upperBound int64, err error) { err = errors.MaybeError(C.SafeArrayGetUBound(array, dimension, unsafe.Pointer(&upperBound))) return }
func DestroyDescriptor(array *types.COMArray) error { return errors.MaybeError(C.SafeArrayDestroyDescriptor(array)) }
func PutElement(array *types.COMArray, index int64, element interface{}) error { return errors.MaybeError(C.SafeArrayPutElement(array, index, unsafe.Pointer(&element))) }
func ResetDimensions(array *types.COMArray, bounds *types.Bounds) error { return errors.MaybeError(C.SafeArrayRedim(array, bounds)) }
func SetInterfaceID(array *types.COMArray, interfaceID *types.GUID) error { return errors.MaybeError(C.SafeArraySetIID(array, interfaceID)) }
func GetPointerOfIndex(array *types.COMArray, index int64) (ref uintptr, err error) { err = errors.MaybeError(C.SafeArrayPtrOfIndex(array, index, unsafe.Pointer(&ref))) return }
func Unlock(array *types.COMArray) error { return errors.MaybeError(C.SafeArrayUnlock(array)) }
func GetVariantType(array *types.COMArray) (varType uint16, err error) { err = errors.MaybeError(C.SafeArrayGetVartype(array, unsafe.Pointer(&varType))) return }
func Duplicate(original *types.COMArray) (array *types.COMArray, err error) { err = errors.MaybeError(C.SafeArrayCopy(original, unsafe.Pointer(&array))) return }
func DuplicateData(original, duplicate *types.COMArray) error { return errors.MaybeError(C.SafeArrayCopyData(original, unsafe.Pointer(&duplicate))) }
func GetRecordInfo(array *types.COMArray) (recordInfo interface{}, err error) { err = errors.MaybeError(C.SafeArrayGetRecordInfo(array, unsafe.Pointer(&recordInfo))) return }
func RoInitialize(threadType uint32) error { return errors.MaybeError(procRoInitialize.Call(uintptr(threadType))) }
func SetRecordInfo(array *types.COMArray, recordInfo interface{}) error { return errors.MaybeError(C.SafeArraySetRecordInfo(array, unsafe.Pointer(recordInfo))) }
func AccessData(array *types.COMArray) (element uintptr, err error) { err = errors.MaybeError(C.SafeArrayAccessData(array, unsafe.Pointer(&element))) return }
func UnaccessData(array *types.COMArray) error { return errors.MaybeError(C.SafeArrayUnaccessData(array)) }
func DeleteHString(hstring hstr.HString) error { return errors.MaybeError(procWindowsDeleteString.Call(uintptr(hstring))) }
func GetInterfaceID(array *types.COMArray) (guid *types.GUID, err error) { err = errors.MaybeError(C.SafeArrayGetIID(array, unsafe.Pointer(&guid))) return }