This is preliminary documentation and subject to change.
To comment on this topic, please send us email at ngwssdk@microsoft.com. Thanks!
Appendix E - Known compatibility Issues
While the goal of the runtimes “compatible” IDispatch implementation is to be completely compatible with VB6, there are know areas of incompatibility that were made for performance reasons. This section documents areas where the runtimes compatible IDispatch differs from VB6.
- Passing ByRef parameters with uninitialize pointers.
- When a COM client passes a VT_BSTR | VT_BYREF to a COM server, but sets the pbstrVal to NULL, OleAut gives HRESULT 0x800706f4 (E_INVALIDARG): "A null reference pointer was passed to the stub."
- When a COM client passes a VT_BSTR | VT_BYREF to a NGWS runtime server (using the OleAut-Compatible IDispatch implementation), but sets the pbstrVal to NULL, a NullReferenceException is thrown.
- Date precision
- The precision of the OLE Automation DATE type is limited to seconds. The precision of System.DateTime is 100 nanoseconds. Because of this, COM clients should avoid setting or comparing DATEs to literal numbers such as 123.456 if passing these DATEs to managed code. The numbers are not guaranteed to roundtrip exactly, so users should be using OLE Automation functions to create and compare DATE types.