Files
go-winrt/windows/foundation/deferral.go
2025-08-22 17:42:23 -04:00

103 lines
2.2 KiB
Go

// Code generated by winrt-go-gen. DO NOT EDIT.
//go:build windows
//nolint:all
package foundation
import (
"syscall"
"unsafe"
"github.com/go-ole/go-ole"
)
const SignatureDeferral string = "rc(Windows.Foundation.Deferral;{d6269732-3b7f-46a7-b40b-4fdca2a2c693})"
type Deferral struct {
ole.IUnknown
}
func (impl *Deferral) Complete() error {
itf := impl.MustQueryInterface(ole.NewGUID(GUIDiDeferral))
defer itf.Release()
v := (*iDeferral)(unsafe.Pointer(itf))
return v.Complete()
}
func (impl *Deferral) Close() error {
itf := impl.MustQueryInterface(ole.NewGUID(GUIDIClosable))
defer itf.Release()
v := (*IClosable)(unsafe.Pointer(itf))
return v.Close()
}
const GUIDiDeferral string = "d6269732-3b7f-46a7-b40b-4fdca2a2c693"
const SignatureiDeferral string = "{d6269732-3b7f-46a7-b40b-4fdca2a2c693}"
type iDeferral struct {
ole.IInspectable
}
type iDeferralVtbl struct {
ole.IInspectableVtbl
Complete uintptr
}
func (v *iDeferral) VTable() *iDeferralVtbl {
return (*iDeferralVtbl)(unsafe.Pointer(v.RawVTable))
}
func (v *iDeferral) Complete() error {
hr, _, _ := syscall.SyscallN(
v.VTable().Complete,
uintptr(unsafe.Pointer(v)), // this
)
if hr != 0 {
return ole.NewError(hr)
}
return nil
}
const GUIDiDeferralFactory string = "65a1ecc5-3fb5-4832-8ca9-f061b281d13a"
const SignatureiDeferralFactory string = "{65a1ecc5-3fb5-4832-8ca9-f061b281d13a}"
type iDeferralFactory struct {
ole.IInspectable
}
type iDeferralFactoryVtbl struct {
ole.IInspectableVtbl
DeferralCreate uintptr
}
func (v *iDeferralFactory) VTable() *iDeferralFactoryVtbl {
return (*iDeferralFactoryVtbl)(unsafe.Pointer(v.RawVTable))
}
func DeferralCreate(handler *DeferralCompletedHandler) (*Deferral, error) {
inspectable, err := ole.RoGetActivationFactory("Windows.Foundation.Deferral", ole.NewGUID(GUIDiDeferralFactory))
if err != nil {
return nil, err
}
v := (*iDeferralFactory)(unsafe.Pointer(inspectable))
var out *Deferral
hr, _, _ := syscall.SyscallN(
v.VTable().DeferralCreate,
uintptr(unsafe.Pointer(v)), // this
uintptr(unsafe.Pointer(handler)), // in DeferralCompletedHandler
uintptr(unsafe.Pointer(&out)), // out Deferral
)
if hr != 0 {
return nil, ole.NewError(hr)
}
return out, nil
}