Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GetFileOptions()

unsafe FileOptions Microsoft.Win32.SafeHandles.SafeFileHandle.GetFileOptions ( )
inlinepackage

Definition at line 533 of file SafeFileHandle.cs.

534 {
536 if (fileOptions != (FileOptions)(-1))
537 {
538 return fileOptions;
539 }
542 int num = Interop.NtDll.NtQueryInformationFile(this, out IoStatusBlock, &createOptions, 4u, 16u);
543 if (num != 0L)
544 {
545 int errorCode = (int)Interop.NtDll.RtlNtStatusToDosError(num);
547 }
549 if ((createOptions & (Interop.NtDll.CreateOptions)48u) == 0)
550 {
551 fileOptions2 |= FileOptions.Asynchronous;
552 }
553 if ((createOptions & Interop.NtDll.CreateOptions.FILE_WRITE_THROUGH) != 0)
554 {
555 fileOptions2 |= FileOptions.WriteThrough;
556 }
557 if ((createOptions & Interop.NtDll.CreateOptions.FILE_RANDOM_ACCESS) != 0)
558 {
559 fileOptions2 |= FileOptions.RandomAccess;
560 }
561 if ((createOptions & Interop.NtDll.CreateOptions.FILE_SEQUENTIAL_ONLY) != 0)
562 {
563 fileOptions2 |= FileOptions.SequentialScan;
564 }
565 if ((createOptions & Interop.NtDll.CreateOptions.FILE_DELETE_ON_CLOSE) != 0)
566 {
567 fileOptions2 |= FileOptions.DeleteOnClose;
568 }
569 if ((createOptions & Interop.NtDll.CreateOptions.FILE_NO_INTERMEDIATE_BUFFERING) != 0)
570 {
571 fileOptions2 |= (FileOptions)536870912;
572 }
573 return _fileOptions = fileOptions2;
574 }
static unsafe int NtQueryInformationFile(SafeFileHandle FileHandle, out IO_STATUS_BLOCK IoStatusBlock, void *FileInformation, uint Length, uint FileInformationClass)
static Exception GetExceptionForWin32Error(int errorCode, string path="")

References Microsoft.Win32.SafeHandles.SafeFileHandle._fileOptions, System.IO.Win32Marshal.GetExceptionForWin32Error(), System.L, and Interop.NtDll.NtQueryInformationFile().