Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698

    [C/WIN32] Access Violation su CreateFile()

    codice:
    int main()
    {
    	HANDLE * serial;
    	char * s = "COM1";
    
    	*serial = CreateFile(s,
                            GENERIC_READ | GENERIC_WRITE,
                            0,
                            NULL,
                            OPEN_EXISTING,
                            0,
                            0);
    	puts("asa");
    
    	if(*serial ==INVALID_HANDLE_VALUE) {
    	  
    		return 0;
    
        } 
    
    	return 1;
    }
    Questo codice, compilato con visual studio 6 in modalità debug, genera un access violation (0xC0000005) sulla chiamata CreateFile. Se compilo in modalità Release invece funziona..il progetto visual studio è console.

    La cosa strana è che ho usato questo pattern decine di volte, e ad esempio in un altro programma creato col template di visual studio "win32 application" funziona sia in release che in debug.

    Sono davvero disarmato..avete dei suggerimenti?
    Grazie

  2. #2

    Re: [C/WIN32] Access Violation su CreateFile()

    HANDLE * serial;
    Non serve che sia un puntatore, anche perchè altrimenti lo dovresti allocare. Usa:
    HANDLE serial;

    *serial = CreateFile(s,
    GENERIC_READ | GENERIC_WRITE,
    0,
    NULL,
    OPEN_EXISTING,
    0,
    0);
    Questo diventa:
    serial = CreateFile(s,
    GENERIC_READ | GENERIC_WRITE,
    NULL,
    NULL,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    NULL);

    if(*serial ==INVALID_HANDLE_VALUE) {
    if(serial ==INVALID_HANDLE_VALUE) {

    Se compilo in modalità Release invece funziona..il progetto visual studio è console.
    Credo sia un caso. Ricordati di specificare sempre il nome completo per la porta seriale, in questo caso "\\\\.\\COM1".

    HTH,

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    Infatti sono un minchione. L'handle non era allocato.
    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.