anchor.diff:          CLSCTX_ALL,
           GUID.fromString(IID_IFileOpenDialog).addressOf,
           pFileOpen);
  +
  +    print('pFileOpen address: ${pointerAsString(pFileOpen)}');
  +
       if (SUCCEEDED(hr)) {
  -      final pVt = Pointer<IFileDialogVtbl>.fromAddress(pFileOpen.value);
  +      // *ppv contains the requested interface pointer.
  +      final pVtable = Pointer<IFileDialogVtbl>.fromAddress(pFileOpen.value);
  +      print('pVtable is at *pFileOpen: ${pointerAsString(pVtable)}');
   
  -      print(printableAddress(pVt.ref.QueryInterface));
  -      print(printableAddress(pVt.ref.AddRef));
  -      print(printableAddress(pVt.ref.Show));
  +      final pShowNative =
  +          Pointer<NativeFunction<IModalWindowShowNative>>.fromAddress(
  +              pVtable.address + 8 * 3);
  +      print('pShowNative is at: ${pointerAsString(pShowNative)}');
   
  -      final pFunc = pVt.ref.Show;
  -      final pFuncUint64 = Pointer<Uint64>.fromAddress(pFunc.address);
  +      final fShowDart = pShowNative.asFunction<IModalWindowShowDart>();
   
  -      final pFuncDart =
  -          Pointer<NativeFunction<IModalWindowShowNative>>.fromAddress(
  -              pFuncUint64.value);
  -      print(printableAddress(pFuncDart));
  -
  -      MessageBox(NULL, TEXT('Preparing to invoke IFileDialog::Show'),
  -          TEXT('Preparing'), MB_OK);
  -      final pFuncCallable = pFuncDart.asFunction<IModalWindowShowDart>();
  -
  -      pFuncCallable(pFileOpen, NULL);
  -      print('success');
  +      hr = fShowDart(pFileOpen, NULL);
  +      print('fShowDart returned $hr');
       } else {
         COMError(hr, 'CoCreateInstance');
       }
  
positive.code:   var hr = CoInitializeEx(
        nullptr, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
    if (SUCCEEDED(hr)) {
      var pFileOpen = allocate<Uint64>();
  
      hr = CoCreateInstance(
          GUID.fromString(CLSID_FileOpenDialog).addressOf,
  
negative.code:   Pointer<NativeFunction> SetFilter;
  }
  
  String pointerAsString(Pointer ptr) =>
      BigInt.from(ptr.address).toUnsigned(64).toRadixString(16).padLeft(16, '0');
  
  String uint64AsString(int addr) =>
      BigInt.from(addr).toUnsigned(64).toRadixString(16).padLeft(16, '0');
  
  void COMError(int hresult, String function) {
    hresult = hresult.toUnsigned(32);
  