File-zugriff unter Windows Mobile 6.5
-
hallo,
möchte unter Win mobile 6.5 auf ein Fle zugreifen - in dem gezeigten Beispiel nur lesend. Das Programm kompiliert zwar, stürzt aber bereits ab noch bevor der Lese-Befehl überhaupt erreicht wird. Wenn ich den Lese-Befehl auskommentiere, dann läuft es - allerdings ohne was zu lesen...
CString cstrFile; HANDLE hFile; BYTE byteDataBuffer[MAX_DATA_LENGTH]; DWORD dwFileSize,dwDataLength,dwError; LPOVERLAPPED pOverlapped; hFile = CreateFile(cstrFile,GENERIC_READ,NULL,NULL,OPEN_EXISTING,NULL,NULL); if ((int) hFile != -1) { dwFileSize = GetFileSize (hFile, NULL); // max. Länge 2^32 (falls längere Files vorkommen // -> NULL gegen Pointer auf High DWORD der Länge setzen // Rückgabewert dwFileSize enthält dann das Low DWORD der Länge if (dwFileSize == 0xFFFFFFFF ) // Start error handler { dwError = GetLastError(); // Obtain the error code cstrTmp.Format(_T("Length Error: %X"),dwError); AfxMessageBox(cstrTmp, MB_OK | MB_ICONWARNING); // Ausgabe Error-Code } // End of error handler else { bResult = ReadFile(hFile, byteDataBuffer, dwFileSize, &dwDataLength, pOverlapped); intDataLength = (int) dwDataLength; if (!bResult) // Start error handler { dwError = GetLastError(); // Obtain the error code cstrTmp.Format(_T("Read Error: %X"),dwError); AfxMessageBox(cstrTmp, MB_OK | MB_ICONWARNING); // Ausgabe Error-Code } // End of error handler } CloseHandle(hFile); }
Weiß jemand warum
-
Könnte es sein, das du nicht LPOVERLAPPED nehmen darfst? Ich denke Windows Mobile unterstützt das nicht. Aber wo stürzt denn das Programm genau ab?
-
der code steht in einem InitDialog und das Programm stürzt bereits kurz nach dem Start ab - noch bevor überhaupt ein Dialog angezeigt wird
-
Das Programm ist dialogbasiert. Wenn man den Debugger anwirft, dann erhält man:
Das Programm "[16b6a31a] TestMobile.exe" wurde mit Code -1073741571 (0xc00000fd) beendet.
-
der_micha198 schrieb:
Könnte es sein, das du nicht LPOVERLAPPED nehmen darfst?
Wenn ich folgende Zeile verwende:
bResult = ReadFile(hFile, byteDataBuffer, dwFileSize, &dwDataLength, NULL);
ist das Ergebnis dasselbe.
-
Problem gelöst: es war ein Stack-Overflow, der verursacht wurde, weil der Stack auf dem mobile system kleiner ist als auf dem windoof system, von dem das Prog potiert wurde...