Inicio / Wikis / Tutoriales / Los rincones del API Win32: Archivos proyectados en memoria - Objeto File (archivo)

Los rincones del API Win32: Archivos proyectados en memoria - Objeto File (archivo)

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

9 - Objeto File (archivo)

Se tratan de un objeto del núcleo que se representa por un descriptor. Este descriptor se obtiene a través de la función del API CreateFile, que aunque no lo parezca, se usa tanto para abrir un archivo existente como para crearlo.

Para los programadores de C++Builder, otra opción puede ser utilizar un objeto de cualquier descendiente de la clase THandleStream que nos proporciona la VCL, aunque no vamos a entrar en este caso, ya que nuestro objetivo es centrarnos en el API Win32.

La función CreateFile en realidad se utiliza para abrir cualquier dispositivo de E/S: desde un fichero de disco o una partición física, hasta un puerto de comunicaciones, aunque nosotros nos vamos a centrar en los ficheros de disco, que es el caso que nos ocupa.

El prototipo de la función es el siguiente:

HANDLE CreateFile( LPCTSTR lpArchivo, DWORD dwModoAcceso, DWORD dwCompartir, LPSECURITY_ATTRIBUTES lpSecuridad, DWORD dwCreation, DWORD dwAtributos, HANDLE hFicheroPlantilla );

Como podéis ver la función es bastante compleja. Vamos a intentar aclarar un poco el asunto:

  • lpArchivo: un puntero a una cadena con el nombre y ruta del archivo a abrir.
  • dwModoAcceso: indica el modo de apertura, pudiendo ser una combinación de los siguientes valores:
    • GENERIC_READ: para modo lectura.
    • GENERIC_WRITE: para modo escritura.
    • 0: para modo consulta. Este modo se utiliza consultar/modificar los atributos del archivo sin leer ni alterar su contenido.
  • dwCompartir: indica si se podrá compartir del archivo mientras esté abierto por nuestro proceso. Si no queremos que pueda ser abierto, debemos indicar un 0. Si queremos compartirlo de algún modo podemos usar cualquier combinación de los siguientes valores:
    • FILE_SHARE_READ: se permiten aperturas en modo lectura.
    • FILE_SHARE_WRITE: se permiten aperturas en modo escritura.
  • lpSeguridad: un puntero a la estructura de seguridad, para indicar si el descriptor creado puede ser heredado en los subprocesos. Los sistemas Windos 95/98/Me no soportan esta característica de seguridad de descriptores. Indicando un NULL se utilizará las opciones por defecto (no heredable).
  • dwCreacion:especifica el modo en que se comportará la función cuando el archivo no exista. Los posibles valores son:
    • CREATE_NEW: crea un nuevo archivo y falla si el archivo ya existe.
    • CREATE_ALWAYS: crea un nuevo archivo sobrescribiendo si existe.
    • OPEN_EXISTING: abre el archivo sin crearlo y falla si no existe.
    • OPEN_ALWAYS: abre el archivo sin existe o lo crea si no existe.
    • TRUNCATE_EXISTING: abre el archivo vaciándolo, y falla si no existe.
  • dwAtributos: indica los atributos con que se marcará al archivo una vez realizada la apertura. Se puede pasar cualquier combinación de los siguientes valores:
    • FILE_ATTRIBUTE_ARCHIVE: indica que se debe marcar como "archivado".
    • FILE_ATTRIBUTE_COMPRESSED: indica que los datos deben comprimirse (sólo válido en sistemas NTFS).
    • FILE_ATTRIBUTE_HIDDEN: indica que debe marcarse como "oculto".
    • FILE_ATTRIBUTE_NORMAL: se deben eliminar todos los atributos que tenga el archivo. Este valor no puede combinarse con ningún otro.
    • FILE_ATTRIBUTE_READONLY: indica que está marcado como "sólo lectura".
    • FILE_ATTRIBUTE_SYSTEM: se debe marcar como archivo de sistema, lo que indica que no puede ser escrito ni borrado.
    • FILE_ATTRIBUTE_TEMPORARY: se debe marcar como archivo temporal. El sistema de archivos trata a los archivos temporales de forma distinta, intentando mantener el archivo continuamente en memoria RAM. Además de estos atributos, se pueden combinar una serie de banderas para modificar el comportamiento de la función. No vamos a entrar en estos detalles, ya que para nuestros ejemplos no vamos a utilizarlas.
  • hFicheroPlantilla: indica el descriptor de un fichero abierto. Este fichero se utilizará como plantilla y se copiarán todos los atributos al nuevo archivo.

Esta función nos retorna el descriptor del objeto del núcleo de tipo "File". Si se indicó la bandera OPEN_ALWAYS o CREATE_ALLWAYS y el archivo existe, se retorna ERROR_ALREADY_EXISTS, y si se ha producido algún error, se retornará INVALID_HANDLE_VALUE.

Una vez que esté abierto el fichero, y ya no lo necesitemos más, debemos cerrarlo a través de la función propia para cerrar objetos del núcleo: CloseHandle.
Valora este capítulo: (1 opiniones)
Autor y licencia de 'Los rincones del API Win32: Archivos proyectados en memoria - Objeto File (archivo)'
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 - Objeto File (archivo)' (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 - Objeto File (archivo)'

Curso que profundiza en el gestor de montones (o montículos) dentro de Win32, así como... 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 »
Aprenderás a acelerar el arranque de tu ordenador y a eliminar algunos virus que se... Más »
¿Qué es una imagen ISO? Las imágenes ISO son archivos que siguen los estándares ISO-9660... Más »
¿Estás seguro de que deseas eliminar este capítulo?