| Parameter | Description |
|---|---|
| filename | The name of the file to query. |
| result | A struct that this function fills in with information about the file upon completion of this asynchronous request. |
ReadHandle A read handle that you can use to monitor the progress and status of this GetFileInfo command.
Gets information about a file.
This function gets information about the specified file asynchronously without opening the file.
On completion of the asynchronous operation, the result parameter's FileInfoResult.FileState member reports whether the file exists (FileState.Exists) or not (FileState.Absent).
If the file exists, the result parameter's FileInfoResult.FileSize member reports the size of the file in bytes. If the file doesn't exist, the size is reported as zero.GetFileInfo does not copy result. It stores the pointer and writes the file information through it on a worker thread when the operation completes, which can be after the call returns. Keep the FileInfoResult that result refers to valid and pinned until the returned ReadHandle has a status other than ReadStatus.InProgress. Otherwise, the garbage collector can move or free the memory before the write occurs. Until the operation completes, FileInfoResult.FileState has its initial value of FileState.Absent, which is the same value that a missing file produces, so treat the result as final only after the handle completes.
Warning: A fixed statement around the GetFileInfo call pins the FileInfoResult only for the duration of its block, not for the asynchronous operation that continues after the block exits. This is a common mistake in async methods, where the compiler places locals that outlive an await on the managed heap. Pin the memory for the whole operation.