locked
Probleme avec l'hibernation sous vista

    Domanda

  • En fait je suis en train de developper un driver qui doit refuser l'hibernation de windows sous certaines conditions.

    Lors de la recepetion de l'IRP IRP_MN_SET_POWER, je complete l'IRP avec un status ERROR_UNSUCCESSFUL

    Le code que j'utilise est le suivant :

    NTSTATUS SrvCore_DispatchPower(
    
    									__in PDEVICE_OBJECT	pDeviceObject,
    
    									__in PIRP				pIrp)
    
    {
    
    	PDEVICE_EXTENSION		_pDeviceExtension	=	NULL;
    
    	PIO_STACK_LOCATION		_pIrpStack			=	NULL;
    
    	NTSTATUS				_Status				=	STATUS_SUCCESS;
    
    
    
    	_pDeviceExtension = (PDEVICE_EXTENSION) pDeviceObject->DeviceExtension;
    
    	
    
    	_pIrpStack	=	IoGetCurrentIrpStackLocation(pIrp);
    
    
    
    	if (_pIrpStack->MinorFunction == IRP_MN_SET_POWER)
    
    	{
    
    		if (_pIrpStack->Parameters.Power.ShutdownType == PowerActionHibernate)
    
    		{
    
    			SrvCore_log(LOG_TRACE,"la demande d'hibernation n'est pas accepté en mode furtif \n");
    
    			pIrp->IoStatus.Status = STATUS_UNSUCCESSFUL;
    
    			PoStartNextPowerIrp(pIrp);
    
    			IoCompleteRequest (pIrp, IO_NO_INCREMENT);
    
    			return STATUS_SUCCESS;
    
    		}
    
    	}
    
    	pIrp->IoStatus.Status = STATUS_SUCCESS;
    
    	PoStartNextPowerIrp(pIrp);
    
    	IoCompleteRequest (pIrp, IO_NO_INCREMENT);
    
    	return STATUS_SUCCESS;
    
    }
    
    

    Le probleme c'est que ce bout de code marche sur windows XP mais ne marche pas sur Vista.

    Comment je pourrai refuser l'hibernation sur vista ?

    Merci d'avance

     

    martedì 13 ottobre 2009 14:45