Inicio / Wikis / Tutoriales / Los rincones del API Win32: Archivos proyectados en memoria - Objetos nombrados

Los rincones del API Win32: Archivos proyectados en memoria - Objetos nombrados

(1 opiniones)
Tutorial creado por Juan Manuel. Extraido de: http://www.lawebdejm.com
27 de Agosto de 2005
Programación estructurada

14 - Objetos nombrados

Este sistema se utiliza para comunicar dos procesos independientes, sin ningún "parentesco" entre ellos. Se basa en la apertura del objeto del núcleo a través de los denominados named-filemapping, es decir: proyecciones de archivo nombradas.

Ya hemos hablado algo de esto, y básicamente, se trata de asignar un nombre a una proyección de archivo y abrir la proyección utilizando el nombre que hemos asignado.

Cuando se abre la proyección, en realidad lo que está ocurriendo es que se incrementa el contador de referencias del objeto, se copia la entrada de la tabla de objetos del núcleo y devuelve el mismo descriptor (porque la copia se hace en el mismo índice de la tabla).

Para abrir la proyección tenemos dos opciones: utilizar la función para tal efecto (OpenFileMapping), o intentar crear una proyección con el mismo nombre. Si ya existe una proyección con ese nombre, la función CreateFileMapping incrementará el contador de referencias y nos retornará ERROR_ALREADY_EXISTS. Este código de error puede despistarnos, ya que en muchas ocasiones no se estará produciendo ningún error, sino que será la situación esperada. Sin embargo, en otras ocasiones sí que será un error, ya que no podemos garantizar que se nos reserve un nombre de proyección. Si, por ejemplo, queremos crear una proyección llamada "Mi proyección", nadie nos garantiza que otro proceso (incluso programado por otra persona o empresa), haya utilizado este nombre. Para solucionar esto, es recomendable utilizar nombres largos y descriptivos (de hasta 256 caracteres), por ejemplo indicando nuestro nombre, la fecha de programación o incluso un GUI, como puede ser:
JM.7C7B001B-2831-4078-A5DD-2B89C0FD91F7.Nombre de la proyección
El "modus operandi" a seguir para compartir datos es el siguiente:

  1. Desde el primer proceso: crear una proyección de archivo con un nombre dado.
  2. Desde el segundo proceso: abrir la proyección con el mismo nombre, o bien intentar crearla y comprobar si retorna ERROR_ALREADY_EXISTS.
  3. Utilizar el objeto indistintamente desde uno o otro proceso. Cada vez que se produzcan cambios, puede ser recomendable notificar a los demás procesos (más adelante hablaremos de esto).
  4. Al finalizar los procesos que hayan abierto o creado el objeto, se debe cerrar el descriptor con la función CloseHandle.

Este es el sistema más sencillo y práctico, así que he seguido este método en el ejemplo de Visual C++ que acompaña al artículo (encapsulado en la clase CProyeccion).
Valora este capítulo: (1 opiniones)
Autor y licencia de 'Los rincones del API Win32: Archivos proyectados en memoria - Objetos nombrados'
Juan Manuel Extraído de: http://www.lawebdejm.com

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Opiniona sobre 'Los rincones del API Win32: Archivos proyectados en memoria - Objetos nombrados' (1)

Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.

Opina sobre este tutorial



* Valoración:
* Nombre:
* Correo electrónico:
* Título:
* Comentario:

Wikis relacionados con 'Los rincones del API Win32: Archivos proyectados en memoria - Objetos nombrados'

Curso que profundiza en el gestor de montones (o montículos) dentro de Win32, así como... Más »
UML (Unified Modeling Language) es un lenguaje que permite modelar, construir y documentar los elementos... Más »
Aprenderás a utilizar uno de los mejores clientes P2P que actualmente existe (o sobrevive), a... Más »
Con este articulo serás capaz de instalar el eMule en tu ordenador y comenzar a... Más »
El Poeta posee la extraña capacidad para hablar sobre los orígenes. Digo "extraña" porque no... Más »
¿Estás seguro de que deseas eliminar este capítulo?