Top secret .NET handles – Part 1 – Dependent handles

.NET publicly has documented 4 kind of handles: Weak (also called Short Weak) – Don’t keep target object alive and will return null when object is gone. The target will become null when the object enters for finalization. WeakTrackResurrection (also called Long Weak) – Don’t keep target object alive and will return null when object is gone….


Getting rid of TypeLoadException in your WinRT app

I’ve seen enough people asking about this so I thought I should talk about this in my blog. They see strange first-chance TypeLoadException happening in their application but it doesn’t seem never cause any problem (app doesn’t crash) and everything still seem to work ‘fine’. This seem to happen mostly if you have a C++…


Avoiding C++ types in your P/invokes

It’s easier to explain this in an example. Let’s say you have a export function in your native DLL: void WINAPI MyFunction(_com_ptr_t<IMyInterface> ptr) { // … do something with ptr ptr->Func(); } And the DllImport would be something like this: [DllImport("mydll.dll")] void MyFunction(IMyInterface ptr); Everything seems to be perfectly valid, except that there is a…


WARNING: VS 2012 might break your broken P/Invoke

I’m seeing many people reporting that they are seeing strange P/invoke issues when they moved their code to VS 2012. Typically, they have P/invokes like this: [DllImport("Win32Project2.dll", PreserveSig = true, CharSet = CharSet.Unicode)] static extern int MyPInvoke(out string ret); If you attach a native debugger (or enable native debugging), with the right symbols (public symbol…