Compartilhar via


Accessing low-level Device Information

Windows Mobile SupportedWindows Embedded CE Not Supported

9/8/2008

O estado e o agente de notificações é uma arquitetura e definir API que fornece acessar para informações de nível inferior dispositivo. De bateria níveis para controlar o Media Player atualmente em execução, o estado e o agente de notificações traz juntos status discrepantes dispositivo para um fácil - para - consulta formato e também fornece métodos callback para determinar quando algo que foi alterada.

Neste exemplo, um função callback é definido que será chamado quando bateria do dispositivo nível atinge um nível criticamente baixo:

void AdjustPowerConsumption(HREGNOTIFY hNotify, DWORD dwUserData, const PBYTE pData, const UINT cbData);
// Register to be notified of changes to the eighth bit
// in SN_POWERBATTERYSTATE_VALUE. The eighth bit is set to one when 
// the battery is critically low (and set to zero and when it is not).
HRESULT RegistryNotifyCallbackExample()
{
    NOTIFICATIONCONDITION nc;
    HRESULT hr         = S_OK;
    HREGNOTIFY hNotify = NULL;
    // Initialize the notification structure.
    // The mask for the eighth bit.
    nc.dwMask = 0x8;
    // Receive a notification whenever that bit toggles.
    nc.ctComparisonType = REG_CT_ANYCHANGE;
    // dw is ignored for REG_CT_ANYCHANGE.
    nc.TargetValue.dw = 0;
    
    hr = RegistryNotifyCallback(SN_POWERBATTERYSTATE_ROOT, 
                                SN_POWERBATTERYSTATE_PATH, 
                                SN_POWERBATTERYSTATE_VALUE, 
                                AdjustPowerConsumption,
                                0, 
                                &nc, 
                                &hNotify);
    // Close the notification using RegistryCloseNotification when done.
    // Note that it is alright to call RegistryCloseNotification from the callback function.
    // hr = RegistryCloseNotification(hNotify);
    return hr;
}
void AdjustPowerConsumption(HREGNOTIFY hNotify, DWORD dwUserData, const PBYTE pData, const UINT cbData)
{
// The callback function
}

Para o completo exemplo, consulte o tópico RegistryNotifyCallback.

Embora grande parte este informações também sejam armazenada no registro, essa abordagem torna codificar muito mais fácil de manter e consideravelmente mais simples para monitor para que as alterações.

O estado e desfeitos de notificação podem ser usados da gerenciado e código nativo.

Referência

See Also

Concepts

Programmatically Customizing a Device