返回 DeepSeek-Reasonix
ICoreWebView2Deferral.go
根目录 / desktop / third_party / go-webview2 / pkg / edge / ICoreWebView2Deferral.go
1 //go:build windows
2
3 package edge
4
5 import (
6 "errors"
7 "syscall"
8 "unsafe"
9
10 "golang.org/x/sys/windows"
11 )
12
13 type ICoreWebView2DeferralVtbl struct {
14 _IUnknownVtbl
15 Complete ComProc
16 }
17
18 type ICoreWebView2Deferral struct {
19 Vtbl *ICoreWebView2DeferralVtbl
20 }
21
22 // AddRef increments the reference count of ICoreWebView2Deferral interface
23 func (i *ICoreWebView2Deferral) AddRef() error {
24 _, _, err := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i)))
25 if err != nil && !errors.Is(err, windows.ERROR_SUCCESS) {
26 return err
27 }
28
29 return nil
30 }
31
32 // Release decrements the reference count of ICoreWebView2Deferral interface
33 func (i *ICoreWebView2Deferral) Release() error {
34 _, _, err := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i)))
35 if err != nil && !errors.Is(err, windows.ERROR_SUCCESS) {
36 return err
37 }
38
39 return nil
40 }
41
42 func (i *ICoreWebView2Deferral) Complete() error {
43 hr, _, _ := i.Vtbl.Complete.Call(
44 uintptr(unsafe.Pointer(i)),
45 )
46 if windows.Handle(hr) != windows.S_OK {
47 return syscall.Errno(hr)
48 }
49 return nil
50 }
51
51 lines GO