stringtranslate.com

Administrador de objetos

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

El Administrador de objetos (internamente llamado Ob ) es un subsistema implementado como parte del Ejecutivo de Windows que administra los recursos de Windows . Los recursos, que se presentan 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 tratan con los recursos deben pasar por el Administrador de objetos.

Arquitectura

El Administrador de objetos en la arquitectura de Windows NT

El Administrador de objetos 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 los 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 del recurso, que expone las capacidades y funcionalidades a través de propiedades. Un objeto se mantiene disponible hasta que todos los procesos terminan de usarlo; el Administrador de objetos mantiene el registro de qué objetos están actualmente en uso a través del recuento de referencias , así como la información de propiedad. Cualquier llamada del sistema que cambie el estado de la asignación de recursos a los procesos pasa por el Administrador de objetos.

Los objetos pueden ser objetos Kernel u objetos Executive . Los objetos Kernel representan recursos primitivos como dispositivos físicos o servicios como sincronización, que son necesarios para implementar cualquier otro tipo de servicio del SO. Los objetos Kernel no están expuestos al código del modo de usuario , sino que están restringidos al código del kernel. Las aplicaciones y servicios que se ejecutan fuera del kernel usan 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 Executive encapsulan uno o más objetos kernel y exponen no solo el kernel y los recursos mediados por el kernel, sino también un conjunto expandido de servicios que realiza el kernel. [ aclaración necesaria ] Las aplicaciones en sí mismas pueden envolver uno o más objetos Executive y objetos de superficie [ definición necesaria ] que ofrecen ciertos servicios. Los objetos Executive también son utilizados por los subsistemas del entorno (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 se abre un objeto, se crea una referencia a la instancia, conocida como identificador. El Administrador de objetos indexa los objetos tanto por sus nombres como por sus identificadores. Hacer referencia a los objetos por identificadores es más rápido, ya que evita la traducción de nombres. Los identificadores se asocian con los procesos mediante una entrada en la tabla de identificadores del proceso, que enumera los identificadores que posee y se pueden transferir entre procesos. Un proceso debe poseer un identificador para un objeto para usarlo y puede poseer hasta 16.000.000 de identificadores a la vez. Durante la creación, un proceso obtiene identificadores para un conjunto predeterminado de objetos. Existen diferentes tipos de identificadores, como identificadores de archivos, identificadores de eventos e identificadores de procesos, que identifican el tipo de objetos de destino pero no distinguen las operaciones que se pueden realizar a través de ellos. Esta coherencia garantiza un manejo uniforme de varios tipos de objetos mediante programación. La creación de identificadores y la resolución de objetos a partir de identificadores son administradas exclusivamente por el Administrador de objetos, lo que garantiza que no pase desapercibido ningún uso de recursos.

Los tipos de objetos ejecutivos expuestos por Windows NT son:

Estructura del objeto

Cada objeto administrado 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. Un encabezado de objeto contiene ciertos datos, expuestos como Properties, como Object Name(que identifica al objeto), Object Directory(la categoría a la que pertenece el objeto), Security Descriptors(los derechos de acceso para un objeto), Quota Charges(la información de uso de recursos para el objeto), Open handle count(la cantidad de veces que se ha abierto un identificador, un identificador del objeto), Open handle list(la lista de procesos que tiene una referencia activa al objeto), su Reference count(la cantidad de referencias activas al objeto) y el Type(un objeto que identifica la estructura del cuerpo del objeto) del objeto.

Un Typeobjeto contiene propiedades exclusivas del tipo del objeto, así como métodos estáticos que implementan los servicios ofrecidos por el objeto. Los objetos administrados por Object Manager deben proporcionar al menos un conjunto predefinido de servicios: Close(que cierra un identificador para un objeto), Duplicate(crear otro identificador para el objeto con el que otro proceso puede obtener acceso compartido al objeto), Query object(recopilar información sobre sus atributos y propiedades), Query security(obtener el descriptor de seguridad del objeto), Set security(cambiar el acceso de seguridad) y Wait(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 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 instancia solo una vez. Se puede crear un nuevo tipo de objeto dotando a un objeto con 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. Object Manager mantiene la lista de nombres ya asignados a los objetos que se están administrando y asigna los nombres a las instancias. Dado que la mayoría de los accesos a objetos se producen a través de 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 categorizarlos según los tipos. Los directorios predefinidos incluyen \??(nombres de dispositivos), \BaseNamedObjects(mutexes, eventos, semáforos, temporizadores de espera y objetos de sección), \Callback(funciones de devolución de llamada), \Device, \Driver, \FileSystem, \KnownDlls, \Nls(tablas de idioma), \ObjectTypes(objetos de tipo), \RPC Control( puertos RPC\Security ), (objetos del subsistema de seguridad) y \Windows(objetos del subsistema de ventanas). Los objetos también pertenecen a un Namespace . 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

Estructura OBJECT_ATTRIBUTES:

typedef struct _OBJECT_ATTRIBUTES { ULONG Longitud ; HANDLE DirectorioRaíz ; PUNICODE_STRING NombreObjeto ; ULONG Atributos ; PSECURITY_DESCRIPTOR DescriptorSeguridad ; PSECURITY_CALIDAD_DE_SERVICIO CalidadDeServicioSeguridad ; } ATRIBUTOS_OBJETO * ATRIBUTOS_POBJECT ;                 

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

OBJ_HEREDARIOOBJ_PERMANENTEOBJ_EXCLUSIVOOBJ_SIN_SENSIBILIDAD_A_MINÚSCULAS_Y_MÚSCULASOBJ_ABRIRSIOBJ_ENLACE ABIERTOMANEJO DEL NÚCLEO OBJ

Uso

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

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

Véase también

Referencias

  1. ^ "Nombres de archivos, rutas y espacios de nombres: aplicaciones Win32". docs.microsoft.com .
  2. ^ "winapi - ¿Existe alguna diferencia entre las rutas \??\ y \\?\?". Desbordamiento de pila .
  3. ^ "WinObj - Componentes 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