返回 DeepSeek-Reasonix
ICoreWebView2HttpHeadersCollectionIterator.go
根目录 / desktop / third_party / go-webview2 / pkg / edge / ICoreWebView2HttpHeadersCollectionIterator.go
1 //go:build windows
2
3 package edge
4
5 import (
6 "unsafe"
7
8 "golang.org/x/sys/windows"
9 )
10
11 type _ICoreWebView2HttpHeadersCollectionIteratorVtbl struct {
12 _IUnknownVtbl
13 GetCurrentHeader ComProc
14 GetHasCurrentHeader ComProc
15 MoveNext ComProc
16 }
17
18 type ICoreWebView2HttpHeadersCollectionIterator struct {
19 vtbl *_ICoreWebView2HttpHeadersCollectionIteratorVtbl
20 }
21
22 func (i *ICoreWebView2HttpHeadersCollectionIterator) AddRef() uint32 {
23 ret, _, _ := i.vtbl.AddRef.Call(uintptr(unsafe.Pointer(i)))
24
25 return uint32(ret)
26 }
27
28 func (i *ICoreWebView2HttpHeadersCollectionIterator) Release() uint32 {
29 ret, _, _ := i.vtbl.Release.Call(uintptr(unsafe.Pointer(i)))
30
31 return uint32(ret)
32 }
33
34 func (i *ICoreWebView2HttpHeadersCollectionIterator) HasCurrentHeader() (bool, error) {
35 var hasHeader int32
36 hr, _, _ := i.vtbl.GetHasCurrentHeader.Call(
37 uintptr(unsafe.Pointer(i)),
38 uintptr(unsafe.Pointer(&hasHeader)),
39 )
40 if windows.Handle(hr) != windows.S_OK {
41 return false, windows.Errno(hr)
42 }
43 return hasHeader != 0, nil
44 }
45
46 func (i *ICoreWebView2HttpHeadersCollectionIterator) GetCurrentHeader() (string, string, error) {
47 // Create *uint16 to hold result
48 var _name *uint16
49 var _value *uint16
50 hr, _, _ := i.vtbl.GetCurrentHeader.Call(
51 uintptr(unsafe.Pointer(i)),
52 uintptr(unsafe.Pointer(&_name)),
53 uintptr(unsafe.Pointer(&_value)),
54 )
55 if windows.Handle(hr) != windows.S_OK {
56 return "", "", windows.Errno(hr)
57 }
58 // Get result and cleanup
59 name := windows.UTF16PtrToString(_name)
60 windows.CoTaskMemFree(unsafe.Pointer(_name))
61 value := windows.UTF16PtrToString(_value)
62 windows.CoTaskMemFree(unsafe.Pointer(_value))
63 return name, value, nil
64 }
65
66 func (i *ICoreWebView2HttpHeadersCollectionIterator) MoveNext() (bool, error) {
67 var next int32
68 hr, _, _ := i.vtbl.MoveNext.Call(
69 uintptr(unsafe.Pointer(i)),
70 uintptr(unsafe.Pointer(&next)),
71 )
72 if windows.Handle(hr) != windows.S_OK {
73 return false, windows.Errno(hr)
74 }
75
76 return next != 0, nil
77 }
78
78 lines GO