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...


Log in to reply