Funzione ExCreateCallback (wdm.h)
La routine ExCreateCallback crea un nuovo oggetto callback o apre un oggetto callback esistente per conto del chiamante.
Sintassi
NTSTATUS ExCreateCallback(
[out] PCALLBACK_OBJECT *CallbackObject,
[in] POBJECT_ATTRIBUTES ObjectAttributes,
[in] BOOLEAN Create,
[in] BOOLEAN AllowMultipleCallbacks
);
Parametri
[out] CallbackObject
Puntatore a una posizione che riceve un puntatore a un oggetto callback, ovvero una struttura di sistema opaca. Se la chiamata ExCreateCallback ha esito positivo, la routine scrive l'indirizzo dell'oggetto callback appena creato o aperto in questa posizione. Il puntatore a oggetti callback ottenuto da questa routine può essere fornito come parametro alla routine ExRegisterCallback o ExNotifyCallback .
[in] ObjectAttributes
Puntatore a una struttura OBJECT_ATTRIBUTES contenente gli attributi dell'oggetto callback. Questa struttura è stata inizializzata in precedenza dalla routine InitializeObjectAttributes .
[in] Create
Se creare un oggetto callback. Impostare su TRUE per creare un nuovo oggetto callback se l'oggetto richiesto non può essere aperto. In caso contrario, impostare su FALSE.
[in] AllowMultipleCallbacks
Se un oggetto callback appena creato deve consentire più routine di callback registrate. Impostare su TRUE per consentire più routine di callback registrate. In caso contrario, impostare su FALSE. Questo parametro viene ignorato quando Create è FALSE o quando si apre un oggetto esistente.
Valore restituito
ExCreateCallback restituisce STATUS_SUCCESS se è stato aperto o creato un oggetto callback. In caso contrario, restituisce un codice di errore NTSTATUS per indicare la natura dell'errore.
Commenti
Un driver chiama ExCreateCallback per creare un nuovo oggetto callback o per aprire un oggetto callback esistente. Dopo aver creato o aperto l'oggetto, altri componenti possono chiamare la routine ExRegisterCallback per registrare routine di callback con l'oggetto callback.
Prima di chiamare ExCreateCallback, il driver deve chiamare InitializeObjectAttributes per inizializzare la struttura OBJECT_ATTRIBUTES per l'oggetto callback. Gli oggetti callback senza nome non sono consentiti. Il chiamante deve specificare un nome per l'oggetto; in caso contrario, la chiamata ha esito negativo con STATUS_UNSUCCESSFUL. Il chiamante deve specificare l'attributo OBJ_PERMANENT nell'oggetto callback per impedire l'eliminazione dell'oggetto prima di poter essere registrato con gestione oggetti. Il chiamante deve specificare anche qualsiasi altro attributo, ad esempio OBJ_CASE_INSENSITIVE, che potrebbe essere necessario.
Quando tutte le operazioni sono state completate con l'oggetto callback, il driver deve eliminare l'oggetto per evitare una perdita di memoria. Per informazioni sull'eliminazione di un oggetto creato con l'attributo dell'oggetto OBJ_PERMANENT, vedere ObDereferenceObject.
La tabella seguente mostra gli oggetti callback creati dal sistema operativo per l'uso da parte dei driver.
Nome dell'oggetto callback | Utilizzo |
---|---|
\Callback\SetSystemTime | Il sistema operativo chiama tutte le routine di callback registrate per questo oggetto ogni volta che cambia l'ora del sistema. |
\Callback\PowerState | Il sistema operativo chiama tutte le routine di callback registrate per questo oggetto ogni volta che alcune caratteristiche di alimentazione del sistema cambiano. Quando un driver registra per la notifica di callback (chiamando ExRegisterCallback), può specificare le modifiche per cui deve essere notificata. |
Per altre informazioni sugli oggetti callback, vedere Oggetti callback.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile a partire da Windows 2000. |
Piattaforma di destinazione | Universale |
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
Regole di conformità DDI | HwStorPortProhibitedDDDIs(storport), IrqlExApcLte2(wdm), IrqlExPassive |