I have been asked the same question enough times to realise that a more "public answer" would be useful. The question is roughly:

"Has Microsoft deprecated the native Windows API in Vista in favor of a Class based API?"


"Is all functionality in Windows Vista exposed through .NET Framework 3.0 and therefore I will never need to do a Pinvoke again?"

The native Windows API very much remains in Vista. Whilst .NET Framework 2.0 (VS2005) and .NET Framework 3.0 (Vista) gives a great class based interface, we recognise that a greal deal of the applications out there (including from ourselves) were built against the native APIs and will continue to use the native APIs. Infact in Vista the native APIs grow to expose new capabilities – from windows desktop search to explorer extensions to new UI elements such as TaskDialog. Some of the new functionality in Windows Vista is only exposed as native Windows APIs and managed code developers will need to use interop to gain access.

Developers should increasingly look to moving away from native APIs and towards managed code and the .NET Framework and the benefits it bring – but we will be supporting both models for a very, very long time.