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

◆ strategy [2/2]

ReadOnlyMemory<byte> long CancellationToken OSFileStreamStrategy System.IO.RandomAccess.strategy
private

Definition at line 453 of file RandomAccess.cs.

454 {
455 handle.EnsureThreadPoolBindingInitialized();
457 int num = 0;
458 try
459 {
461 if (Interop.Kernel32.WriteFile(handle, (byte*)overlappedValueTaskSource._memoryHandle.Pointer, buffer.Length, IntPtr.Zero, lpOverlapped) == 0)
462 {
464 switch (num)
465 {
466 case 997:
467 overlappedValueTaskSource.RegisterForCancellation(cancellationToken);
468 break;
469 case 232:
471 return (vts: null, errorCode: 0);
472 default:
474 return (vts: null, errorCode: num);
475 }
476 }
477 }
478 catch
479 {
481 throw;
482 }
483 finally
484 {
485 if (num != 997 && num != 0)
486 {
487 strategy?.OnIncompleteOperation(buffer.Length, 0);
488 }
489 }
490 overlappedValueTaskSource.FinishedScheduling();
492 }
static unsafe int WriteFile(IntPtr handle, byte *bytes, int numBytesToWrite, out int numBytesWritten, IntPtr mustBeZero)
static Memory< byte > buffer
static Memory< byte > long CancellationToken OSFileStreamStrategy strategy
static Memory< byte > long CancellationToken cancellationToken
static Memory< byte > long fileOffset
static int GetLastWin32ErrorAndDisposeHandleIfInvalid(SafeFileHandle handle)