Windows Dienst gibt kein Lebenszeichen von sich



  • Ich habe mir einen Windows Service geschrieben.

    Den Quellcode habe ich größtenteils aus der MSDN.

    #include <cstdlib>
    #include <iostream>
    #include <windows.h>
    #include <fstream>
    
    using namespace std;
    
    SERVICE_STATUS Serv_status;
    SERVICE_STATUS_HANDLE hServ_status;
    
    VOID WINAPI MyServiceCtrlHandler (DWORD Opcode) 
    { 
       DWORD status; 
    
       switch(Opcode) 
       { 
          case SERVICE_CONTROL_PAUSE: 
          // Do whatever it takes to pause here. 
             Serv_status.dwCurrentState = SERVICE_PAUSED; 
             break; 
    
          case SERVICE_CONTROL_CONTINUE: 
          // Do whatever it takes to continue here. 
             Serv_status.dwCurrentState = SERVICE_RUNNING; 
             break; 
    
          case SERVICE_CONTROL_STOP: 
          // Do whatever it takes to stop here. 
             Serv_status.dwWin32ExitCode = 0; 
             Serv_status.dwCurrentState  = SERVICE_STOPPED; 
             Serv_status.dwCheckPoint    = 0; 
             Serv_status.dwWaitHint      = 0; 
    
             SetServiceStatus (hServ_status, &Serv_status);
    
             return; 
    
          case SERVICE_CONTROL_INTERROGATE: 
          // Fall through to send current status. 
             break;   
       } 
       SetServiceStatus (hServ_status, &Serv_status);
       // Send current status. 
    
       return; 
    } 
    
    void WINAPI MyServiceStart (DWORD argc, LPTSTR *argv) 
    { 
        DWORD status; 
        DWORD specificError; 
    
        Serv_status.dwServiceType        = SERVICE_WIN32; 
        Serv_status.dwCurrentState       = SERVICE_START_PENDING; 
        Serv_status.dwControlsAccepted   = 0; 
        Serv_status.dwWin32ExitCode      = 0; 
        Serv_status.dwServiceSpecificExitCode = 0; 
        Serv_status.dwCheckPoint         = 0; 
        Serv_status.dwWaitHint           = 10000; 
    
        hServ_status = RegisterServiceCtrlHandler( 
            "MyService", 
            MyServiceCtrlHandler); 
    
        SetServiceStatus(hServ_status, &Serv_status);
    
        // Handle error condition 
        if (status != NO_ERROR) 
        { 
            Serv_status.dwCurrentState       = SERVICE_STOPPED; 
            Serv_status.dwCheckPoint         = 0; 
            Serv_status.dwWaitHint           = 0; 
            Serv_status.dwWin32ExitCode      = status; 
            Serv_status.dwServiceSpecificExitCode = specificError; 
    
            SetServiceStatus (hServ_status, &Serv_status); 
            return; 
        } 
    
        // Initialization complete - report running status. 
        Serv_status.dwCurrentState       = SERVICE_RUNNING; 
        Serv_status.dwCheckPoint         = 0; 
        Serv_status.dwWaitHint           = 0; 
        Serv_status.dwControlsAccepted   = SERVICE_ACCEPT_STOP |
            SERVICE_ACCEPT_PAUSE_CONTINUE;
    
        SetServiceStatus (hServ_status, &Serv_status);
        Beep( 750, 3000 );//Warum beept er hier nicht???
        fstream f;
        f.open("C:\\service_test.txt", ios::out);
        f << "Der Dienst laeuft." << endl;
        f.close();
        // This is where the service does its work. 
        return; 
    }
    
    int main(int argc, char *argv[])
    {
        SERVICE_TABLE_ENTRY serv_dispatchtable[]=
        {
                            {TEXT("MyService"),(LPSERVICE_MAIN_FUNCTION)MyServiceStart},
                            {NULL,NULL}
        };
        StartServiceCtrlDispatcher(serv_dispatchtable);
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Allerdings gibt der Dienst kein Lebenszeichen von sich.
    Das heißt er beept nicht und er schreibt auch nix in die txt Datei.

    Wie kann ich also testen was nicht funktioniert??
    Vllt findet ihr ja auch nen Fehler;

    MFG
    Ace


  • Mod

    Ist der Service überhaupt installiert.
    Platziere doch einfach mal DebugBreak am Anfang Deine Routine. Dann kanst Du Debuggen.

    Ansonsten empfehele ich lesen:
    http://msdn2.microsoft.com/en-us/library/ms810429.aspx


Anmelden zum Antworten