Subversion Repositories recyclebinunit

Rev

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;