---
title: "Pidl Class"
canonical: https://www.graphicsmill.com/docs/gm5/T_Aurigma_GraphicsMill_WinControls_Pidl.htm
product: "Graphics Mill 5.5 for .NET"
---

This documentation is for the old version. [Go to the latest Graphics Mill docs](https://www.graphicsmill.com/docs/gm/)

# Pidl Class
 
The class represents a wrapper class for PIDL structures management.
 
**Namespace:** [Aurigma.GraphicsMill.WinControls](https://www.graphicsmill.com/docs/gm5/N_Aurigma_GraphicsMill_WinControls.htm.md)
 **Assembly:** Aurigma.GraphicsMill.WinControls (in Aurigma.GraphicsMill.WinControls.dll)
 
## Syntax
  
```
Public NotInheritable Class Pidl _Implements IDisposable
```
 
```csharp
public sealed class Pidl : IDisposable
```
 
## Remarks
  
Every object of the file system (like files, folders, drives, etc.) may be identified by the pointer to an item identifier list (or abbreviated - *PIDL*). Moreover, any object of the Shell namespace may be identified by the PIDL (for example, connected USB storage devices, digital photo cameras, network resources, etc). So, the class provides access to objects of the shell namespace.
 
To get a PIDL by the path string, you can use the [Create(String)](https://www.graphicsmill.com/docs/gm5/M_Aurigma_GraphicsMill_WinControls_Pidl_Create_1_bb3a7a4f.htm.md) method. Also, this method enables to create PIDL for special object of the file system such as *My Document* folder and similar ones. Just pass a member of the [StandardFolder](https://www.graphicsmill.com/docs/gm5/T_Aurigma_GraphicsMill_WinControls_StandardFolder.htm.md) enumeration to this method.
 
The most exciting feature of this class is possibility to get children of a file system object. This way you can organize a file system tree which includes not only files and folder, but also removable media, special folder, etc. To do it, you should create a root PIDL based on the [Desktop](https://www.graphicsmill.com/docs/gm5/T_Aurigma_GraphicsMill_WinControls_StandardFolder.htm.md) and recursively get its subitems. The PIDL distinguishes two kinds of subitems: files and folders.
 
*Files* are objects of the file system which cannot have any subitems. They always has a binary content available through the [Stream](https://www.graphicsmill.com/docs/gm5/P_Aurigma_GraphicsMill_WinControls_Pidl_Stream.htm.md) property. To check whether the current PIDL is a file, use the [Type](https://www.graphicsmill.com/docs/gm5/P_Aurigma_GraphicsMill_WinControls_Pidl_Type.htm.md) property. It should be equal to [File](https://www.graphicsmill.com/docs/gm5/T_Aurigma_GraphicsMill_WinControls_PidlType.htm.md).
 
Contrariwise, *folders* are objects which can contain subitems. Not only directories can be interpreted as folders, but also system drives, removable media, etc. Folders do not have binary content and its [Stream](https://www.graphicsmill.com/docs/gm5/P_Aurigma_GraphicsMill_WinControls_Pidl_Stream.htm.md) property is not valid. To check whether the current PIDL is a file, use the [Type](https://www.graphicsmill.com/docs/gm5/P_Aurigma_GraphicsMill_WinControls_Pidl_Type.htm.md) property. It should be equal to [Folder](https://www.graphicsmill.com/docs/gm5/T_Aurigma_GraphicsMill_WinControls_PidlType.htm.md). To get all files of the current folder, use the [Files](https://www.graphicsmill.com/docs/gm5/P_Aurigma_GraphicsMill_WinControls_Pidl_Files.htm.md) property. If you need to get subfolder only, use the [Folders](https://www.graphicsmill.com/docs/gm5/P_Aurigma_GraphicsMill_WinControls_Pidl_Folders.htm.md) property. To get both folders and files, use the [Items](https://www.graphicsmill.com/docs/gm5/P_Aurigma_GraphicsMill_WinControls_Pidl_Items.htm.md) property. The parent PIDL can be received using the [Parent](https://www.graphicsmill.com/docs/gm5/P_Aurigma_GraphicsMill_WinControls_Pidl_Parent.htm.md) property.
 
If you want to convert the PIDL to a common file system path string, you can just use the [Path](https://www.graphicsmill.com/docs/gm5/P_Aurigma_GraphicsMill_WinControls_Pidl_Path.htm.md) property. However keep in mind, that not each PIDL represents physical file or folder. In this case you will get the empty string.
 
## Inheritance Hierarchy
  
- [System.Object](http://msdn2.microsoft.com/en-us/e5kfa45b)
    - Aurigma.GraphicsMill.WinControls.Pidl
 
## Thread Safety
 Static members of this type are safe for multi-threaded operations. Instance members of this type are not safe for multi-threaded operations.
 
## Object Model

[![](https://www.graphicsmill.com/docs/gm5/Aurigma.GraphicsMill.WinControls_ObjectModel_51.png)](https://www.graphicsmill.com/docs/gm5/T_Aurigma_GraphicsMill_WinControls_Pidl.htm.md)
![](https://www.graphicsmill.com/docs/gm5/ObjectModel2.png)[![](https://www.graphicsmill.com/docs/gm5/Aurigma.GraphicsMill.WinControls_ObjectModel_91.png)](https://www.graphicsmill.com/docs/gm5/T_Aurigma_GraphicsMill_WinControls_Pidl.htm.md)
![](https://www.graphicsmill.com/docs/gm5/ObjectModel2.png)[![](https://www.graphicsmill.com/docs/gm5/Aurigma.GraphicsMill.WinControls_ObjectModel_92.png)](https://www.graphicsmill.com/docs/gm5/T_Aurigma_GraphicsMill_WinControls_Pidl.htm.md)
![](https://www.graphicsmill.com/docs/gm5/ObjectModel2.png)[![](https://www.graphicsmill.com/docs/gm5/Aurigma.GraphicsMill.WinControls_ObjectModel_93.png)](https://www.graphicsmill.com/docs/gm5/T_Aurigma_GraphicsMill_WinControls_Pidl.htm.md)
![](https://www.graphicsmill.com/docs/gm5/ObjectModel2.png)[![](https://www.graphicsmill.com/docs/gm5/Aurigma.GraphicsMill.WinControls_ObjectModel_94.png)](https://www.graphicsmill.com/docs/gm5/T_Aurigma_GraphicsMill_WinControls_Pidl.htm.md)
![](https://www.graphicsmill.com/docs/gm5/ObjectModel2.png)[![](https://www.graphicsmill.com/docs/gm5/Aurigma.GraphicsMill.WinControls_ObjectModel_95.png)](https://www.graphicsmill.com/docs/gm5/T_Aurigma_GraphicsMill_WinControls_Pidl.htm.md)
![](https://www.graphicsmill.com/docs/gm5/ObjectModel1.png)![](https://www.graphicsmill.com/docs/gm5/Aurigma.GraphicsMill.WinControls_ObjectModel_96.png)
  
## See Also

### Reference

- [Pidl Members](https://www.graphicsmill.com/docs/gm5/AllMembers_T_Aurigma_GraphicsMill_WinControls_Pidl.htm.md)
- [Aurigma.GraphicsMill.WinControls Namespace](https://www.graphicsmill.com/docs/gm5/N_Aurigma_GraphicsMill_WinControls.htm.md)
