bekomme immer ungültigen Handle zurück :(



  • Hallo Leute,

    ich hab da ein grosses Problem und zwar bekomme ich immer von der CreateFile Funktion immer nur einen INVALID_HANDLE_VALUE zurück wenn ich auf COM1 zugreifen möchte. Ich bin schon am verzweifeln woran liegt denn sowas ? und wie kann ich das Problem beheben ?. Hoffe Ihr helft mir weiter.

    THX

    Euer RMG



  • Was sagt den GetLastError() ? Was gibst du für 'nen string als Dateinamen an?



  • GetLastError gibt mir immer eine 6 zurück also ungültiger Handle. Als Sting übergebe ich "COM1". Woran liegt denn das überhaupt das ich einen ungültigen Handle zurückbekomme denn das mit den ungültigen Handle passier nur ab und zu.

    MfG



  • RichardMG schrieb:

    GetLastError gibt mir immer eine 6 zurück also ungültiger Handle.

    Das kann ich nicht glauben. Du rufst doch bestimmt noch andere Funktionen zwischen CreateFile auf GetLastError auf, oder?



  • Du kannst es mir aber glauben GetLastError liefert mir immer nur 6 zurück. Das einzige was ich mache nutze GetCommState dazwischen

    m_hCom = CreateFile(m_pCOMPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL , NULL); 
    	BOOL handle = GetCommState(m_hCom, &dcb);		// Werte des COM-Ports holen (vorinitialisieren)
    	if(!handle)
    	{
    		int error = GetLastError();
    		CString IntToStr, str;
    		IntToStr.Format("%d", error);
    		str = "Zugriff auf COM-Port fehlgeschlagen. \nErrorcode: "+IntToStr+"*"+"\n\n\n* (nur wichtig für den SW-Entwickler)";
    		MessageBox(str, "COM-Port Zugriffsverweigerung", MB_ICONERROR);
    	}
    


  • RichardMG schrieb:

    Du kannst es mir aber glauben GetLastError liefert mir immer nur 6 zurück.

    Das habe ich auch nicht in Abrede gestellt. Ich habe nur behauptet, daß das der falsche ErrorCode ist. Und das ist es ja offensichtlich auch.

    RichardMG schrieb:

    Das einzige was ich mache nutze GetCommState dazwischen

    Und nun bekommst Du den ErrorCode, den GetCommState setzt. Du hast diese Funktion also mit einem ungültigen Handle aufgerufen. Wenn das Handle von CreateFile nun ungültig ist (CreateFile schlägt fehl), solltest Du mal diesen ErrorCode checken.

    m_hCom = CreateFile(...);
    if(INVALID_HANDLE_VALUE == m_hCom)
    {
        GetLastError();
    }
    

Anmelden zum Antworten