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

Public Instance Methods

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