Example #1
0
        private void VerifyPriorityHint(SafeFileHandle fileHandle, Kernel32Types.PRIORITY_HINT priorityHint)
        {
            NTTypes.IO_STATUS_BLOCK statusBlock = new NTTypes.IO_STATUS_BLOCK();
            NTTypes.FILE_IO_PRIORITY_HINT_INFORMATION ioPriorityHintInfo = new NTTypes.FILE_IO_PRIORITY_HINT_INFORMATION();
            IntPtr ioPriorityHintInfoPtr = Marshal.AllocHGlobal(Marshal.SizeOf(ioPriorityHintInfo));

            IntPtr queryStatus       = FabricFile.NtQueryInformationFile(fileHandle, ref statusBlock, ioPriorityHintInfoPtr, (uint)Marshal.SizeOf(ioPriorityHintInfo), NTTypes.FILE_INFORMATION_CLASS.FileIoPriorityHintInformation);
            bool   isQuerySuccessful = (queryStatus == IntPtr.Zero) && (statusBlock.Status == 0);

            Assert.IsTrue(isQuerySuccessful);

            ioPriorityHintInfo = (NTTypes.FILE_IO_PRIORITY_HINT_INFORMATION)Marshal.PtrToStructure(ioPriorityHintInfoPtr, typeof(NTTypes.FILE_IO_PRIORITY_HINT_INFORMATION));
            Assert.AreEqual <int>((int)ioPriorityHintInfo.PriorityHint, (int)priorityHint);
        }
Example #2
0
 internal static extern IntPtr NtQueryInformationFile(
     SafeHandle FileHandle,
     ref NTTypes.IO_STATUS_BLOCK IoStatusBlock,
     IntPtr pInfoBlock,
     uint length,
     NTTypes.FILE_INFORMATION_CLASS fileInformation);