private static QueryUsnJournalData QueryJournal(SafeFileHandle volumeHandle) { QueryUsnJournalResult queryResult = FileUtilities.TryQueryUsnJournal(volumeHandle); XAssert.AreEqual( QueryUsnJournalStatus.Success, queryResult.Status, "Failed to query the volume's change journal. Is it enabled on the test output directory's volume?"); XAssert.IsTrue(queryResult.Succeeded); return(queryResult.Data); }
private QueryUsnJournalData QueryJournal(SafeFileHandle volumeHandle) { QueryUsnJournalResult queryResult = FileUtilities.TryQueryUsnJournal(volumeHandle); XAssert.AreEqual( QueryUsnJournalStatus.Success, queryResult.Status, "Failed to query the volume's change journal. Is it enabled on volume of the test temporary directory '" + TemporaryDirectory + "'?"); XAssert.IsTrue(queryResult.Succeeded); return(queryResult.Data); }
/// <inheritdoc /> public MaybeResponse <QueryUsnJournalResult> QueryJournal(QueryJournalRequest request) { Contract.Assert(request.VolumeGuidPath.IsValid); SafeFileHandle volumeHandle; OpenFileResult volumeOpenResult = OpenVolumeHandle(request.VolumeGuidPath, out volumeHandle); using (volumeHandle) { if (!volumeOpenResult.Succeeded) { string message = I($"Failed to open a volume handle for the volume '{request.VolumeGuidPath.Path}': Status: {volumeOpenResult.Status.ToString()} | Error code: {volumeOpenResult.NativeErrorCode}"); return(new MaybeResponse <QueryUsnJournalResult>( new ErrorResponse(ErrorStatus.FailedToOpenVolumeHandle, message))); } QueryUsnJournalResult result = FileUtilities.TryQueryUsnJournal(volumeHandle); return(new MaybeResponse <QueryUsnJournalResult>(result)); } }
public void QueryJournal() { WithVolumeHandle( volumeHandle => { using (FileStream file = File.Create(GetFullPath("File"))) { QueryUsnJournalResult queryResult = FileUtilities.TryQueryUsnJournal(volumeHandle); XAssert.AreEqual( QueryUsnJournalStatus.Success, queryResult.Status, "Failed to query the volume's change journal. Is it enabled on the test output directory's volume?"); XAssert.IsTrue(queryResult.Succeeded); Usn usn = FileUtilities.ReadFileUsnByHandle(file.SafeFileHandle).Value.Usn; XAssert.IsTrue(queryResult.Data.LowestValidUsn <= usn); XAssert.IsTrue(queryResult.Data.NextUsn > usn); } }); }
/// <summary> /// Writes the data for a USN journal metadata query (though it may have returned an error)> /// </summary> public static void WriteQueryUsnJournalResult(this ChangeJournalServiceProtocolWriter writer, QueryUsnJournalResult result) { Contract.Requires(writer != null); Contract.Requires(result != null); writer.Write((int)result.Status); if (result.Succeeded) { writer.WriteUsnJournalData(result.Data); } }