Macro InitializeObjectAttributes (ntdef.h)
La macro InitializeObjectAttributes inicializa la estructura OBJECT_ATTRIBUTES opaca, que especifica las propiedades de un identificador de objeto para las rutinas que se abren.
Sintaxis
VOID InitializeObjectAttributes(
[out] POBJECT_ATTRIBUTES p,
[in] PUNICODE_STRING n,
[in] ULONG a,
[in] HANDLE r,
[in, optional] PSECURITY_DESCRIPTOR s
);
Parámetros
p
Puntero a la estructura OBJECT_ATTRIBUTES que se va a inicializar.
n
Puntero a una cadena Unicode que contiene el nombre del objeto para el que se va a abrir un identificador. Debe ser un nombre de objeto completo o un nombre de ruta de acceso relativo al directorio de objetos especificado por el parámetro RootDirectory.
a
Especifica una o varias de las marcas siguientes:
Marca | Descripción |
---|---|
OBJ_INHERIT | Los procesos secundarios del proceso actual pueden heredar este identificador. |
OBJ_PERMANENT | Esta marca solo se aplica a los objetos con nombre dentro del administrador de objetos. De forma predeterminada, estos objetos se eliminan cuando se cierran todos los identificadores abiertos. Si se especifica esta marca, el objeto no se elimina cuando se cierran todos los identificadores abiertos. Los controladores pueden usar ZwMakeTemporaryObject para eliminar objetos permanentes. |
OBJ_EXCLUSIVE | Solo se puede abrir un solo identificador para este objeto. |
OBJ_CASE_INSENSITIVE | Si se especifica esta marca, se usa una comparación sin distinción entre mayúsculas y minúsculas al hacer coincidir el parámetro ObjectName con los nombres de los objetos existentes. De lo contrario, los nombres de objeto se comparan con la configuración predeterminada del sistema. |
OBJ_OPENIF | Si se especifica esta marca en una rutina que crea objetos y ese objeto ya existe, la rutina debe abrir ese objeto. De lo contrario, la rutina que crea el objeto devuelve un código NTSTATUS de STATUS_OBJECT_NAME_COLLISION. |
OBJ_KERNEL_HANDLE | Especifica que solo se puede acceder al identificador en modo kernel. |
OBJ_FORCE_ACCESS_CHECK | La rutina que abre el identificador debe aplicar todas las comprobaciones de acceso para el objeto, incluso si el identificador se abre en modo kernel. |
r
Identificador del directorio de objetos raíz para el nombre de ruta de acceso especificado en el parámetro ObjectName. Si ObjectName es un nombre de objeto completo, RootDirectory es NULL. Use ZwCreateDirectoryObject ZwCreateDirectoryObject para obtener un identificador en un directorio de objetos.
s
Especifica un descriptor de seguridad que se va a aplicar a un objeto cuando se crea. Este parámetro es opcional. Los controladores pueden especificar NULL para aceptar la seguridad predeterminada para el objeto. Para obtener más información, vea la sección Comentarios que se muestra más adelante.
Valor devuelto
Ninguno
Observaciones
InitializeObjectAttributes inicializa una estructura de OBJECT_ATTRIBUTES que especifica las propiedades de un identificador de objeto que se van a abrir. Después, el autor de la llamada puede pasar un puntero a esta estructura a una rutina que realmente abre el identificador.
Las rutinas de controlador que se ejecutan en un contexto de proceso distinto del del proceso del sistema deben establecer la marca OBJ_KERNEL_HANDLE para el parámetro Attributes . Esta marca restringe el uso de un identificador abierto para ese objeto a procesos que solo se ejecutan en modo kernel. De lo contrario, el proceso puede acceder al identificador en cuyo contexto se ejecuta el controlador.
Tenga en cuenta que InitializeObjectAttributes siempre establece el miembro SecurityQualityOfService de OBJECT_ATTRIBUTES en NULL. Los controladores que requieren un valor distinto de NULL pueden establecer SecurityQualityOfService directamente.
Requisitos
Plataforma de destino | Escritorio |
Encabezado | ntdef.h (include Wdm.h, Ntddk.h, Ntdef.h) |