Code: Select all
using Windows.Win32;
using Windows.Win32.Storage.CloudFilters;
using Windows.Win32.Foundation;
using System.Runtime.InteropServices;
namespace PStore;
internal class Install {
public static void Main() {
unsafe {
fixed (char* providerNameP = "PStore", providerVersionP = "1.1.1") {
CF_SYNC_REGISTRATION SyncReg = new() {
ProviderName = new PCWSTR(providerNameP),
ProviderVersion = new PCWSTR(providerVersionP)
};
CF_SYNC_POLICIES SyncPol = new() {
Hydration = new CF_HYDRATION_POLICY { Primary = CF_HYDRATION_POLICY_PRIMARY.CF_HYDRATION_POLICY_FULL, Modifier = CF_HYDRATION_POLICY_MODIFIER.CF_HYDRATION_POLICY_MODIFIER_AUTO_DEHYDRATION_ALLOWED },
Population = new CF_POPULATION_POLICY { Primary = CF_POPULATION_POLICY_PRIMARY.CF_POPULATION_POLICY_FULL, Modifier = CF_POPULATION_POLICY_MODIFIER.CF_POPULATION_POLICY_MODIFIER_NONE },
InSync = CF_INSYNC_POLICY.CF_INSYNC_POLICY_NONE,
HardLink = CF_HARDLINK_POLICY.CF_HARDLINK_POLICY_NONE,
PlaceholderManagement = CF_PLACEHOLDER_MANAGEMENT_POLICY.CF_PLACEHOLDER_MANAGEMENT_POLICY_DEFAULT,
};
HRESULT res = PInvoke.CfRegisterSyncRoot(
@"C:\Users\finne\PStore",
SyncReg,
SyncPol,
CF_REGISTER_FLAGS.CF_REGISTER_FLAG_NONE
);
if (res != HRESULT.S_OK) {
Console.WriteLine($"Failed with {(uint) res:X8}");
throw Marshal.GetExceptionForHR((int) res) ?? new Exception($"Unidentified Error - {(uint) res:X8}");
}
}
}
}
}
< /code>
Ich erhalte die Ausgabe < /p>
Failed with 80070057
Unhandled exception. System.ArgumentException: Value does not fall within the expected range.
at PStore.Install.Main() in C:\Users\finne\OneDrive\Documents\0coding\PStore\PStore\Install.cs:line 45
< /code>
Ich sollte sehen, dass der Cloud -Anbieter im Menü des linken Navigation des Datei -Explorers angezeigt wird, aber es wird weder in der Registrierung angezeigt. < /p>
Ich habe versucht, verschiedene Parameter zu ändern, optionale Parameter hinzuzufügen oder zu entfernen und die Zeigerüberladung von CFREGISERSYNCROOT
Diese Microsoft -Seite schlägt vor, dass es sich Ausgenommen, aber ich weiß nicht, welches Argument es sein könnte. Ich habe die API -Dokumente ausgiebig überprüft, aber nicht sehen, wo Argumente, die ich bestanden habe, einen Fehler verursachen würden. Ich habe meinen /bin < /code> Ordner so gelöscht, wie es heißt, aber das hat nicht funktioniert. ist in verschiedenen Bibliotheken. Ich denke nicht, dass das für mich der Fall ist, da es sich immer noch mit meiner One-Datei-MRE fehlerhaft fehlerhaft. Wenn dies jedoch eine Möglichkeit ist, könnte ich Ratschläge zur Lösung des Problems verwenden, da ich mir nicht sicher bin, wie ich das überhaupt nähern soll. als Referenz, aber das oben erwähnte MRE zeigt das Problem. mit dem Rest der API. Wenn sich herausstellt, dass die Registrierungsroute der richtige Weg ist, muss ich eine neue Frage eröffnen, um herauszufinden, warum sie nicht mit API -Platzhaltern funktioniert. < /P>
Ich vermute, es gibt etwas Falsch mit den Argumenten, die ich an die Funktion übergehe, da es nur wenig Dokumentation gibt und ich eine C# -Schinschnittstelle für diese Bibliotheken durchläufe. Aber auch nach umfangreicher Doppelprüfung sowie Versuch und Irrtum habe ich nichts gefunden.
Bitte lassen Sie mich wissen, was diesen Fehler verursacht!