Figure 7 Namespace Extension COM Interface Method
| Method | Description | Step | 
| IShellFolder | ||
| BindToObject | Retrieves the IShellFolder interface for the subfolder. | 2 | 
| CreateViewObject | Creates a view object of the folder. | 1 | 
| CompareIDs | Determines the relative order of two file objects or folders, given their item identifier lists. | 2 | 
| EnumObjects | Enumerates the objects in a folder. | 2 | 
| GetAttributesOf | Retrieves the attributes of the specified file object or subfolder. | 1 | 
| GetDisplayNameOf | Retrieves the display name of a file object or subfolder. | 2 | 
| GetUIObjectOf | Creates an OLE interface that can be used to carry out operations on a file object or subfolder like a context menu, icon extraction, data object for copying data, and so on. | 4 | 
| ParseDisplayName | Translates a display name into an item identifier list. |  | 
| SetNameOf | Sets the display name of the specified file object or subfolder and changes its identifier accordingly. |  | 
| BindToStorage | Reserved for future use. |  | 
| IShellView | ||
| CreateViewWindow | Creates the view window. | 1 | 
| DestroyViewWindow | Destroys the view window. | 1 | 
| GetCurrentInfo | Returns the current folder settings. |  | 
| GetItemObject | Allows callers to get an object that represents something in the view. |  | 
| Refresh | Refreshes the display in response to user input. |  | 
| SaveViewState | Saves the shell's view settings so the current state can be restored during a subsequent browsing session. |  | 
| SelectItem | Changes the state of items within the shell view window. |  | 
| TranslateAccelerator | Translates accelerator key strokes when a namespace extension's view has the focus. |  | 
| UIActivate | Called whenever the activation state of the view window is changed by an event not caused by the shell view itself. | 3 | 
| AddPropertySheetPages | Allows the view to add pages to the Options property sheet. |  | 
| EnableModeless | Enables or disables modeless dialog boxes. Not in use by Windows Explorer at this time. |  | 
| EnableModelessSV | Reserved for future use. |  | 
| IEnumIDList | ||
| Clone | Creates a new item enumeration object identical to the current one. | 2 | 
| Next | Retrieves the specified number of item identifiers. | 2 | 
| Reset | Returns to the beginning of the enumeration. | 2 | 
| Skip | Skips over the specified number of items. | 2 | 
Figure 8 SHITEMID and IDLIST
 //
 // SHITEMID -- Item ID
 //
 typedef struct _SHITEMID // mkid
 {
 USHORT cb; // Size of the ID (including cb itself)
 BYTE abID[1]; // The item ID (variable length)
 } SHITEMID;
 typedef UNALIGNED SHITEMID *LPSHITEMID;
 typedef const UNALIGNED SHITEMID *LPCSHITEMID;
 
 //
 // ITEMIDLIST -- List if item IDs (combined with 0-terminator)
 //
 typedef struct _ITEMIDLIST // idl
 {
 SHITEMID mkid;
 } ITEMIDLIST;
 typedef UNALIGNED ITEMIDLIST * LPITEMIDLIST;
 typedef const UNALIGNED ITEMIDLIST * LPCITEMIDLIST;
Figure 9 IDL Data Structures
 // From EnumIDL.h
 typedef enum tagMYPIDLTYPE
 {
     PT_ROOT    = 0x00,
     PT_FOLDER  = 0x01,
     PT_FILE    = 0x02,
     PT_INVALID = 0x04
 }MYPIDLTYPE;
 
 typedef struct tagMYPIDLDATA
 {
     char        szSignature[4];    
     MYPIDLTYPE  pidlType;
     DWORD       dwSizeHigh;
     DWORD       dwSizeLow;
     DWORD       dwAttribs;
     FILETIME    ftLastWriteTime;
     UINT        uiSizeFile;
     UINT        uiSizeType;
     // uiSizeFile, uiSizeType contain the size of 
     // File & Type strings from szFileAndType
     TCHAR       szFileAndType[1];
 }MYPIDLDATA, FAR *LPMYPIDLDATA;
Figure 10 IShell Browser Methods
| Method | Description | Step | 
| BrowseObject | Tells Windows Explorer to browse in another folder. |  | 
| EnableModelessSB | Enables or disables modeless windows of Windows Explorer, such as a floating toolbar. |  | 
| GetControlWindow | Gets the window handle to a Windows Explorer control. |  | 
| GetViewStateStream | Returns a view-specific stream that can be used to read and write the persistent data for a view. |  | 
| InsertMenusSB | Inserts the Windows Explorer menu items in an empty menu created by the view. | 3 | 
| OnViewWindowActive | Informs Windows Explorer that the view was activated. |  | 
| QueryActiveShellView | Returns the currently activated (displayed) shell view object. |  | 
| RemoveMenusSB | Instructs the container to remove its items from a composite menu. The tasks it performs are the opposite of InsertMenuSB tasks. | 3 | 
| SendControlMsg | Sends messages to Windows Explorer controls. | 3 | 
| SetMenuSB | Installs the composite menu in Windows Explorer. | 3 | 
| SetStatusTextSB | Sets and displays status text in the Windows Explorer window. | 3 | 
| SetToolbarItems | Adds toolbar items to the Windows Explorer toolbar. | 3 | 
| TranslateAcceleratorSB | Reserved for future use. |  | 
Figure 11 IContext Menu and IExtract Icon
| Method | Description | Step | 
| IContextMenu | ||
| GetCommandString | Retrieves the help text for a menu command or the language-independent name of a menu command. | 4 | 
| InvokeCommand | Carries out a menu command. | 4 | 
| QueryContextMenu | Adds menu items to the specified menu. | 4 | 
| IExtractIcon | ||
| Extract | Extracts an icon from the specified location. |  | 
| GetIconLocation | Retrieves the icon location for an object. |  | 
Figure 12 More Namespace Extension Methods
| Method | Description | Step | 
| IDataObject | ||
| GetData | Renders the data described in a FORMATETC structure and transfers it through the STGMEDIUM structure. | 5 | 
| GetDataHere | Renders the data described in a FORMATETC structure and transfers it through the STGMEDIUM structure allocated by the caller. |  | 
| QueryGetData | Determines whether the data object is capable of rendering the data described in the FORMATETC structure. | 5 | 
| GetCanonicalFormatEtc | Provides a potentially different but logically equivalent FORMATETC structure. |  | 
| SetData | Provides the source data object with data described by a FORMATETC structure and an STGMEDIUM structure. | 5 | 
| EnumFormatEtc | Creates and returns a pointer to an object to enumerate the FORMATETC supported by the data object. |  | 
| DAdvise | Creates a connection between a data object and an advise sink so the advise sink can receive notifications of changes in the data object. |  | 
| DUnadvise | Destroys a notification previously set up with the DAdvise method. |  | 
| EnumDAdvise | Creates and returns a pointer to an object to enumerate the current advisory connections. |  | 
| IDropSource | ||
| QueryContinueDrag | Determines whether a drag-and-drop operation should continue. |  | 
| GiveFeedback | Gives visual feedback to an end user during a drag-and-drop operation. |  | 
| IDropTarget | ||
| DragEnter | Determines whether a drop can be accepted and its effect if it is accepted. |  | 
| DragOver | Provides target feedback to the user through the DoDragDrop function. |  | 
| DragLeave | Causes the drop target to suspend its feedback actions. |  | 
| Drop | Drops the data into the target window. |  | 
| IEnumFORMATETC | ||
| Next | Retrieves a specified number of items in the enumeration sequence. |  | 
| Skip | Skips over a specified number of items in the enumeration sequence. |  | 
| Reset | Resets the enumeration sequence to the beginning. |  | 
| Clone | Creates another enumerator that contains the same enumeration state as the current one. |  |