Finden Sie die Speicher Karte ein Pfad auf WM6
Gibt es einen einfachen Weg zu finden, um die Speicherkarte den Weg auf einem Windows Mobile-Gerät
wenn es eine Speicherkarte und ein bluetooth-ftp-Verbindung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Hinterkopf behalten: "\Storage Card" ist Englisch orientiert. Ein Gerät für eine andere region kann einen anderen Namen haben. Der name der Speicherkarte Weg auf mein Gerät variiert, wie ich bin mit dem Gerät.
Einiger Zeit in der MSDN-Formen, die ich beantwortet ein paar Fragen, wie zu erkennen die Lagerung von Karten im file-system und wie bekommt man die Speicher-Karte die Kapazität. Ich schrieb den folgenden, könnte eine Antwort auf diese Fragen und dachte, es wäre hilfreich, zu teilen. Speicher-Karten zeigen, bis in das Datei-system als temporäre Verzeichnisse. Dieses Programm untersucht die Objekte, die in der Wurzel des Geräts und alle Ordner, die temp-Attribut berücksichtigt werden, um eine positive übereinstimmung
Den mount-Punkt ist meist "\Storage Card", sondern kann lokalisiert werden, in andere Sprachen oder modifiziert, die von OEMs (einige Geräte verwenden Sie "\SD-Karte" oder andere mount-Punkte, und einige Geräte unterstützen die Montage mehrerer Speichermedien). Der beste Weg zum auflisten der verfügbaren Karten ist die Verwendung FindFirstFlashCard und FindNextFlashCard.
Beide Funktionen ausfüllen, die in einer WIN32_FIND_DATA-Struktur. Der wichtigste Bereich ist cFileName, welche den Pfad enthalten, um die Karte mount-Punkt (z.B. "\Storage Card").
Beachten Sie, dass das Gerät den internen Speicher, wird auch aufgezählt werden, die von diesen Funktionen. Wenn Sie nur über externe volumes, ignorieren den Fall, wo cFileName ist eine leere Zeichenfolge ("").
Verwendung dieser Funktionen müssen Sie #include <Projekte.h> und-Verknüpfung mit note_prj.lib. Beide enthalten in den Windows Mobile SDKs für die WM 2000 und später.
Habe ich gefunden mit der FindFirstFlashCard/FindNextFlashCard APIs zuverlässiger als das auflisten der Verzeichnisse und die überprüfung der temporären Flagge (zurück-bluetooth-shared-Ordner zum Beispiel).
Die folgende Beispielanwendung zeigt, wie Sie zu nutzen und die erforderlichen P/Invoke Aussagen.
Es ist ein reines C# Weg, dies zu tun, ohne native Aufrufe.
Entnommen hier.
Kann nicht fügen Sie einen Kommentar auf der TreeUK und ctacke Diskussionen unten :
Zu geben, eine Idee, die auf einem Motorola MC75 (früher SymboL), habe ich dieses Stück (von native) code :
Debug-Ausgabe :
Die "Anwendung" und "disk-Cache" sind interne Flash-Laufwerke. Die "Speicherkarte" eine SD-Karte. Alle sind gekennzeichnet als ein Stick (die Sie sind), sondern nur "Storage Card" ist abnehmbar.
Habe ich kombiniert eine Reihe der oben genannten Lösungen, insbesondere qwlice code zu finden, der SD-Karten auf eine Vielzahl von Geräten. Diese Lösung findet SD-Karten nur (so schliesst alle internen "Speicher-Karten", dass einige Geräte haben) ohne die Verwendung von native-dll aufruft.
Den code sucht den Schlüssel HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\ Schlüssel für Schlüssel, die "SD" - wie der name variiert leicht auf einigen Geräten findet sich die Standard-mount-dir und schaut dann für die temp-Verzeichnisse, mit diesem zu starten. Dies bedeutet, dass Sie finden \StorageCard2, \StorageCard3, etc.
Habe ich auf eine Reihe von Intermec und Motorola/Symbol Geräte und habe keine Probleme. Hier ist der code, der unter:
Poste ich hier den code, den ich verwenden, um die mount-Verzeichnisse der Speicher-Karten.
Der Teil, wo bekomme ich die flash-Karten-Pfade übernommen werden, Unglaublich die post mit ein paar änderungen.
Ist der größte Unterschied, dass ich durch die mount-Verzeichnisse von allen flash-Karten und ich halten das man(N), die mit dem Standard-Speicher-name der Karte, die ich gelesen habe von der Registrierung von windows.
Er löst das problem, dass man auf motorola smart-Geräte, bei denen es mehrere flash-Karten und nur einen sd-card-reader, dessen mount-dir Sie können den Namen ändern, von der Standardeinstellung, die durch das numerische suffix (ie. im englischen WM-Systeme: 'Storage Card' , 'Storage-Karte2" und so weiter).
Getestet habe ich es auf einigen motorola-Modellen (MC75, MC75A, MC90, MC65) mit WM 6.5 Deutsch.
Diese Lösung sollte funktionieren gut mit verschiedenen windows mobile Sprachen, aber ich weiß nicht, ob es umgehen können mit denen, die Veränderung der
Standard-name des Speicher-Karten.
Es hängt alles davon ab, ob das Gerät an den Hersteller aktualisiert die windows-Registrierung mit der neue Standard-Namen.
Wäre es toll, wenn Sie es testen auf verschiedenen WMs oder Geräten.
Feedback ist willkommen.
Unter Windows CE 5 (das ist die Basis für Windows Mobile 6) die Lagerung von Karten erhalten Sie direkt an der root-Datei-system als "Storage Card\", "Storage" Karte2\", etc.
Finden Sie heraus, ob es angebracht Anruf GetFileAttributes (oder die remote-version CeGetFileAttributes ich glaube) übergeben Sie den vollständigen Pfad ("\Storage Card\"). Wenn es gibt INVALID_FILE_ATTRIBUTES dann ist es nicht angebracht, sonst stellen Sie sicher, es ist ein Verzeichnis, bevor Sie true zurückgeben.