go-tg-screenshot-bot

Форк
0
81 строка · 1.9 Кб
1
// Copyright 2010 The win Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4

5
// +build windows
6

7
package win
8

9
import (
10
	"syscall"
11
	"unsafe"
12
)
13

14
type SCODE int32
15

16
type EXCEPINFO struct {
17
	wCode             uint16
18
	wReserved         uint16
19
	bstrSource        *uint16 /*BSTR*/
20
	bstrDescription   *uint16 /*BSTR*/
21
	bstrHelpFile      *uint16 /*BSTR*/
22
	dwHelpContext     uint32
23
	pvReserved        uintptr
24
	pfnDeferredFillIn uintptr
25
	scode             SCODE
26
}
27

28
var (
29
	IID_ITypeInfo = IID{0x00020401, 0x0000, 0x0000, [8]byte{0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}
30
)
31

32
type ITypeInfoVtbl struct {
33
	IUnknownVtbl
34
	GetTypeAttr          uintptr
35
	GetTypeComp          uintptr
36
	GetFuncDesc          uintptr
37
	GetVarDesc           uintptr
38
	GetNames             uintptr
39
	GetRefTypeOfImplType uintptr
40
	GetImplTypeFlags     uintptr
41
	GetIDsOfNames        uintptr
42
	Invoke               uintptr
43
	GetDocumentation     uintptr
44
	GetDllEntry          uintptr
45
	GetRefTypeInfo       uintptr
46
	AddressOfMember      uintptr
47
	CreateInstance       uintptr
48
	GetMops              uintptr
49
	GetContainingTypeLib uintptr
50
	ReleaseTypeAttr      uintptr
51
	ReleaseFuncDesc      uintptr
52
	ReleaseVarDesc       uintptr
53
}
54

55
type ITypeInfo struct {
56
	LpVtbl *ITypeInfoVtbl
57
}
58

59
func (obj *ITypeInfo) QueryInterface(riid REFIID, ppvObject *unsafe.Pointer) HRESULT {
60
	ret, _, _ := syscall.Syscall(obj.LpVtbl.QueryInterface, 3,
61
		uintptr(unsafe.Pointer(obj)),
62
		uintptr(unsafe.Pointer(riid)),
63
		uintptr(unsafe.Pointer(ppvObject)))
64
	return HRESULT(ret)
65
}
66

67
func (obj *ITypeInfo) AddRef() uint32 {
68
	ret, _, _ := syscall.Syscall(obj.LpVtbl.AddRef, 1,
69
		uintptr(unsafe.Pointer(obj)),
70
		0,
71
		0)
72
	return uint32(ret)
73
}
74

75
func (obj *ITypeInfo) Release() uint32 {
76
	ret, _, _ := syscall.Syscall(obj.LpVtbl.Release, 1,
77
		uintptr(unsafe.Pointer(obj)),
78
		0,
79
		0)
80
	return uint32(ret)
81
}
82

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.