queryInterface method

int queryInterface(
  1. Pointer<GUID> riid,
  2. Pointer<Pointer<NativeType>> ppvObject
)

Queries a COM object for a pointer to one of its interface; identifying the interface by a reference to its interface identifier (IID).

If the COM object implements the interface, then it returns a pointer to that interface after calling addRef on it.

Implementation

int queryInterface(Pointer<GUID> riid, Pointer<Pointer> ppvObject) =>
    (ptr.ref.vtable + 0)
            .cast<
                Pointer<
                    NativeFunction<
                        Int32 Function(Pointer, Pointer<GUID> riid,
                            Pointer<Pointer> ppvObject)>>>()
            .value
            .asFunction<
                int Function(Pointer, Pointer<GUID> riid,
                    Pointer<Pointer> ppvObject)>()(
        ptr.ref.lpVtbl, riid, ppvObject);