ienumvariant_windows.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. //go:build windows
  2. package ole
  3. import (
  4. "syscall"
  5. "unsafe"
  6. )
  7. func (enum *IEnumVARIANT) Clone() (cloned *IEnumVARIANT, err error) {
  8. hr, _, _ := syscall.Syscall(
  9. enum.VTable().Clone,
  10. 2,
  11. uintptr(unsafe.Pointer(enum)),
  12. uintptr(unsafe.Pointer(&cloned)),
  13. 0)
  14. if hr != 0 {
  15. err = NewError(hr)
  16. }
  17. return
  18. }
  19. func (enum *IEnumVARIANT) Reset() (err error) {
  20. hr, _, _ := syscall.Syscall(
  21. enum.VTable().Reset,
  22. 1,
  23. uintptr(unsafe.Pointer(enum)),
  24. 0,
  25. 0)
  26. if hr != 0 {
  27. err = NewError(hr)
  28. }
  29. return
  30. }
  31. func (enum *IEnumVARIANT) Skip(celt uint) (err error) {
  32. hr, _, _ := syscall.Syscall(
  33. enum.VTable().Skip,
  34. 2,
  35. uintptr(unsafe.Pointer(enum)),
  36. uintptr(celt),
  37. 0)
  38. if hr != 0 {
  39. err = NewError(hr)
  40. }
  41. return
  42. }
  43. func (enum *IEnumVARIANT) Next(celt uint) (array VARIANT, length uint, err error) {
  44. hr, _, _ := syscall.Syscall6(
  45. enum.VTable().Next,
  46. 4,
  47. uintptr(unsafe.Pointer(enum)),
  48. uintptr(celt),
  49. uintptr(unsafe.Pointer(&array)),
  50. uintptr(unsafe.Pointer(&length)),
  51. 0,
  52. 0)
  53. if hr != 0 {
  54. err = NewError(hr)
  55. }
  56. return
  57. }