in ComObject.cs [93:99]
public virtual T QueryInterface<T>() where T : ComObject
{
IntPtr parentPtr;
var result = this.QueryInterface(typeof(T).GetTypeInfo().GUID, out parentPtr);
result.CheckError();
return FromPointer<T>(parentPtr);
}