Changeset 1873 for trunk/eraser6/Eraser.Util/NtfsApi.cs
- Timestamp:
- 3/1/2010 9:52:43 AM (2 years ago)
- File:
-
- 1 edited
-
trunk/eraser6/Eraser.Util/NtfsApi.cs (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/eraser6/Eraser.Util/NtfsApi.cs
r1859 r1873 38 38 public static long GetMftValidSize(VolumeInfo volume) 39 39 { 40 return GetNtfsVolumeData(volume).MftValidDataLength; 40 NativeMethods.NTFS_VOLUME_DATA_BUFFER? volumeData = GetNtfsVolumeData(volume); 41 if (volumeData == null) 42 throw Win32ErrorCode.GetExceptionForWin32Error(Marshal.GetLastWin32Error()); 43 44 return volumeData.Value.MftValidDataLength; 41 45 } 42 46 … … 48 52 public static long GetMftRecordSegmentSize(VolumeInfo volume) 49 53 { 50 try 51 { 52 return GetNtfsVolumeData(volume).BytesPerFileRecordSegment; 53 } 54 catch (UnauthorizedAccessException) 55 { 54 NativeMethods.NTFS_VOLUME_DATA_BUFFER? volumeData = GetNtfsVolumeData(volume); 55 if (volumeData == null) 56 56 return Math.Min(volume.ClusterSize, 1024); 57 } 57 58 return volumeData.Value.BytesPerFileRecordSegment; 58 59 } 59 60 … … 64 65 /// <param name="volume">The volume to query.</param> 65 66 /// <returns>The NTFS_VOLUME_DATA_BUFFER structure representing the data 66 /// file systme structures for the volume.</returns> 67 /// <exception cref="UnauthorizedAccessException">Thrown when the current user 68 /// does not have the permissions required to obtain the volume information.</exception> 69 internal static NativeMethods.NTFS_VOLUME_DATA_BUFFER GetNtfsVolumeData(VolumeInfo volume) 67 /// file system structures for the volume, or null if the data could not be 68 /// retrieved.</returns> 69 internal static NativeMethods.NTFS_VOLUME_DATA_BUFFER? GetNtfsVolumeData(VolumeInfo volume) 70 70 { 71 71 using (SafeFileHandle volumeHandle = volume.OpenHandle( 72 72 FileAccess.Read, FileShare.ReadWrite, FileOptions.None)) 73 73 { 74 if (volumeHandle.IsInvalid) 75 return null; 76 74 77 uint resultSize = 0; 75 78 NativeMethods.NTFS_VOLUME_DATA_BUFFER volumeData =
Note: See TracChangeset
for help on using the changeset viewer.
