Función ExCreateCallback (wdm.h)
La rutina ExCreateCallback crea un nuevo objeto de devolución de llamada o abre un objeto de devolución de llamada existente en nombre del autor de la llamada.
Sintaxis
NTSTATUS ExCreateCallback(
[out] PCALLBACK_OBJECT *CallbackObject,
[in] POBJECT_ATTRIBUTES ObjectAttributes,
[in] BOOLEAN Create,
[in] BOOLEAN AllowMultipleCallbacks
);
Parámetros
[out] CallbackObject
Puntero a una ubicación que recibe un puntero a un objeto de devolución de llamada, que es una estructura del sistema opaca. Si la llamada exCreateCallback se realiza correctamente, la rutina escribe la dirección del objeto de devolución de llamada recién creado o abierto en esta ubicación. El puntero del objeto de devolución de llamada obtenido de esta rutina se puede proporcionar como parámetro a la rutina ExRegisterCallback o ExNotifyCallback .
[in] ObjectAttributes
Puntero a una estructura de OBJECT_ATTRIBUTES que contiene los atributos del objeto de devolución de llamada. Esta estructura se inicializó anteriormente mediante la rutina InitializeObjectAttributes .
[in] Create
Si se va a crear un objeto de devolución de llamada. Establézcalo en TRUE para crear un nuevo objeto de devolución de llamada si no se puede abrir el objeto solicitado. De lo contrario, establezca en FALSE.
[in] AllowMultipleCallbacks
Si un objeto de devolución de llamada recién creado debe permitir varias rutinas de devolución de llamada registradas. Establezca en TRUE para permitir varias rutinas de devolución de llamada registradas. De lo contrario, establezca en FALSE. Este parámetro se omite cuando Create es FALSE o al abrir un objeto existente.
Valor devuelto
ExCreateCallback devuelve STATUS_SUCCESS si se abrió o creó un objeto de devolución de llamada. De lo contrario, devuelve un código de error NTSTATUS para indicar la naturaleza del error.
Comentarios
Un controlador llama a ExCreateCallback para crear un nuevo objeto de devolución de llamada o para abrir un objeto de devolución de llamada existente. Una vez creado o abierto el objeto, otros componentes pueden llamar a la rutina ExRegisterCallback para registrar rutinas de devolución de llamada con el objeto de devolución de llamada.
Antes de llamar a ExCreateCallback, el controlador debe llamar a InitializeObjectAttributes para inicializar la estructura de OBJECT_ATTRIBUTES para el objeto de devolución de llamada. No se permiten objetos de devolución de llamada sin nombre. El llamador debe especificar un nombre para el objeto; de lo contrario, se produce un error en la llamada con STATUS_UNSUCCESSFUL. El autor de la llamada debe especificar el atributo OBJ_PERMANENT en el objeto de devolución de llamada para evitar que el objeto se elimine antes de que se pueda registrar con el administrador de objetos. El autor de la llamada también debe especificar cualquier otro atributo, como OBJ_CASE_INSENSITIVE, que pueda ser necesario.
Cuando todas las operaciones se hayan completado con el objeto de devolución de llamada, el controlador debe eliminar el objeto para evitar una pérdida de memoria. Para obtener información sobre cómo eliminar un objeto creado con el atributo de objeto OBJ_PERMANENT, vea ObDereferenceObject.
En la tabla siguiente se muestran los objetos de devolución de llamada que crea el sistema operativo para usarlos por los controladores.
Nombre del objeto de devolución de llamada | Uso |
---|---|
\Callback\SetSystemTime | El sistema operativo llama a las rutinas de devolución de llamada registradas para este objeto cada vez que cambia la hora del sistema. |
\Callback\PowerState | El sistema operativo llama a las rutinas de devolución de llamada registradas para este objeto cada vez que cambian ciertas características de energía del sistema. Cuando un controlador se registra para la notificación de devolución de llamada (llamando a ExRegisterCallback), puede especificar los cambios para los que se debe notificar. |
Para obtener más información sobre los objetos de devolución de llamada, vea Objetos de devolución de llamada.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows 2000. |
Plataforma de destino | Universal |
Encabezado | wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
Reglas de cumplimiento de DDI | HwStorPortProhibitedDIs(storport), IrqlExApcLte2(wdm), IrqlExPassive |