stringtranslate.com

Administrador de objetos (Windows)

Administrador de objetos en Windows, categorizado jerárquicamente mediante espacios de nombres

Object Manager (llamado internamente Ob ) es un subsistema implementado como parte de Windows Executive que administra los recursos de Windows . Los recursos, que aparecen como objetos lógicos , residen cada uno en un espacio de nombres para su categorización. Los recursos pueden ser dispositivos físicos, archivos o carpetas en volúmenes, entradas del Registro o incluso procesos en ejecución. Todos los objetos que representan recursos tienen una Object Typepropiedad y otros metadatos sobre el recurso. El Administrador de objetos es un recurso compartido y todos los subsistemas que se ocupan de los recursos deben pasar por el Administrador de objetos.

Arquitectura

El Administrador de Objetos en la arquitectura de Windows NT

Object Manager es el intermediario de recursos centralizado en la línea de sistemas operativos Windows NT , que realiza un seguimiento de los recursos asignados a los procesos. Es independiente de los recursos y puede administrar cualquier tipo de recurso, incluidos identificadores de dispositivos y archivos. Todos los recursos se representan como objetos, cada uno de los cuales pertenece a un espacio de nombres lógico para la categorización y tiene un tipo que representa el tipo de recurso, que expone las capacidades y funcionalidades a través de propiedades. Un objeto se mantiene disponible hasta que finalizan todos los procesos con él; El Administrador de objetos mantiene el registro de qué objetos están actualmente en uso mediante el recuento de referencias , así como la información de propiedad. Cualquier llamada al sistema que cambie el estado de asignación de recursos a los procesos pasa por el Administrador de objetos.

Los objetos pueden ser objetos Kernel u objetos Executive . Los objetos del kernel representan recursos primitivos, como dispositivos físicos o servicios como la sincronización, que se requieren para implementar cualquier otro tipo de servicio del sistema operativo. Los objetos del kernel no están expuestos al código en modo de usuario , pero están restringidos al código del kernel. Las aplicaciones y servicios que se ejecutan fuera del kernel utilizan objetos Executive , que son expuestos por Windows Executive , junto con sus componentes, como el administrador de memoria, el programador y el subsistema de E/S. Los objetos ejecutivos encapsulan uno o más objetos del kernel y exponen no solo el kernel y los recursos mediados por el kernel, sino también un conjunto ampliado de servicios que realiza el kernel. [ se necesita aclaración ] Las aplicaciones mismas pueden envolver uno o más objetos ejecutivos y objetos de superficie [ se necesita definición ] que ofrecen ciertos servicios. Los subsistemas de entorno también utilizan objetos ejecutivos (como el subsistema Win32, el subsistema OS/2, el subsistema POSIX, etc.) para implementar la funcionalidad de los entornos respectivos.

Cada vez que se crea o abre un objeto, se crea una referencia a la instancia, llamada identificador . El Administrador de objetos indexa los objetos tanto por sus nombres como por sus identificadores. Pero hacer referencia a los objetos mediante los identificadores es más rápido porque se puede omitir la traducción del nombre. Los identificadores están asociados con procesos (haciendo una entrada en la tabla de identificadores del proceso que enumera los identificadores que posee) y también se pueden transferir entre procesos. Un proceso debe poseer un identificador de un objeto antes de usarlo. Un proceso puede poseer un máximo de 16.000.000 de identificadores a la vez. Durante la creación, un proceso obtiene identificadores para un conjunto predeterminado de objetos. Si bien existen diferentes tipos de identificadores ( identificadores de archivos , identificadores de eventos y identificadores de procesos ), solo ayudan a identificar el tipo de objetos de destino; no en distinguir las operaciones que se pueden realizar a través de ellos, proporcionando así coherencia en la forma en que se manejan mediante programación los distintos tipos de objetos. La creación de identificadores y la resolución de objetos a partir de identificadores están mediadas únicamente por el Administrador de objetos, por lo que ningún uso de recursos pasa desapercibido para este.

Los tipos de objetos Executive expuestos por Windows NT son:

Estructura del objeto

Cada objeto gestionado por el Administrador de Objetos tiene un encabezado y un cuerpo; el encabezado contiene información de estado utilizada por el Administrador de objetos, mientras que el cuerpo contiene los datos específicos del objeto y los servicios que expone. El encabezado de un objeto contiene ciertos datos, expuestos como Properties, como Object Name(que identifica el objeto), Object Directory(la categoría a la que pertenece el objeto), Security Descriptors(los derechos de acceso a un objeto), Quota Charges(la información de uso de recursos para el objeto), Open handle count(el número de veces que se ha abierto un identificador del objeto), Open handle list(la lista de procesos que tiene una referencia activa al objeto), su Reference count(el número de referencias activas al objeto) y el Type(un objeto que identifica la estructura del cuerpo del objeto) del objeto.

Un Typeobjeto contiene propiedades únicas para el tipo de objeto, así como métodos estáticos que implementan los servicios ofrecidos por el objeto. Los objetos administrados por el Administrador de objetos deben al menos proporcionar un conjunto predefinido de servicios: Close(que cierra un identificador para un objeto), Duplicate(crea otro identificador para el objeto con el cual otro proceso puede obtener acceso compartido al objeto), Query object(reúne información sobre su atributos y propiedades), Query security(obtener el descriptor de seguridad del objeto), Set security(cambiar el acceso de seguridad) y Wait(para sincronizar con uno o más objetos a través de ciertos eventos). Los objetos de tipo también tienen algunos atributos comunes, incluido el nombre del tipo, si se asignarán en la memoria no paginada, derechos de acceso e información de sincronización. Todas las instancias del mismo tipo comparten el mismo objeto de tipo y el objeto de tipo se crea una instancia solo una vez. Se puede crear un nuevo tipo de objeto dotándolo de propiedades para exponer su estado y métodos para exponer los servicios que ofrece.

Object namese utiliza para dar una identidad descriptiva a un objeto, para ayudar en la búsqueda de objetos. El Administrador de objetos mantiene la lista de nombres ya asignados a los objetos que se administran y asigna los nombres a las instancias. Dado que la mayoría de los accesos a objetos se producen mediante identificadores, no siempre es necesario buscar el nombre para resolverlo en la referencia del objeto. La búsqueda solo se realiza cuando se crea un objeto (para asegurarse de que el nuevo objeto tenga un nombre único) o un proceso accede a un objeto por su nombre explícitamente. Object directoriesSe utilizan para clasificarlos según los tipos. Los directorios predefinidos incluyen \??(nombres de dispositivos), \BaseNamedObjects(mutex, eventos, semáforos, temporizadores de espera y objetos de sección), \Callback(funciones de devolución de llamada), \Device( \Drivertablas de idiomas), \FileSystem( \KnownDllsobjetos de tipo), ( puertos RPC ), (subsistema de seguridad ). objetos) y (objetos del subsistema de ventanas). Los objetos también pertenecen a un espacio de nombres . A cada sesión de usuario se le asigna un espacio de nombres diferente. Los objetos compartidos entre todas las sesiones están en el espacio de nombres GLOBAL y los objetos específicos de la sesión están en los espacios de nombres de sesión específicos.\Nls\ObjectTypes\RPC Control\Security\Windows

Estructura OBJECT_ATTRIBUTES:

typedef estructura _OBJECT_ATTRIBUTES { Longitud ULONG ; MANEJAR DirectorioRaíz ; PUNICODE_STRING Nombre del objeto ; Atributos ULONG ; PSECURITY_DESCRIPTOR Descriptor de seguridad ; PSECURITY_QUALITY_OF_SERVICE CalidadDeServicioSeguridad ; } OBJECT_ATTRIBUTES * POBJECT_ATTRIBUTES ;                 

El miembro Attributes puede ser cero o una combinación de los siguientes indicadores:

OBJ_INHERITOBJ_PERMANENTOBJ_EXCLUSIVOOBJ_CASE_INSENSITIVEOBJ_OPENIFOBJ_OPENLINKOBJ_KERNEL_HANDLE

Uso

Las rutas del Administrador de objetos están disponibles para muchas funciones de archivos API de Windows, aunque los nombres de Win32 como \\?\ y \\.\ para los espacios de nombres locales son suficientes para la mayoría de los usos. [1] El uso del primero en las funciones del modo de usuario de Win32 se traduce directamente en \?? , pero usando \?? sigue siendo diferente ya que esta forma NT no desactiva la expansión del nombre de ruta. [2]

Hay disponibles herramientas que sirven como exploradores en los espacios de nombres del Administrador de objetos. Estos incluyen WinObj de 32 bits de Sysinternals [3] y WinObjEx64 de 64 bits. [4]

Ver también

Referencias

  1. ^ "Nombrar archivos, rutas y espacios de nombres: aplicaciones Win32". docs.microsoft.com .
  2. ^ "winapi: ¿hay alguna diferencia entre las rutas \??\ y \\?\?". Desbordamiento de pila .
  3. ^ "WinObj: componentes internos del sistema de Windows". docs.microsoft.com .
  4. ^ "hfiref0x/WinObjEx64: Explorador de objetos de Windows de 64 bits". GitHub . 20 de febrero de 2020.

enlaces externos