Funzione CmCallbackGetKeyObjectIDEx (wdm.h)

La routine CmCallbackGetKeyObjectIDEx recupera l'identificatore univoco e il nome dell'oggetto associati a un oggetto chiave del Registro di sistema specificato.

Questa routine è disponibile a partire da Windows 8. Nelle versioni precedenti di Windows usare invece la routine CmCallbackGetKeyObjectID . Per altre informazioni, vedere la sezione Osservazioni di seguito.

Sintassi

NTSTATUS CmCallbackGetKeyObjectIDEx(
  [in]            PLARGE_INTEGER   Cookie,
  [in]            PVOID            Object,
  [out, optional] PULONG_PTR       ObjectID,
  [out, optional] PCUNICODE_STRING *ObjectName,
  [in]            ULONG            Flags
);

Parametri

[in] Cookie

Valore del cookie che rappresenta la registrazione del chiamante per ricevere i callback del filtro del Registro di sistema. Il driver ha ottenuto in precedenza questo valore del cookie dalla routine CmRegisterCallback o CmRegisterCallbackEx .

[in] Object

Puntatore all'oggetto chiave del Registro di sistema. Questo parametro è il valore del puntatore ricevuto dalla routine di callback RegistryCallback del driver nel membro Object di una delle strutture REG_XXX_KEY_INFORMATION .

Avviso

In determinate circostanze le strutture di notifica di callback del Registro di sistema possono contenere puntatori a oggetti non NULL non validi. I driver di filtro del Registro di sistema non devono passare tali puntatori a questa routine. Per altre informazioni, vedere Puntatori a oggetti chiave non validi nelle notifiche del Registro di sistema.

[out, optional] ObjectID

Puntatore a una posizione che riceve un puntatore all'identificatore di chiave per la chiave del Registro di sistema rappresentata da Object . Questo identificatore è univoco in tutte le chiavi del Registro di sistema. Questo parametro è facoltativo e può essere NULL. Per altre informazioni, vedere la sezione Osservazioni di seguito.

[out, optional] ObjectName

Puntatore a una posizione che riceve un puntatore a una struttura UNICODE_STRING . Questa struttura contiene il nome dell'oggetto chiave del Registro di sistema specificato da Object . Il nome dell'oggetto è in realtà il nome completo della chiave del Registro di sistema rappresentata dall'oggetto. Il chiamante è responsabile della liberazione di questa struttura chiamando la routine CmCallbackReleaseKeyObjectIDEx . Questo parametro è facoltativo e può essere NULL. Per altre informazioni, vedere la sezione Osservazioni.

[in] Flags

Riservato. Imposta su zero.

Valore restituito

CmCallbackGetKeyObjectIDEx restituisce STATUS_SUCCESS se l'operazione ha esito positivo. I valori restituiti di errore possibili includono il codice di stato seguente:

Codice restituito Descrizione
STATUS_INVALID_PARAMETER Il parametro Cookie, Object o Flags non è valido.

Commenti

I driver possono usare CmCallbackGetKeyObjectIDEx per ottenere l'identificatore della chiave del Registro di sistema, il nome dell'oggetto o entrambi, fornendo valori non NULL per i parametri ObjectID o ObjectName .

Il chiamante può ottenere l'identificatore di chiave tramite il parametro ObjectID . Se due oggetti chiave del Registro di sistema rappresentano la stessa chiave del Registro di sistema, gli identificatori di chiave ottenuti da CmCallbackGetKeyObjectIDEx per i due oggetti sono identici. Se il nome della chiave del Registro di sistema viene modificato, l'identificatore della chiave ottenuto da CmCallbackGetKeyObjectIDEx non cambia. Il chiamante può usare l'identificatore di chiave per tenere traccia in modo affidabile degli accessi effettuati a una determinata chiave del Registro di sistema tramite più oggetti chiave e anche tra le modifiche apportate al nome della chiave del Registro di sistema.

Il chiamante può ottenere il nome dell'oggetto tramite il parametro ObjectName . Lo spazio di archiviazione per la struttura UNICODE_STRING che contiene il nome dell'oggetto rimane valido fino a quando il chiamante chiama CmCallbackReleaseKeyObjectIDEx per liberare la struttura.

CmCallbackGetKeyObjectIDEx è una versione migliorata della routine CmCallbackGetKeyObjectID , disponibile a partire da Windows Vista. I driver eseguiti nelle versioni di Windows precedenti a Windows 8 devono chiamare CmCallbackGetKeyObjectID anziché CmCallbackGetKeyObjectIDEx. I driver eseguiti solo in Windows 8 e versioni successive di Windows devono chiamare CmCallbackGetKeyObjectIDEx anziché CmCallbackGetKeyObjectID.

CmCallbackGetKeyObjectIDEx dispone di due importanti funzionalità non disponibili da CmCallbackGetKeyObjectID.

In primo luogo, CmCallbackGetKeyObjectIDEx consente a un driver di filtro del Registro di sistema di controllare in modo esplicito la durata della struttura ObjectName . Il driver può chiamare CmCallbackReleaseKeyObjectIDEx in qualsiasi momento per liberare questa struttura. Al contrario, il driver non può liberare in modo esplicito la struttura ObjectName ricevuta da CmCallbackGetKeyObjectID. Questa struttura viene rilasciata automaticamente quando tutti gli handle della chiave vengono chiusi.

In secondo luogo, se un driver di filtro del Registro di sistema chiama CmCallbackGetKeyObjectID per ottenere un puntatore alla struttura ObjectName e, dopo questa chiamata, il nome della chiave del Registro di sistema cambia, le chiamate successive a CmCallbackGetKeyObjectID ottengono un puntatore a una copia non aggiornata della struttura ObjectName , che contiene il nome della chiave precedente. La copia non aggiornata di questa struttura viene mantenuta finché tutti gli handle della chiave non vengono chiusi. Al contrario, la struttura ObjectName ottenuta da CmCallbackGetKeyObjectIDEx contiene sempre il nome di chiave più aggiornato.

Per altre informazioni sui driver di filtro del Registro di sistema, vedere Filtro delle chiamate al Registro di sistema.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 8.
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= APC_LEVEL

Vedi anche

CmCallbackGetKeyObjectID

CmCallbackReleaseKeyObjectIDEx

CmRegisterCallback

CmRegisterCallbackEx

RegistryCallback

UNICODE_STRING