Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
2.6 KiB

  1. // no one should know what is in this file. this data is private to the folders
  2. #ifndef _PIDL_H_
  3. #define _PIDL_H_
  4. #include <idhidden.h>
  5. #include <lmcons.h> // UNLEN
  6. // CRegFolder pidl
  7. #pragma pack(1)
  8. typedef struct
  9. {
  10. WORD cb;
  11. BYTE bFlags;
  12. BYTE bOrder;
  13. CLSID clsid;
  14. } IDREGITEM;
  15. typedef UNALIGNED IDREGITEM *LPIDREGITEM;
  16. typedef const UNALIGNED IDREGITEM *LPCIDREGITEM;
  17. #pragma pack()
  18. // CFSFolder pidl
  19. typedef struct
  20. {
  21. WORD cb; // pidl size
  22. BYTE bFlags; // SHID_FS_* bits
  23. DWORD dwSize; // -1 implies > 4GB, hit the disk to get the real size
  24. WORD dateModified;
  25. WORD timeModified;
  26. WORD wAttrs; // FILE_ATTRIBUTES_* cliped to 16bits
  27. CHAR cFileName[MAX_PATH]; // this is WCHAR for names that don't round trip
  28. CHAR cAltFileName[8+1+3+1]; // ANSI version of cFileName (some chars not converted)
  29. } IDFOLDER;
  30. typedef UNALIGNED IDFOLDER *LPIDFOLDER;
  31. typedef const UNALIGNED IDFOLDER *LPCIDFOLDER;
  32. // IDList factory
  33. #pragma pack(1)
  34. typedef struct
  35. {
  36. WORD wDate;
  37. WORD wTime;
  38. } DOSSTAMP;
  39. typedef struct
  40. {
  41. HIDDENITEMID hid;
  42. DOSSTAMP dsCreate;
  43. DOSSTAMP dsAccess;
  44. WORD offNameW;
  45. WORD offResourceA; // ascii
  46. } IDFOLDEREX; // IDLHID_IDFOLDEREX
  47. typedef struct
  48. {
  49. HIDDENITEMID hid;
  50. WCHAR szUserName[UNLEN];
  51. } IDPERSONALIZED; // IDLHID_PERSONALIZED
  52. #pragma pack()
  53. typedef UNALIGNED IDFOLDEREX *PIDFOLDEREX;
  54. typedef const UNALIGNED IDFOLDEREX *PCIDFOLDEREX;
  55. typedef UNALIGNED IDPERSONALIZED *PIDPERSONALIZED;
  56. typedef const UNALIGNED IDPERSONALIZED *PCIDPERSONALIZED;
  57. #define IDFXF_PERSONALIZED 0x0001
  58. #define IDFXF_USELOOKASIDE 0x8000
  59. // rev the version when ever we change IDFOLDEREX
  60. #define IDFX_V1 0x0003
  61. #define IDFX_CV IDFX_V1
  62. // End of hidden data for IDFOLDER
  63. #pragma pack(1)
  64. typedef struct
  65. {
  66. WORD cb;
  67. BYTE bFlags;
  68. CHAR cName[4];
  69. ULONGLONG qwSize; // this is a "guess" at the disk size and free space
  70. ULONGLONG qwFree;
  71. WORD wSig;
  72. CLSID clsid;
  73. } IDDRIVE;
  74. typedef const UNALIGNED IDDRIVE *LPCIDDRIVE;
  75. typedef UNALIGNED IDDRIVE *LPIDDRIVE;
  76. #pragma pack()
  77. // wSig usage
  78. // we dont have much space in the word, so the first byte is an ordinal representing what
  79. // kind of pidl extension were doing
  80. // the second byte is flags pertaining to that ordinal
  81. #define IDDRIVE_ORDINAL_MASK 0xFF00
  82. #define IDDRIVE_FLAGS_MASK 0x00FF
  83. #define IDDRIVE_ORDINAL_DRIVEEXT 0x0100
  84. #define IDDRIVE_FLAGS_DRIVEEXT_HASCLSID 0x0001
  85. typedef struct
  86. {
  87. IDDRIVE idd;
  88. USHORT cbNext;
  89. } DRIVE_IDLIST;
  90. #endif