Accessing low-level Device Information
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
- State and Notifications Broker
- The State and Notifications Broker Part 1
- The State and Notifications Broker Part 2
- The State and Notifications Broker Part 3
- Starter Kits