Dino writes an interesting <strong>article</strong> on how to write shell extensions in managed code. He also provides a brief overview of COM Interop covering both CCW (COM Callable Wrappers) and RCW (Runtime Callable Wrappers), which those of you who have had any experience with COM know has a fair amount of overheard and though is quite seamless to use, it is not to be taken lightly especially if you have custom data types in COM.
The key takeaway to remember for shell extension in addition to the COM Interop basics is the Win32 data types (constants, structs, enums, etc.) that need to be imported. You specify how do you want the type layout - either sequential or offset based - which one you would of course base on the structure of the COM data type.
If you have not played with Interop till now, then I would recommend reading up on the <strong>COM Interop tutorials</strong> first and trying out some simpler stuff. Also in Longhorn, the shell is running managed code, so there is no interop involved.