Wrong values of Kernel32.FileShare.Delete and Kernel32.FileAttributes.PosixSemantics
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 1/5
- Geschätzter Aufwand
- Unter einer Stunde
- Anfängerfreundlichkeit
- 83/100
Rechercherichtung
Öffne TruePath/Kernel32.cs und vergleiche die Deklarationen von FileShare.Delete und FileAttributes.PosixSemantics mit den im Issue angegebenen Windows-Werten. Diese Member werden derzeit nicht verwendet. Prüfe daher vor den beiden Korrekturen, ob es im Projekt relevante Interop-Tests oder Referenzen gibt. Fertig ist die Arbeit, wenn beide Enum-Werte den angegebenen Konstanten entsprechen und das Projekt erfolgreich gebaut wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Two members of the Win32 interop enums in Kernel32.cs have values that don't match the Windows headers:
| Member | Current value | Correct value |
|---|---|---|
FileShare.Delete |
0x03 (that is Read | Write) |
0x04 (FILE_SHARE_DELETE) |
FileAttributes.PosixSemantics |
0x0100000 (seven digits, 0x100000) |
0x01000000 (FILE_FLAG_POSIX_SEMANTICS) |
As written, PosixSemantics has the same value as OpenNoRecall (0x00100000, line 96).
Neither member is used anywhere right now (only FileShare.Read is), so nothing is broken today. But passing either one to CreateFile would silently request different behavior from the one intended: FileShare.Delete would grant read and write sharing instead of delete sharing, and PosixSemantics would request FILE_FLAG_OPEN_NO_RECALL instead.
Repro (the enums are internal, hence the reflection):
var k32 = typeof(AbsolutePath).Assembly.GetType("TruePath.Kernel32")!;
uint Get(string type, string name) =>
Convert.ToUInt32(Enum.Parse(k32.GetNestedType(type, BindingFlags.NonPublic)!, name));
Console.WriteLine($"0x{Get("FileShare", "Delete"):X}"); // 3, expected 4
Console.WriteLine($"0x{Get("FileAttributes", "PosixSemantics"):X}"); // 100000, expected 1000000
All the other constants in the file (FileAttributes, FileAccess, FileShare, the FSCTL_*/IOCTL_* codes, the reparse tags) match the Windows headers.
Recommendations
- Fix the two values.
- Prefer not to hand-roll these declarations at all: either delete the unused members, or generate the interop with CsWin32, which takes the values from the official metadata.
- Vorherrschende Sprache
- C#
- Sterne
- 109
- Forks
- 26
- Ø Merge
- 3 T. 2 Std.
- Gemergte PRs (30 T.)
- 13
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus ForNeVeR/TruePath
-
AbsolutePath.ReadKind allocates a new 16 KiB buffer per directory on Windows: the pooled buffer is not returned on failureEvtl. vergeben @FalconTechDev hat das vor 2 Tagen übernommen. Offenenhancement good first issue help wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
ForNeVeR/TruePath#240 · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement good first issue help wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
ForNeVeR/TruePath#165 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Windows tests: symlink access requires dev mode or elevated accessEvtl. vergeben @hamdiakin hat das vor 2 Tagen übernommen. Offendocumentation help wanted
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 57/100
ForNeVeR/TruePath#245 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
DiskUtils.TryGetReparseDataBuffer reads a struct from unzeroed pooled memory and ignores the number of bytes returnedEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offenbug good first issue help wanted
Schwierigkeit 3/5 Ein halber Tag Anfängerfreundlichkeit 57/100
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement help wanted
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in ForNeVeR/TruePath
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
KnifeLemon/Filee#363 ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
-
area-Native untriaged
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
dotnet/machinelearning#7837 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
[CI] .trgen-ignore required for several grammars.Evtl. vergeben @kaby76 hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
antlr/grammars-v4#5073 ·
Maintainer antworten meist innerhalb von 1 Tag
-
[Enhancement]: Add a search box to the Time Zone dropdownEvtl. vergeben @idumlupinar hat das heute übernommen. OffenStatus: New
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
dnnsoftware/Dnn.Platform#7579 ·
Maintainer antworten meist innerhalb von 2 Tagen