Función ReOpenFile (winbase.h)
Vuelve a abrir el objeto de sistema de archivos especificado con diferentes derechos de acceso, modo de uso compartido y marcas.
Sintaxis
HANDLE ReOpenFile(
[in] HANDLE hOriginalFile,
[in] DWORD dwDesiredAccess,
[in] DWORD dwShareMode,
[in] DWORD dwFlagsAndAttributes
);
Parámetros
[in] hOriginalFile
Identificador del objeto que se va a volver a abrir. La función CreateFile debe haber creado el objeto .
[in] dwDesiredAccess
Acceso necesario al objeto . Para obtener una lista de valores, consulte Seguridad de archivos y derechos de acceso. No se puede solicitar un modo de acceso que entre en conflicto con el modo de uso compartido especificado en una solicitud abierta anterior cuyo identificador sigue abierto.
Si este parámetro es cero (0), la aplicación puede consultar los atributos del dispositivo sin tener acceso al dispositivo. Esto es útil si una aplicación quiere determinar el tamaño de una unidad de disco disquete y los formatos que admite sin necesidad de un disquete en la unidad.
[in] dwShareMode
Modo de uso compartido del objeto. No se puede solicitar un modo de uso compartido que entre en conflicto con el modo de acceso especificado en una solicitud abierta anterior cuyo identificador sigue abierto.
Si este parámetro es cero (0) y CreateFile se realiza correctamente, el objeto no se puede compartir y no se puede volver a abrir hasta que se cierre el identificador.
Para permitir que otros procesos compartan el objeto mientras el proceso lo tiene abierto, use una combinación de uno o varios de los siguientes valores para especificar el tipo de acceso que pueden solicitar al abrir el objeto. Estas opciones de uso compartido permanecen en vigor hasta que se cierra el identificador del objeto.
[in] dwFlagsAndAttributes
Marcas de archivo. Este parámetro puede ser uno o más de los siguientes valores.
Value | Significado |
---|---|
|
Indica que el archivo se está abriendo o creando para una operación de copia de seguridad o restauración. El sistema garantiza que el proceso de llamada invalida las comprobaciones de seguridad de archivos, siempre que tenga los privilegios SE_BACKUP_NAME y SE_RESTORE_NAME . Para obtener más información, consulte Cambio de privilegios en un token.
También puede establecer esta marca para obtener un identificador en un directorio. Donde se indica, se puede pasar un identificador de directorio a algunas funciones en lugar de un identificador de archivo. |
|
Indica que el sistema operativo es eliminar el archivo inmediatamente después de que se hayan cerrado todos sus identificadores, no solo el identificador especificado, sino también cualquier otro identificador abierto o duplicado.
Las solicitudes abiertas posteriores para el archivo producen un error, a menos que se use FILE_SHARE_DELETE . |
|
Indica al sistema que abra el archivo sin almacenamiento en búfer intermedio ni almacenamiento en caché. Cuando se combina con FILE_FLAG_OVERLAPPED, la marca proporciona un rendimiento asincrónico máximo, ya que la E/S no se basa en las operaciones sincrónicas del administrador de memoria. Sin embargo, algunas operaciones de E/S tardan más, ya que los datos no se mantienen en la memoria caché.
Una aplicación debe cumplir requisitos específicos al trabajar con archivos abiertos con FILE_FLAG_NO_BUFFERING:
Una aplicación puede determinar un tamaño de sector de volumen llamando a la función GetDiskFreeSpace . |
|
Indica que se solicitan los datos del archivo, pero debe seguir residiendo en el almacenamiento remoto. No se debe transportar de vuelta al almacenamiento local. Esta marca está pensada para su uso por parte de los sistemas de almacenamiento remoto. |
|
Cuando se usa esta marca, no se produce el procesamiento normal del punto de reanálisis y ReOpenFile intenta abrir el punto de reanálisis. Cuando se abre un archivo, se devuelve un identificador de archivo, independientemente de si el filtro que controla el punto de reanálisis está operativo. Esta marca no se puede usar con la marca CREATE_ALWAYS . Si el archivo no es un punto de reanálisis, se omite esta marca. |
|
Indica al sistema que inicialice el objeto para que las operaciones que tarden mucho tiempo en procesar la devolución ERROR_IO_PENDING. Una vez finalizada la operación, el evento especificado se establece en el estado señalado.
Al especificar FILE_FLAG_OVERLAPPED, las funciones de lectura y escritura de archivos deben especificar una estructura SUPERPUESTA . Es decir, cuando se especifica FILE_FLAG_OVERLAPPED , una aplicación debe realizar lectura y escritura superpuestas. Cuando se especifica FILE_FLAG_OVERLAPPED , el sistema no mantiene el puntero de archivo. La posición del archivo debe pasarse como parte del parámetro lpOverlapped (que apunta a una estructura SUPERPUESTA ) a las funciones de lectura y escritura del archivo. Esta marca también permite que varias operaciones se realicen simultáneamente con el identificador (por ejemplo, una operación simultánea de lectura y escritura). |
|
Indica que se va a tener acceso al archivo según las reglas POSIX. Esto incluye permitir varios archivos con nombres, que solo difieren en el caso de los sistemas de archivos que admiten este nombre. Use cuidado al usar esta opción porque las aplicaciones escritas para MS-DOS o Windows de 16 bits pueden no tener acceso a los archivos creados con esta marca. |
|
Indica que el acceso al archivo se realiza aleatoriamente. El sistema puede considerar que esto es una sugerencia para optimizar el almacenamiento en caché del archivo. |
|
Indica que el acceso al archivo debe ser secuencial de principio a fin. El sistema puede considerar que esto es una sugerencia para optimizar el almacenamiento en caché del archivo. Si una aplicación mueve el puntero de archivo para obtener acceso aleatorio, puede que no se produzca un almacenamiento en caché óptimo; no obstante, la operación correcta sigue garantizada.
Especificar esta marca puede aumentar el rendimiento de las aplicaciones que leen archivos grandes mediante el acceso secuencial. Las ganancias de rendimiento pueden ser aún más notables para las aplicaciones que leen archivos grandes principalmente secuencialmente, pero en ocasiones omiten intervalos pequeños de bytes. |
|
Indica al sistema que escriba a través de cualquier caché intermedia y vaya directamente al disco. El sistema todavía puede almacenar en caché las operaciones de escritura, pero no puede vaciarlas de forma diferida. |
Si el identificador representa el lado cliente de una canalización con nombre, el parámetro dwFlags también puede contener información de calidad de servicio de seguridad. Para obtener más información, vea Niveles de suplantación. Cuando la aplicación que realiza la llamada especifica la marca SECURITY_SQOS_PRESENT , el parámetro dwFlags puede contener uno o varios de los valores siguientes.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es un identificador abierto para el archivo especificado.
Si se produce un error en la función, el valor devuelto es INVALID_HANDLE_VALUE. Para obtener información de error extendida, llame a GetLastError.
Comentarios
El parámetro dwFlags no puede contener ninguna de las marcas de atributo de archivo (FILE_ATTRIBUTE_*). Solo se pueden especificar cuando se crea el archivo.
En Windows 8 y Windows Server 2012, esta función es compatible con las tecnologías siguientes.
Tecnología | Compatible |
---|---|
Protocolo Bloque de mensajes del servidor (SMB) 3.0 | Sí |
Conmutación por error transparente (TFO) de SMB 3.0 | Sí |
SMB 3.0 con recursos compartidos de archivos de escalabilidad horizontal (SO) | Sí |
Sistema de archivos de Volumen compartido de clúster (CsvFS) | Sí |
Sistema de archivos resistente a errores (ReFS) | Sí |
Requisitos
Cliente mínimo compatible | Windows Vista [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winbase.h (incluya Windows.h) |
Library | Kernel32.lib |
Archivo DLL | Kernel32.dll |