absturz



  • Tach auch
    hab ein Programm für einen Watchdog welcher auf dem Mainboard intgriert ist geschriebe.
    Eigentich funktioniert das ganze auch.
    Aber nach ca. 30-35 Durchläufe in der Endlosschleife beendet Windows (oder was auch immer) mein Programm.
    So einfach peng. Weg.
    Und ich habe mal echt keine Ahnung warum.
    Vielleicht fällt euch ja was auf.

    #include<iostream>
    #include<windows.h>
    #include"Itlcd.h"
    
    	typedef DWORD (*OpenItlcd)(void);
    //	typedef DWORD (*CloseItlcd)(void);
    	typedef DWORD (*EnableWD)(void);
    //	typedef DWORD (*DisableWD)(void);
    	typedef DWORD (*SetWDTimer)( UCHAR  TIME );
    	typedef DWORD (*SetWDTimerInterval)( UCHAR VAL );
    
    int main( void )
    {
    		int i = 1;		
    
    		OpenItlcd			functionOpen;
    //		CloseItlcd			functionClose;
    		EnableWD			functionEnableWD;
    //		DisableWD			functionDisableWD;
    		SetWDTimer			functionSetWDTimer;
    		SetWDTimerInterval	functionSetWDTimerInterval;
    
            DWORD result1; //open
    //		DWORD result2; //disable
    //		DWORD result3; //setTimer
    		DWORD result4; //setInterval
    		DWORD result5; //enable
    
    		// DLL Datei laden
            HINSTANCE itlcdlib = LoadLibrary("itlcd.dll");
    
            if( itlcdlib ) 
    		{
    			// OPEN
    				functionOpen = (OpenItlcd) GetProcAddress(itlcdlib, "OpenItlcd");
    
    				if ( functionOpen )
    				{ result1 = functionOpen(); }
    
    			// WD Timerintervall setzen
    				functionSetWDTimerInterval = ( SetWDTimerInterval ) GetProcAddress( itlcdlib, "SetWDTimerInterval" );
    
    				if( functionSetWDTimerInterval )
    				{ result4 = functionSetWDTimerInterval( sec ); }
    
    			// WD Enable
    				functionEnableWD = ( EnableWD ) GetProcAddress( itlcdlib, "EnableWD" );
    
    				if( functionEnableWD )
    				{ result5 = functionEnableWD(  ); }
    
    				if( result5 == 1)
    				{printf("watchdog = ON");}
    				if( result5 == 0)
    				{printf("watchdog = OFF");}
    
    			// WD Timer setzen
    				functionSetWDTimer = ( SetWDTimer ) GetProcAddress( itlcdlib, "SetWDTimer" );
    
    				if( !functionSetWDTimer )
    					return 0;
    //Schleife:
    			//	i = 0 ;
    
    			//while( i>=0 )
    			for(;;)
    			{				
    
    				functionSetWDTimer((UCHAR)30 );
    
    				Sleep(5000);
    
    			}
    		//	goto Schleife;
    
    	}
    	return 0;
    }
    

    Danke für eure Bemühungen.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Dann wird vermutlich in "functionSetWDTimer" irgendwas schief laufen...


Anmelden zum Antworten