module Puppet::Util::Windows::COM::Helpers

Public Instance Methods

QueryInstance(klass) { |instance| ... } click to toggle source
    # File lib/puppet/util/windows/com.rb
 93 def QueryInstance(klass)
 94   instance = nil
 95 
 96   FFI::MemoryPointer.new(:pointer) do |ppv|
 97     QueryInterface(klass::IID, ppv)
 98 
 99     instance = klass.new(ppv.read_pointer)
100   end
101 
102   begin
103     yield instance
104     return self
105   ensure
106     instance.Release
107   end if block_given?
108 
109   instance
110 end
UseInstance(klass, name, *args) { |instance = klass| ... } click to toggle source
    # File lib/puppet/util/windows/com.rb
112 def UseInstance(klass, name, *args)
113   instance = nil
114 
115   FFI::MemoryPointer.new(:pointer) do |ppv|
116     send(name, *args, ppv)
117 
118     yield instance = klass.new(ppv.read_pointer)
119   end
120 
121   self
122 ensure
123   instance.Release if instance && ! instance.null?
124 end