Rev 99 | Rev 101 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 99 | Rev 100 | ||
---|---|---|---|
Line 34... | Line 34... | ||
34 | format: DWORD; // Version of the info file |
34 | format: DWORD; // Version of the info file |
35 | // Win95 (without IE4): 00 00 00 00 |
35 | // Win95 (without IE4): 00 00 00 00 |
36 | // Win NT4: 02 00 00 00 (Win96/Cairo?) |
36 | // Win NT4: 02 00 00 00 (Win96/Cairo?) |
37 | // Win95 (with IE4), 98: 04 00 00 00 |
37 | // Win95 (with IE4), 98: 04 00 00 00 |
38 | // Win Me, 2000, XP: 05 00 00 00 (NT4+IE4, NT5?) |
38 | // Win Me, 2000, XP: 05 00 00 00 (NT4+IE4, NT5?) |
39 | totalEntries: DWORD; // Only Win95 (without IE4) and Win NT4, other OS versions might use the registry instead |
39 | totalEntries: DWORD; // Only Win95 (without IE4) and Win NT4, other OS versions will use the registry instead and might write information on WM_ENDSESSION for compatibility reasons |
40 | nextPossibleID: DWORD; // Only Win95 (without IE4) and Win NT4, other OS versions might use the registry instead |
40 | nextPossibleID: DWORD; // Only Win95 (without IE4) and Win NT4, other OS versions will use the registry instead and might write information on WM_ENDSESSION for compatibility reasons |
41 | recordLength: DWORD; // 0x181 = ANSI records |
41 | recordLength: DWORD; // 0x181 = ANSI records |
42 | // 0x320 = Unicode records |
42 | // 0x320 = Unicode records |
43 | totalSize: DWORD; // sum of all "originalSize" values; |
43 | totalSize: DWORD; // sum of all "originalSize" values; |
44 | // Only Win95 (without IE4) and Win NT4, other OS versions might use the registry instead |
44 | // Only Win95 (without IE4) and Win NT4, other OS versions will use the registry instead and might write information on WM_ENDSESSION for compatibility reasons |
45 | end; |
45 | end; |
46 | 46 | ||
47 | ### ANSI record (Win95, Win98, WinMe) |
47 | ### ANSI record (Win95, Win98, WinMe) |
48 | 48 | ||
- | 49 | When a file is deleted, the first byte of `sourceAnsi` will be filled with a zero byte, |
|
- | 50 | making the zero-terminated string empty. This way, the record is marked as deleted |
|
- | 51 | and the INFO/INFO2 file does not need to be reorganized. |
|
- | 52 | ||
49 | type |
53 | type |
50 | // Windows 95: INFO file with TRbInfoRecordA; Folder deletion NOT possible |
54 | // Windows 95: INFO file with TRbInfoRecordA; Folder deletion NOT possible |
51 | // Windows 95 +IE4: INFO2 file with TRbInfoRecordA; Folder deletion possible |
55 | // Windows 95 +IE4: INFO2 file with TRbInfoRecordA; Folder deletion possible |
52 | PRbInfoRecordA = ^TRbInfoRecordA; |
56 | PRbInfoRecordA = ^TRbInfoRecordA; |
53 | TRbInfoRecordA = packed record |
57 | TRbInfoRecordA = packed record |
54 | sourceAnsi: array[0..MAX_PATH-1] of AnsiChar; // 260 characters (including NUL terminator) |
58 | sourceAnsi: array[0..MAX_PATH-1] of AnsiChar; // 260 characters (including NUL terminator) |
55 | recordNumber: DWORD; |
59 | recordNumber: DWORD; |
56 | sourceDrive: DWORD; // 0=A, 1=B, 2=C, ... |
60 | sourceDrive: DWORD; // 0=A, 1=B, 2=C, ..., Z=25, @=26 (@ is the "Network home drive" of the Win95 time) |
57 | deletionTime: FILETIME; |
61 | deletionTime: FILETIME; |
58 | originalSize: DWORD; // Size occupied on disk. Not the actual file size. |
62 | originalSize: DWORD; // Size occupied on disk. Not the actual file size. |
59 | // INFO2, for folders: The whole folder size with contents |
63 | // INFO2, for folders: The whole folder size with contents |
60 | end; |
64 | end; |
61 | 65 | ||
62 | ### Unicode record (WinNT4, Win2000, WinXP) |
66 | ### Unicode record (WinNT4, Win2000, WinXP) |
63 | 67 | ||
- | 68 | When a file is deleted, the first byte of `sourceAnsi` will be filled with a zero byte, |
|
- | 69 | making the zero-terminated string empty. This way, the record is marked as deleted |
|
- | 70 | and the INFO/INFO2 file does not need to be reorganized. |
|
- | 71 | ||
64 | type |
72 | type |
65 | // Windows NT4: INFO file with TRbInfoRecordW; Folder deletion possible |
73 | // Windows NT4: INFO file with TRbInfoRecordW; Folder deletion possible |
66 | // Windows 2000+: INFO2 file with TRbInfoRecordW; Folder deletion possible |
74 | // Windows 2000+: INFO2 file with TRbInfoRecordW; Folder deletion possible |
67 | PRbInfoRecordW = ^TRbInfoRecordW; |
75 | PRbInfoRecordW = ^TRbInfoRecordW; |
68 | TRbInfoRecordW = packed record |
76 | TRbInfoRecordW = packed record |
69 | sourceAnsi: array[0..MAX_PATH-1] of AnsiChar; // 260 characters (including NUL terminator) |
77 | sourceAnsi: array[0..MAX_PATH-1] of AnsiChar; // 260 characters (including NUL terminator) |
70 | recordNumber: DWORD; |
78 | recordNumber: DWORD; |
71 | sourceDrive: DWORD; // 0=A, 1=B, 2=C, ... |
79 | sourceDrive: DWORD; // 0=A, 1=B, 2=C, ..., Z=25, @=26 (@ is the "Network home drive" of the Win95 time) |
72 | deletionTime: FILETIME; |
80 | deletionTime: FILETIME; |
73 | originalSize: DWORD; |
81 | originalSize: DWORD; |
74 | sourceUnicode: array[0..MAX_PATH-1] of WideChar; // 260 characters (including NUL terminator) |
82 | sourceUnicode: array[0..MAX_PATH-1] of WideChar; // 260 characters (including NUL terminator) |
75 | end; |
83 | end; |
76 | 84 | ||
Line 99... | Line 107... | ||
99 | version: int64; // Always 02 00 00 00 00 00 00 00 |
107 | version: int64; // Always 02 00 00 00 00 00 00 00 |
100 | originalSize: int64; |
108 | originalSize: int64; |
101 | deletionTime: FILETIME; |
109 | deletionTime: FILETIME; |
102 | (* sourceUnicode: BSTR; *) |
110 | (* sourceUnicode: BSTR; *) |
103 | sourceCountChars: DWORD; // including NUL |
111 | sourceCountChars: DWORD; // including NUL |
104 | //sourceUnicode: array[0..sourceCountChars+1] of WideChar; |
112 | //sourceUnicode: array[0..sourceCountChars-1] of WideChar; |
105 | end; |
113 | end; |