public static MessageStatus FsCtlSetZeroData(
            BufferSize bufferSize,
            InputBuffer_FSCTL_SET_ZERO_DATA inputBuffer,
            bool isIsDeletedTrue,
            bool isConflictDetected
            )
        {
            Condition.IsTrue(bufferSize == BufferSize.LessThanFILE_ZERO_DATA_INFORMATION || bufferSize == BufferSize.BufferSizeSuccess);

            if (!isObjectImplementedFunctionality)
            {
                Helper.CaptureRequirement(4335, @"[In FSCTL_SET_ZERO_DATA] If the object store does not implement this functionality,
                    the operation MUST be failed with STATUS_INVALID_DEVICE_REQUEST.<50>");
                return MessageStatus.INVALID_DEVICE_REQUEST;
            }
            if (bufferSize == BufferSize.LessThanFILE_ZERO_DATA_INFORMATION)
            {
                Helper.CaptureRequirement(1302, @"[In FSCTL_SET_ZERO_DATA]The operation MUST be failed with STATUS_INVALID_PARAMETER
                    under any of the following conditions:InputBufferSize is less than sizeof( FILE_ZERO_DATA_INFORMATION ).");
                return MessageStatus.INVALID_PARAMETER;
            }

            if (inputBuffer == InputBuffer_FSCTL_SET_ZERO_DATA.FileOffsetLessThanZero)
            {
                Helper.CaptureRequirement(1303, @"[In FSCTL_SET_ZERO_DATA]The operation MUST be failed with STATUS_INVALID_PARAMETER
                    under any of the following conditions:InputBuffer.FileOffset is less than 0.");
                return MessageStatus.INVALID_PARAMETER;
            }

            if (inputBuffer == InputBuffer_FSCTL_SET_ZERO_DATA.BeyondFinalZeroLessThanZero)
            {
                Helper.CaptureRequirement(1304, @"[In FSCTL_SET_ZERO_DATA]The operation MUST be failed with STATUS_INVALID_PARAMETER
                    under any of the following conditions:InputBuffer.BeyondFinalZero is less than 0.");
                return MessageStatus.INVALID_PARAMETER;
            }

            if (isFileVolumeReadOnly)
            {
                Helper.CaptureRequirement(1307, @"[In FSCTL_SET_ZERO_DATA]Pseudocode for the operation is as follows:
                    If Open.File.Volume.IsReadOnly is TRUE, the operation MUST be failed with STATUS_MEDIA_WRITE_PROTECTED.");
                return MessageStatus.MEDIA_WRITE_PROTECTED;
            }

            if (isIsDeletedTrue)
            {
                Helper.CaptureRequirement(1309, @"[In FSCTL_SET_ZERO_DATA,Pseudocode for the operation is as follows:]While TRUE :
                    If Open.Stream.IsDeleted is TRUE, the operation MUST be failed with STATUS_FILE_DELETED.");
                return MessageStatus.FILE_DELETED;
            }

            if (isConflictDetected)
            {
                Helper.CaptureRequirement(1316, @"[In FSCTL_SET_ZERO_DATA,Pseudocode for the operation is as follows:While TRUE :]
                    If a conflict is detected the operation MUST be failed with STATUS_FILE_LOCK_CONFLICT.");
                return MessageStatus.FILE_LOCK_CONFLICT;
            }

            Helper.CaptureRequirement(1365, @"[In FSCTL_SET_ZERO_DATA,Pseudocode for the operation is as follows:]
                Upon successful completion of the operation, the object store MUST return:Status set to STATUS_SUCCESS.");
            Helper.CaptureRequirement(1569, @"[In FSCTL_SET_ZERO_DATA]On completion, the object store MUST return[Status].");
            return MessageStatus.SUCCESS;
        }
 internal static MessageStatus WorkaroundFsCtlSetZeroData(FileSystem fileSystem, BufferSize bufferSize, InputBuffer_FSCTL_SET_ZERO_DATA inputBuffer, bool isIsDeletedTrue, bool isConflictDetected, MessageStatus returnedStatus, ITestSite site)
 {
     if (fileSystem != FileSystem.NTFS && fileSystem != FileSystem.REFS)
     {
         returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(4335, MessageStatus.INVALID_DEVICE_REQUEST, returnedStatus, site);
     }
     else if (isIsDeletedTrue &&
              bufferSize == BufferSize.BufferSizeSuccess &&
              (inputBuffer == InputBuffer_FSCTL_SET_ZERO_DATA.BufferSuccess || inputBuffer == InputBuffer_FSCTL_SET_ZERO_DATA.FileOffsetGreatThanBeyondFinalZero))
     {
         returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(1309, MessageStatus.FILE_DELETED, returnedStatus, site);
     }
     else if (isConflictDetected &&
              bufferSize == BufferSize.BufferSizeSuccess &&
              (inputBuffer == InputBuffer_FSCTL_SET_ZERO_DATA.BufferSuccess || inputBuffer == InputBuffer_FSCTL_SET_ZERO_DATA.FileOffsetGreatThanBeyondFinalZero))
     {
         returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(1316, MessageStatus.FILE_LOCK_CONFLICT, returnedStatus, site);
     }
     return(returnedStatus);
 }
 internal static MessageStatus WorkaroundFsCtlSetZeroData(BufferSize bufferSize, InputBuffer_FSCTL_SET_ZERO_DATA inputBuffer, bool isIsDeletedTrue, bool isConflictDetected, MessageStatus returnedStatus, ITestSite site)
 {
     if (isIsDeletedTrue &&
         bufferSize == BufferSize.BufferSizeSuccess &&
         (inputBuffer == InputBuffer_FSCTL_SET_ZERO_DATA.BufferSuccess || inputBuffer == InputBuffer_FSCTL_SET_ZERO_DATA.FileOffsetGreatThanBeyondFinalZero) )
     {
         returnedStatus = FsaUtility.TransferExpectedResult<MessageStatus>(1309, MessageStatus.FILE_DELETED, returnedStatus, site);
     }
     else if (isConflictDetected &&
         bufferSize == BufferSize.BufferSizeSuccess &&
         (inputBuffer == InputBuffer_FSCTL_SET_ZERO_DATA.BufferSuccess || inputBuffer == InputBuffer_FSCTL_SET_ZERO_DATA.FileOffsetGreatThanBeyondFinalZero))
     {
         returnedStatus = FsaUtility.TransferExpectedResult<MessageStatus>(1316, MessageStatus.FILE_LOCK_CONFLICT, returnedStatus, site);
     }
     return returnedStatus;
 }