User Passwort
 Passwort speichern Passwort vergessen?
 
 
 
 Alle Foren
 PDA-Dev :: Windows Mobile
 Windows Mobile - Allgemeines
 C#: Ermitteln von installierten Speicherkarten
Autor Vorheriges Thema Thema Nächstes Thema  

ReinerZ

PDA-Spezialist


347 Beiträge

Erstellt am: 29.07.2007 :  21:02:30 Uhr  Profil anzeigen  Autor eine Email senden  Besuche ReinerZ's Homepage  Antwort mit Zitat
Hi,
kürzlich war hier im Forum mal ein Thread, mit einer Diskussion wie man installierte Speicherkarten ermitteln kann.
Falls es jemanden interessiert, bin eben auf einige Funktionen gestossen, die genau das leisten. Diese Api-Funktionen heissen FindFirstFlashCard() und FindNextFlashCard(), sollen ab CE 3.0 funktionieren und befinden sich in der DLL "note_prj.dll" im Windows-Verzeichnis. Die Funktionen werden analog FindFirstFile()/FindNextFile() in Verbindung mit einer WIN32_FIND_DATA-Struktur verwendet. FindFirstFlashCard gibt einen "Such-Handle" zurück, der dann als Eingabe für FindNextFlashCard verwendet wird. Der Handle muss mit FindClose() freigegeben werden. Nachfolgend ein einfaches Beispiel für den Einsatz von FindFirstFlashCard(). Leider ist es mir nicht gelungen, die Funktionen unter Verwendung der WIN32_FIND-DATA-Struktur zum Laufen zu bringen. Daher ist der Code auch nicht besonders "schön", aber er funktioniert...
 
[DllImport("note_prj.dll", SetLastError = true)]
static private extern IntPtr FindFirstFlashCard(IntPtr lpFindData);
[DllImport("coredll.dll", SetLastError = true)]
static private extern IntPtr FindClose(IntPtr hFind);
//static private extern IntPtr FindFirstFlashCard(
// ref _WIN32_FIND_DATA lpFindData);
//
static public unsafe string FindFirstFlashCard()
{
// Das Feld "cFilename" von WIN32_FIND_DATA beginnt bei Offset 40...
const int NAME_OFFSET = 40;
byte[] rgbFind = null;
char[] rgcName = null;
IntPtr hCard = IntPtr.Zero;
string strCard = null;
// Byte-Buffer in der Groesse sizeof(WIN32_FIND_DATA) allokieren...
rgbFind = new byte[((260 * sizeof(char) + 40))];
fixed(byte* pBuffer = &rgbFind[0])
{
IntPtr pBufferPtr = (IntPtr)pBuffer;
hCard = FindFirstFlashCard(pBufferPtr);
if (IntPtr.Zero == hCard)
return null;
}
FindClose(hCard);
rgcName = new char[260];
Buffer.BlockCopy(rgbFind, NAME_OFFSET, rgcName, 0, rgcName.Length);
strCard = new string(rgcName);
return strCard.Trim('\0');
}
Gruss
Reiner
   
  Vorheriges Thema Thema Nächstes Thema  
Springe nach:
 
  Bookmark & Share  
 
 
 
  Tags  
   
 
 



pda-dev.de

Quicklinks: Foren-Übersicht | Developer-News | Suche | Impressum

© just-works! Software

Zum Anfang der Seite

Snitz Forums 2000