none
WaitForSingleObject No se detiene RRS feed

  • Pregunta

  • Hola,

     

    Creo un mutex dentro de una funcion y llamo a WaitForSingleObject(INFINITE) para que quede esperando en la funcion hasta que desde otra funcion cambie el estado. la misma devuelve WAIT_OBJECT_0 y continua. Que puedo hacer.

     

    hAPMutex = CreateMutex(NULL, FALSE, "RunSetAPHook");

    if (hAPMutex == NULL)

    {

    MessageBox(NULL, "fallo mutex", 0, 0);

    return FALSE;

    }

    DWORD wfso = WaitForSingleObject(hAPMutex, INFINITE);

    char p[10]={0};

    sprintf(p, "Error = %i", wfso);

    switch (wfso)

    {

    case WAIT_OBJECT_0: MessageBox(NULL, "WAIT_OBJECT_0", 0, 0); break;

    case WAIT_ABANDONED:MessageBox(NULL, "WAIT_ABANDONED", 0, 0); break;

    case WAIT_TIMEOUT: MessageBox(NULL, "WAIT_TIMEOUT", 0, 0); break;

    case WAIT_FAILED: MessageBox(NULL, "WAIT_FAILED", 0, 0); break;

    default: MessageBox(NULL, p, 0, 0);

    }

     

    Gracias!

    viernes, 18 de febrero de 2011 11:36

Todas las respuestas

  • Hola:

    http://support.microsoft.com/kb/953311/es

    http://support.microsoft.com/kb/891987/es

    DWORD WINAPI InterruptThread(LPVOID lpParameter)
    {
    	DWORD	dwRet;
    
    
    	while(1) {
    		EnterCriticalSection(&g_CS);
    		dwRet=WaitForSingleObject(hIntEvent, /*INFINITE*/IST_TIMOUT);
    		if (dwRet == WAIT_TIMEOUT) {
    			RETAILMSG(1,(TEXT("WAIT_TIMEOUT\r\n")));
    		}
    		if (dwRet == WAIT_OBJECT_0) {
    			RETAILMSG(1,(TEXT("WAIT_OBJECT_0\r\n")));
    		}
    		if (dwRet == WAIT_FAILED) {
    			RETAILMSG(1,(TEXT("WAIT_FAILED\r\n")));
    		}
    		InterruptDone(SYSINTR_TIMING);
    		LeaveCriticalSection(&g_CS);
    	}
    
    	return 0;
    }
    
    

    Saludo.


    http://electronica-pic.blogspot.com
    viernes, 25 de febrero de 2011 22:43