windows_com 2.0.1 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/RELNOTES.md +4 -0
- data/examples/DesktopGadget.rbw +2 -0
- data/examples/UIRibbon/Command.rbw +2 -1
- data/lib/windows_com/common.rb +19 -10
- data/screenshot.png +0 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bea6d25055bb37d4aa2c16bd5da878bd8917b815
|
4
|
+
data.tar.gz: ede87f79a9b521ad64dd83a0b022e3ba37952a92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64a0ff1e78884ca62f39e4016cf66cc1be78a26a5e71d61831fa6219c11d4a8473b98f74c38939caba893026d02d927b70757bfecf6a11463207c80a41702be6
|
7
|
+
data.tar.gz: 2ad4eda66fb2a0ad4759552d02b651a9dbc090c4b40b261cf5941fe3088ca7e91a4c842ccedc26323a29617380d49320562f4a5df71c0a8a77c037d5689d5a3e
|
data/RELNOTES.md
CHANGED
data/examples/DesktopGadget.rbw
CHANGED
data/lib/windows_com/common.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
require 'ffi'
|
2
2
|
|
3
|
-
WINDOWS_COM_VERSION = '2.0.
|
3
|
+
WINDOWS_COM_VERSION = '2.0.2'
|
4
4
|
|
5
5
|
WINDOWS_COM_OLE_INIT = true unless defined?(WINDOWS_COM_OLE_INIT)
|
6
|
+
|
6
7
|
WINDOWS_COM_TRACE_CALLBACK_REFCOUNT = false unless defined?(WINDOWS_COM_TRACE_CALLBACK_REFCOUNT)
|
8
|
+
WINDOWS_COM_TRACE_CALL_ARGS = false unless defined?(WINDOWS_COM_TRACE_CALL_ARGS)
|
7
9
|
|
8
10
|
module WindowsCOM
|
9
11
|
extend FFI::Library
|
@@ -17,7 +19,7 @@ module WindowsCOM
|
|
17
19
|
end
|
18
20
|
|
19
21
|
def DetonateHresult(name, *args)
|
20
|
-
hresult =
|
22
|
+
hresult = __send__(name, *args)
|
21
23
|
failed = FAILED(hresult)
|
22
24
|
|
23
25
|
raise "#{name} failed (hresult: #{format('%#08x', hresult)})" if failed
|
@@ -151,7 +153,7 @@ module WindowsCOM
|
|
151
153
|
module COMVtbl_
|
152
154
|
def self.[](parent_vtbl, spec)
|
153
155
|
spec.each { |name, sig|
|
154
|
-
sig[0].unshift(:pointer) # prepend *this*
|
156
|
+
sig[0].unshift(:pointer) # prepend *this* to FFI func signature
|
155
157
|
}
|
156
158
|
|
157
159
|
Class.new(FFI::Struct) {
|
@@ -190,12 +192,12 @@ module WindowsCOM
|
|
190
192
|
|
191
193
|
self::Vtbl.members.each { |name, sig|
|
192
194
|
define_method(name) { |*args|
|
193
|
-
|
195
|
+
args.unshift(@vptr) # prepend *this* for Vtbl meth call
|
194
196
|
|
195
|
-
|
196
|
-
|
197
|
+
STDERR.puts [:vt_call, self.class, name, args].inspect if
|
198
|
+
WINDOWS_COM_TRACE_CALL_ARGS
|
197
199
|
|
198
|
-
|
200
|
+
@vtbl[name].call(*args)
|
199
201
|
}
|
200
202
|
}
|
201
203
|
}
|
@@ -234,9 +236,16 @@ module WindowsCOM
|
|
234
236
|
def initialize
|
235
237
|
@vtbl = self.class::Vtbl.new
|
236
238
|
@vtbl.members.each { |name|
|
239
|
+
params, ret = @vtbl.class::Spec[name]
|
240
|
+
|
237
241
|
@vtbl[name] = instance_variable_set("@__ffi_func__#{name}",
|
238
|
-
FFI::Function.new(
|
239
|
-
|
242
|
+
FFI::Function.new(ret, params, convention: :stdcall) { |*args|
|
243
|
+
args.shift # remove *this* for Ruby meth call
|
244
|
+
|
245
|
+
STDERR.puts [:rb_call, self.class, name, args].inspect if
|
246
|
+
WINDOWS_COM_TRACE_CALL_ARGS
|
247
|
+
|
248
|
+
__send__(name, *args)
|
240
249
|
}
|
241
250
|
)
|
242
251
|
}
|
@@ -282,7 +291,7 @@ module WindowsCOM
|
|
282
291
|
@vtbl.pointer.free
|
283
292
|
@vptr.pointer.free
|
284
293
|
|
285
|
-
STDERR.puts "#{self}
|
294
|
+
STDERR.puts "#{self}.@#{@vtbl} freed\n#{self}.@#{@vptr} freed" if
|
286
295
|
$DEBUG || WINDOWS_COM_TRACE_CALLBACK_REFCOUNT
|
287
296
|
end
|
288
297
|
|
data/screenshot.png
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: windows_com
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Radoslav Peev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|