/// <summary> /// Verify data type FileFsVolumeInformation /// </summary> /// <param name="fileFsVolumeInformation"> FileFsVolumeInformation type data </param> /// <param name="volumeSerialNumber"> A 32-bit unsigned integer that contains the serial number of the volume. </param> /// <param name="isSupportsOOFileSysObj"> If the file system supports object-oriented file system objects. </param> /// <param name="volumeLabel"> A variable-length Unicode field containing the name of the volume. </param> public void VerifyDataTypeFileFsVolumeInformationForOld( FileFsVolumeInformation fileFsVolumeInformation, uint volumeSerialNumber, bool isSupportsOOFileSysObj) { Site.DefaultProtocolDocShortName = "MS-FSCC"; // // Add the debug information // Site.Log.Add(LogEntryKind.Debug, "Verify MS-FSCC_R1796"); // // Verify requirement 1796 // Site.CaptureRequirementIfAreEqual<Type>( typeof(FileFsVolumeInformation), fileFsVolumeInformation.GetType(), 1796, @"The message[FileFsVolumeInformation] contains a FILE_FS_VOLUME_INFORMATION data element."); // // Add the debug information // Site.Log.Add(LogEntryKind.Debug, "Verify MS-FSCC_R1798 Actual VolumeCreationTime: {0}", fileFsVolumeInformation.VolumeCreationTime.ToString()); // // Verify requirement 1798 // Site.CaptureRequirementIfAreEqual<Type>( typeof(long), fileFsVolumeInformation.VolumeCreationTime.GetType(), 1798, @"[In FILE_FS_VOLUME_INFORMATION]VolumeCreationTime (8 bytes): A 64-bit signed integer that contains the time when the volume was created in the format of a FILETIME structure."); // // Add the debug information // Site.Log.Add(LogEntryKind.Debug, "Verify MS-FSCC_R1799 Actual VolumeCreationTime: {0}", fileFsVolumeInformation.VolumeCreationTime); // // Verify requirement 1799 // Site.CaptureRequirementIfIsTrue( fileFsVolumeInformation.VolumeCreationTime >= 0, 1799, @"[In FILE_FS_VOLUME_INFORMATION]VolumeCreationTime (8 bytes): The value of this field MUST be greater than or equal to 0."); // // Add the debug information // Site.Log.Add(LogEntryKind.Debug, "Verify MS-FSCC_R1800 Actual VolumeSerialNumber: {0}, Expected VolumeSerialNumber: {1}.", fileFsVolumeInformation.VolumeSerialNumber, volumeSerialNumber); // // Verify requirement 1800 // bool isVerifyR1800 = ( fileFsVolumeInformation.VolumeSerialNumber.GetType() == typeof(UInt32) && Marshal.SizeOf(fileFsVolumeInformation.VolumeSerialNumber) == 4); Site.CaptureRequirementIfIsTrue( isVerifyR1800, 1800, @"[In FILE_FS_VOLUME_INFORMATION]VolumeSerialNumber (4 bytes): A 32-bit unsigned integer that contains the serial number of the volume."); // // Add the debug information // Site.Log.Add(LogEntryKind.Debug, "Verify MS-FSCC_R1801"); // // Add the debug information // Site.Log.Add(LogEntryKind.Debug, "Verify MS-FSCC_R1802 Actual VolumeSerialNumber: {0}", fileFsVolumeInformation.VolumeSerialNumber); // // Verify requirement 1802 // // As no specific format or content of this field is required for protocol interoperation. // We only verify the size of the VolumeSerialNumber Site.CaptureRequirementIfAreEqual<int>( 4, Marshal.SizeOf(fileFsVolumeInformation.VolumeSerialNumber), 1802, @"[In FILE_FS_VOLUME_INFORMATION]VolumeSerialNumber (4 bytes): No specific format or content of this field is required for protocol interoperation."); // // Add the debug information // Site.Log.Add(LogEntryKind.Debug, "Verify MS-FSCC_R1803 Actual VolumeSerialNumber: {0}", fileFsVolumeInformation.VolumeSerialNumber); // // Verify requirement 1803 // // As this value is not required to be unique, alsp no specific format or content. // That means the value of volumeSerialNumber can be any value, we only the verify the size of it Site.CaptureRequirementIfAreEqual<int>( 4, Marshal.SizeOf(fileFsVolumeInformation.VolumeSerialNumber), 1803, @"[In FILE_FS_VOLUME_INFORMATION]VolumeSerialNumber (4 bytes): This value is not required to be unique."); // // Add the debug information // Site.Log.Add(LogEntryKind.Debug, "Verify MS-FSCC_R1804 Actual VolumeLabelLength: {0}, Expected VolumeLabelLength: {1}.", fileFsVolumeInformation.VolumeLabelLength, fileFsVolumeInformation.VolumeLabel.Length); // // Verify requirement 1804 // // Verify type and the value of the VolumeLabelLength bool isVerifyR1804 = ( fileFsVolumeInformation.VolumeLabelLength.GetType() == typeof(UInt32) && fileFsVolumeInformation.VolumeLabelLength == fileFsVolumeInformation.VolumeLabel.Length); Site.CaptureRequirementIfIsTrue( isVerifyR1804, 1804, @"[In FILE_FS_VOLUME_INFORMATION]VolumeLabelLength (4 bytes): A 32-bit unsigned integer that contains the length, in bytes, including the trailing NULL, if present, of the name of the volume."); // If the file system supports object-oriented file system objects. if (isSupportsOOFileSysObj) { // // Add the debug information // Site.Log.Add(LogEntryKind.Debug, "Verify MS-FSCC_R1805 Actual SupportsObjects: {0}, Expected SupportsObjects: {1}.", fileFsVolumeInformation.SupportsObjects, SupportsObjects_Values.V1); // // Verify requirement 1805 // // Verify type and value of the SupportsObjects bool isVerifyR1805 = ( fileFsVolumeInformation.SupportsObjects.GetType() == typeof(SupportsObjects_Values) && fileFsVolumeInformation.SupportsObjects == SupportsObjects_Values.V1); Site.CaptureRequirementIfIsTrue( isVerifyR1805, 1805, @"[In FILE_FS_VOLUME_INFORMATION]SupportsObjects (1 byte): A 1-byte Boolean (unsigned char) that is TRUE (0x01) if the file system supports object-oriented file system objects."); } // if the file system does not support object-oriented file system objects else { // // Add the debug information // Site.Log.Add(LogEntryKind.Debug, "Verify MS-FSCC_R1806 Actual SupportsObjects: {0}, Expected SupportsObjects: {1}.", fileFsVolumeInformation.SupportsObjects, SupportsObjects_Values.V2); // // Verify requirement 1806 // // Verify type and value of the SupportsObjects bool isVerifyR1806 = ( fileFsVolumeInformation.SupportsObjects.GetType() == typeof(Byte) && fileFsVolumeInformation.SupportsObjects == SupportsObjects_Values.V2); Site.CaptureRequirementIfIsTrue( isVerifyR1806, 1806, @"[In FILE_FS_VOLUME_INFORMATION]SupportsObjects (1 byte): otherwise[if the file system does not support object-oriented file system objects], [it is] FALSE (0x00).<91>"); } // // Add the debug information // Site.Log.Add(LogEntryKind.Debug, "Verify MS-FSCC_R1808 Actual VolumeLabel : {0}", fileFsVolumeInformation.VolumeLabel.ToString()); // // Verify requirement 1808 // Site.CaptureRequirementIfAreEqual<Type>( typeof(Byte[]), fileFsVolumeInformation.VolumeLabel.GetType(), 1808, @"[In FILE_FS_VOLUME_INFORMATION]VolumeLabel (variable): A variable-length Unicode field containing the name of the volume."); // // Add the debug information // Site.Log.Add(LogEntryKind.Debug, "Verify MS-FSCC_R1809"); // // Verify requirement 1809 // Site.CaptureRequirementIfAreEqual<int>( fileFsVolumeInformation.VolumeLabel.Length, (int)fileFsVolumeInformation.VolumeLabelLength, 1809, @"[In FILE_FS_VOLUME_INFORMATION]VolumeLabel (variable): The content of this field can be a NULL-terminated string or can be a string padded with the space character to be VolumeLabelLength bytes long."); Site.DefaultProtocolDocShortName = Site.Properties["ProtocolShortName"]; }
/// <summary> /// Verify the FileFsVolumeInformation fields /// </summary> /// <param name="info">the instance of FileFsVolumeInformation</param> /// <param name="typeOfFileSystem">the type of file system: NTFS, FAT, exFAT or others</param> public void VerifyDataTypeFileFsVolumeInformation(FileFsVolumeInformation info, string typeOfFileSystem) { Site.DefaultProtocolDocShortName = "MS-FSCC"; if (isWindows) { if (typeOfFileSystem == "NTFS") { // // Add the debug information // Site.Log.Add(LogEntryKind.Debug, "Verify MS-FSCC_R1986"); // // Verify MS-FSCC requirement: MS-FSCC_R1986 // // 0x01 for TRUE Site.CaptureRequirementIfAreEqual<byte>( 0x01, (byte)info.SupportsObjects, 1986, @"<91> Section 2.5.8: This value[SupportsObjects] is TRUE for NTFS."); } else { // // Add the debug information // Site.Log.Add(LogEntryKind.Debug, "Verify MS-FSCC_R1987"); // // Verify MS-FSCC requirement: MS-FSCC_R1987 // // 0x00 for FALSE Site.CaptureRequirementIfAreEqual<byte>( 0x00, (byte)info.SupportsObjects, 1987, @"<91> Section 2.5.8: This value[SupportsObjects] is FALSE for other file systems[except NTFS] implemented by Windows."); } } Site.DefaultProtocolDocShortName = Site.Properties["ProtocolShortName"]; }