Module: WindowsCOM::COMFactory

Defined in:
lib/windows_com/common.rb

Class Method Summary collapse

Class Method Details

.[](iface, sclsid) ⇒ Object



159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
# File 'lib/windows_com/common.rb', line 159

def self.[](iface, sclsid)
  Class.new(iface) {
    const_set :CLSID, WindowsCOM::GUIDFromString(sclsid)

    def initialize(clsctx = CLSCTX_INPROC)
      FFI::MemoryPointer.new(:pointer) { |ppv|
        DetonateHresult(:CoCreateInstance,
          self.class::CLSID, nil, clsctx, self.class::IID, ppv
        )

        super(ppv.read_pointer)
      }
    end
  }
end