Compartir a través de


Función CreateFile3 (fileapi.h)

Crea o abre un archivo o dispositivo de E/S. Los dispositivos de E/S más usados son los siguientes: archivo, secuencia de archivos, directorio, disco físico, volumen, búfer de consola, unidad de cinta, recurso de comunicaciones, mailslot y canalización. La función devuelve un identificador que se puede usar para tener acceso al archivo o dispositivo para varios tipos de E/S según el archivo o dispositivo y las marcas y atributos especificados.

Cuando se llama desde una aplicación empaquetada de espacio aislado, CreateFile3 se simplifica. Solo puede abrir archivos o directorios dentro de los directorios ApplicationData.LocalFolder o Package.InstalledLocation . No se pueden abrir canalizaciones con nombre ni gráficos de correo ni crear archivos cifrados (FILE_ATTRIBUTE_ENCRYPTED).

Nota:

 Aquí nos referimos a la carpeta local de la aplicación y a la ubicación instalada del paquete, no a paquetes adicionales en el gráfico de paquetes, como los paquetes de recursos. CreateFile3 no admite la apertura de archivos en paquetes adicionales en el gráfico de paquetes. Para realizar esta operación como una operación de transacción, lo que da como resultado un identificador que se puede usar para E/S con transacciones, use la función CreateFileTransacted .

Sintaxis

HANDLE CreateFile3(
  LPCWSTR                           lpFileName,
  DWORD                             dwDesiredAccess,
  DWORD                             dwShareMode,
  DWORD                             dwCreationDisposition,
  LPCREATEFILE3_EXTENDED_PARAMETERS pCreateExParams
);

Parámetros

lpFileName

Nombre del archivo o dispositivo que se va a crear o abrir.

Para obtener información sobre los nombres de dispositivo especiales, consulte Definición de un nombre de dispositivo MS-DOS.

Para crear una secuencia de archivos, especifique el nombre del archivo, dos puntos y, a continuación, el nombre de la secuencia. Para obtener más información, vea Secuencias de archivos.

Sugerencia

 Puede optar por quitar la limitación de MAX_PATH sin prepending "\?". Consulte la sección "Limitación máxima de longitud de ruta de acceso" de nomenclatura de archivos, rutas de acceso y espacios de nombres para obtener más información.

dwDesiredAccess

Acceso solicitado al archivo o dispositivo, que se puede resumir como lectura, escritura, ambos o ninguno de ellos.

Los valores más usados son GENERIC_READ, GENERIC_WRITE o ambos (GENERIC_READ | GENERIC_WRITE). Para obtener más información, vea Derechos de acceso genéricos, Derechos de seguridad de archivos y derechos de acceso, constantes de derechos de acceso de archivos y ACCESS_MASK.

Si este parámetro es cero, la aplicación puede consultar determinados metadatos, como los atributos de archivo, directorio o dispositivo sin tener acceso a ese archivo o dispositivo, incluso si se hubiera denegado GENERIC_READ acceso.

No se puede solicitar un modo de acceso que entra en conflicto con el modo de uso compartido especificado por el parámetro dwShareMode en una solicitud abierta que ya tiene un identificador abierto.

Para obtener más información, vea la sección Comentarios de este tema y Crear y abrir archivos.

dwShareMode

Modo de uso compartido solicitado del archivo o dispositivo, que se puede leer, escribir, eliminar, todos o ninguno (consulte la tabla siguiente). Las solicitudes de acceso a atributos o atributos extendidos no se ven afectadas por esta marca.

Si este parámetro es cero y CreateFile3 se realiza correctamente, el archivo o el dispositivo no se pueden compartir y no se pueden volver a abrir hasta que se cierre el identificador del archivo o dispositivo. Para más información, vea la sección Comentarios.

No se puede solicitar un modo de uso compartido que entre en conflicto con el modo de acceso especificado en una solicitud existente que tenga un identificador abierto. Se produciría un error en CreateFile3 y la función GetLastError devolvería ERROR_SHARING_VIOLATION.

Para habilitar un proceso para compartir un archivo o dispositivo mientras otro proceso tiene abierto el archivo o dispositivo, use una combinación compatible de uno o varios de los valores siguientes. Para obtener más información sobre las combinaciones válidas de este parámetro con el parámetro dwDesiredAccess , vea Crear y abrir archivos.

Nota:

 Las opciones de uso compartido de cada identificador abierto permanecen en vigor hasta que se cierra ese identificador, independientemente del contexto del proceso.

Valor Significado
0
0x00000000
Impide que otros procesos abran un archivo o dispositivo si solicitan acceso de eliminación, lectura o escritura. Solo se concede acceso exclusivo a un archivo o directorio si la aplicación tiene acceso de escritura al archivo.
FILE_SHARE_DELETE
0x00000004
Habilita las operaciones abiertas posteriores en un archivo o dispositivo para solicitar el acceso de eliminación. De lo contrario, otros procesos no pueden abrir el archivo o el dispositivo si solicitan el acceso de eliminación. Si no se especifica esta marca, pero se ha abierto el archivo o el dispositivo para el acceso de eliminación, se produce un error en la función.

Nota: El acceso de eliminación permite las operaciones de eliminación y cambio de nombre.
FILE_SHARE_READ
0x00000001
Habilita las operaciones abiertas posteriores en un archivo o dispositivo para solicitar acceso de lectura. De lo contrario, otros procesos no pueden abrir el archivo o el dispositivo si solicitan acceso de lectura. Si no se especifica esta marca, pero se ha abierto el archivo o el dispositivo para el acceso de lectura, se produce un error en la función. Si se abre un archivo o directorio y no se especifica esta marca y el autor de la llamada no tiene acceso de escritura al archivo o directorio, se produce un error en la función.
FILE_SHARE_WRITE
0x00000002
Habilita las operaciones abiertas posteriores en un archivo o dispositivo para solicitar acceso de escritura. De lo contrario, otros procesos no pueden abrir el archivo o el dispositivo si solicitan acceso de escritura. Si no se especifica esta marca, pero el archivo o dispositivo se ha abierto para el acceso de escritura o tiene una asignación de archivos con acceso de escritura, se produce un error en la función.

dwCreationDisposition

Acción que se va a realizar en un archivo o dispositivo que existe o no existe.

En el caso de los dispositivos que no sean archivos, este parámetro se establece normalmente en OPEN_EXISTING.

Para más información, vea la sección Comentarios.

Este parámetro debe ser uno de los siguientes valores, que no se pueden combinar:

Valor Significado
CREATE_ALWAYS
2
Crea siempre un nuevo archivo. Si el archivo especificado existe y se puede escribir, la función trunca el archivo, la función se ejecuta correctamente y el código de último error se establece en ERROR_ALREADY_EXISTS (183). Si el archivo especificado no existe y es una ruta de acceso válida, se crea un nuevo archivo, la función se ejecuta correctamente y el código de último error se establece en cero. Para obtener más información, vea la sección Comentarios de este tema.
CREATE_NEW
1
Crea un nuevo archivo, solo si aún no existe. Si el archivo especificado existe, se produce un error en la función y el código de último error se establece en ERROR_FILE_EXISTS (80). Si el archivo especificado no existe y es una ruta de acceso válida a una ubicación grabable, se crea un nuevo archivo.
OPEN_ALWAYS
4
Abre siempre un archivo. Si el archivo especificado existe, la función se realiza correctamente y el código de último error se establece en ERROR_ALREADY_EXISTS (183). Si el archivo especificado no existe y es una ruta de acceso válida a una ubicación grabable, la función crea un archivo y el código de último error se establece en cero.
OPEN_EXISTING
3
Abre un archivo o dispositivo, solo si existe. Si el archivo o dispositivo especificado no existe, se produce un error en la función y el código de último error se establece en ERROR_FILE_NOT_FOUND (2). Para obtener más información sobre los dispositivos, consulte la sección Comentarios .
TRUNCATE_EXISTING
5
Abre un archivo y lo trunca para que su tamaño sea cero bytes, solo si existe. Si el archivo especificado no existe, se produce un error en la función y el último código de error se establece en ERROR_FILE_NOT_FOUND (2). El proceso de llamada debe abrir el archivo con el GENERIC_WRITE conjunto de bits como parte del parámetro dwDesiredAccess .

pCreateExParams

Puntero a una estructura de CREATEFILE3_EXTENDED_PARAMETERS opcional.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es un identificador abierto para el archivo, dispositivo, canalización con nombre o ranura de correo especificados.

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. Entre los posibles errores se incluyen los siguientes:

Código de retorno Descripción
ERROR_PATH_REDIRECTED lpFileName fue redirigido por puntos de reanálisis o vínculos simbólicos.

Observaciones

CreateFile3 se comporta exactamente de la misma manera que CreateFile2 con una excepción; Las operaciones pueden producir un error si lpFileName se redirige a través de un punto de reanálisis o un vínculo simbólico. Las redirecciones se pueden denegar agregando la marca FILE_FLAG_DISALLOW_PATH_REDIRECTS a dwFileFlags.

Para compilar una aplicación que use la función CreateFile3 , defina la macro _WIN32_WINNT como 0x0602 o posterior. Para obtener más información, vea Using the Windows Headers.

CreateFile3 admite la interacción de archivos y la mayoría de otros tipos de dispositivos y mecanismos de E/S disponibles para los desarrolladores de Windows. En esta sección se intentan tratar los diversos problemas que pueden experimentar los desarrolladores al usar CreateFile3 en contextos diferentes y con diferentes tipos de E/S. El texto intenta usar el archivo de palabras solo cuando se hace referencia específicamente a los datos almacenados en un archivo real en un sistema de archivos. Sin embargo, algunos usos del archivo pueden referirse más generalmente a un objeto de E/S que admita mecanismos similares a archivos. Este uso liberal del término archivo es especialmente frecuente en nombres constantes y nombres de parámetros debido a las razones históricas mencionadas anteriormente.

Cuando una aplicación termine de usar el identificador de objeto devuelto por CreateFile3, use la función CloseHandle para cerrar el identificador. Esto no solo libera los recursos del sistema, pero puede tener una influencia más amplia en cosas como compartir el archivo o el dispositivo y confirmar datos en el disco. Los detalles se indican en este tema según corresponda.

Algunos sistemas de archivos, como el sistema de archivos NTFS, admiten compresión o cifrado para archivos y directorios individuales. En los volúmenes que tienen un sistema de archivos montado con esta compatibilidad, un nuevo archivo hereda los atributos de compresión y cifrado de su directorio.

No se puede usar CreateFile3 para controlar la compresión, descompresión o descifrado en un archivo o directorio. Para obtener más información, vea Crear y abrir archivos, compresión y descompresión de archivos y cifrado de archivos.

Si el miembro lpSecurityAttributes de la estructura de CREATEFILE3_EXTENDED_PARAMETERS que se pasa en el parámetro pCreateExParams es NULL, el identificador devuelto por CreateFile3 no puede ser heredado por ningún proceso secundario que pueda crear la aplicación. También se aplica la siguiente información relacionada con este miembro:

  • Si la variable miembro bInheritHandle no FALSEes , que es cualquier valor distinto de cero, se puede heredar el identificador. Por lo tanto, es fundamental que este miembro de estructura se inicialice FALSE correctamente si no pretende que se pueda heredar el identificador.
  • Las listas de control de acceso (ACL) del descriptor de seguridad predeterminado para un archivo o directorio se heredan de su directorio primario.
  • El sistema de archivos de destino debe admitir la seguridad en archivos y directorios para que el miembro lpSecurityDescriptor tenga un efecto en ellos, que se puede determinar mediante GetVolumeInformation.

En Windows 8 y Windows Server 2012, esta función es compatible con las siguientes tecnologías:

Tecnología Compatible
Protocolo bloque de mensajes del servidor (SMB) 3.0
Conmutación por error transparente (TFO) de SMB 3.0 No
SMB 3.0 con recursos compartidos de archivos de escalabilidad horizontal (SO) No
Sistema de archivos de volumen compartido de clúster (CsvFS)
Sistema de archivos resistente (ReFS)

Si la llamada a esta función crea un archivo, no hay ningún cambio en el comportamiento. Además, tenga en cuenta la siguiente información sobre FILE_FLAG_OPEN_REPARSE_POINT marca para el miembro dwFileFlags de la estructura de CREATEFILE3_EXTENDED_PARAMETERS pasada en el parámetro pCreateExParams :

  • Si se especifica FILE_FLAG_OPEN_REPARSE_POINT :
    • Si se abre un archivo existente y es un vínculo simbólico, el identificador devuelto es un identificador del vínculo simbólico.
    • Si se especifican TRUNCATE_EXISTING o FILE_FLAG_DELETE_ON_CLOSE , el archivo afectado es un vínculo simbólico.
  • Si no se especifica FILE_FLAG_OPEN_REPARSE_POINT:
    • Si se abre un archivo existente y es un vínculo simbólico, el identificador devuelto es un identificador para el destino.
    • Si se especifican CREATE_ALWAYS, TRUNCATE_EXISTINGo FILE_FLAG_DELETE_ON_CLOSE, el archivo afectado es el destino.

Archivos

Si cambia el nombre o elimina un archivo y, a continuación, lo restaura poco después, el sistema busca en la memoria caché la información del archivo que se va a restaurar. La información almacenada en caché incluye su par de nombres corto/largo y el tiempo de creación.

Si llama a CreateFile3 en un archivo que está pendiente de eliminación como resultado de una llamada anterior a DeleteFile o DeleteFile2, se produce un error en la función. El sistema operativo retrasa la eliminación de archivos hasta que se cierran todos los identificadores del archivo. GetLastError devuelve ERROR_ACCESS_DENIED.

El parámetro dwDesiredAccess puede ser cero, lo que permite a la aplicación consultar atributos de archivo sin tener acceso al archivo si la aplicación se ejecuta con una configuración de seguridad adecuada. Esto resulta útil para probar la existencia de un archivo sin abrirlo para el acceso de lectura o escritura, o para obtener otras estadísticas sobre el archivo o directorio. Vea Obtener y establecer información de archivo y GetFileInformationByHandle.

Cuando una aplicación crea un archivo a través de una red, es mejor usar GENERIC_READ | GENERIC_WRITE para dwDesiredAccess que usar solo GENERIC_WRITE . El código resultante es más rápido, ya que el redirector puede usar el administrador de caché y enviar menos SMB con más datos. Esta combinación también evita un problema por el que la escritura en un archivo a través de una red puede devolver ocasionalmente ERROR_ACCESS_DENIED.

Para obtener más información, vea Crear y abrir archivos.

Secuencias de archivos

En los sistemas de archivos NTFS, puede usar CreateFile3 para crear secuencias independientes dentro de un archivo. Para obtener más información, vea Secuencias de archivos.

directorios

Una aplicación no puede crear un directorio mediante CreateFile3, por lo que solo el valor de OPEN_EXISTING es válido para dwCreationDisposition para este caso de uso. Para crear un directorio, la aplicación debe llamar a CreateDirectory, CreateDirectoryEx o CreateDirectory2.

Para abrir un directorio mediante CreateFile3, especifique la marca FILE_FLAG_BACKUP_SEMANTICS como parte del miembro dwFileFlags de la estructura CREATEFILE3_EXTENDED_PARAMETERS pasada en el parámetro pCreateExParams . Las comprobaciones de seguridad adecuadas se siguen aplicando cuando se usa esta marca sin privilegios de SE_BACKUP_NAME y SE_RESTORE_NAME .

Al usar CreateFile3 para abrir un directorio durante la desfragmentación de un volumen de sistema de archivos FAT o FAT32, no especifique el derecho de acceso MAXIMUM_ALLOWED . Si se hace esto, se deniega el acceso al directorio. Especifique el GENERIC_READ derecho de acceso en su lugar.

Para obtener más información, consulte Acerca de la administración de directorios.

Discos físicos y volúmenes

El acceso directo al disco o a un volumen está restringido.

Puede usar la función CreateFile3 para abrir una unidad de disco física o un volumen, que devuelve un identificador de dispositivo de almacenamiento de acceso directo (DASD) que se puede usar con la función DeviceIoControl . Esto le permite acceder directamente al disco o al volumen, por ejemplo, metadatos de disco como la tabla de particiones. Sin embargo, este tipo de acceso también expone la unidad de disco o el volumen a una posible pérdida de datos, ya que una escritura incorrecta en un disco que usa este mecanismo podría hacer que su contenido fuera inaccesible para el sistema operativo. Para garantizar la integridad de los datos, asegúrese de familiarizarse con DeviceIoControl y de cómo se comportan otras API de forma diferente con un identificador de acceso directo en lugar de un identificador de sistema de archivos.

Se deben cumplir los siguientes requisitos para que dicha llamada se realice correctamente:

  • El autor de la llamada debe tener privilegios administrativos. Para obtener más información, vea En ejecución con privilegios especiales.
  • El parámetro dwCreationDisposition debe tener la marca OPEN_EXISTING .
  • Al abrir un volumen o un disquete, el parámetro dwShareMode debe tener la marca FILE_SHARE_WRITE .

Nota:

 El parámetro dwDesiredAccess puede ser cero, lo que permite a la aplicación consultar atributos de dispositivo sin tener acceso a un dispositivo. Esto resulta útil para que una aplicación determine el tamaño de una unidad de disco disquete y los formatos que admite sin necesidad de un disco de disquete en una unidad, por ejemplo. También se puede usar para leer estadísticas sin necesidad de permiso de lectura y escritura de datos de nivel superior.

Al abrir una unidad física x:, la cadena lpFileName debe ser el siguiente formato: "\.\PhysicalDriveX".

Los números de disco duro comienzan en cero. En la tabla siguiente se muestran algunos ejemplos de cadenas de unidad física.

Cuerda Significado
"\.\PhysicalDrive0" Abre la primera unidad física.
"\.\PhysicalDrive2" Abre la tercera unidad física.

Para obtener el identificador de unidad física de un volumen, abra un identificador en el volumen y llame a la función DeviceIoControl con IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS. Este código de control devuelve el número de disco y el desplazamiento de cada una de las extensiones de uno o más volúmenes del volumen; un volumen puede abarcar varios discos físicos.

Para obtener un ejemplo de apertura de una unidad física, consulte Llamada a DeviceIoControl.

Al abrir un volumen o una unidad multimedia extraíble (por ejemplo, una unidad de disco de disquete o una unidad de memoria flash), la cadena lpFileName debe ser la siguiente forma: "\\.\X:". No use una barra diagonal inversa final (\), que indica el directorio raíz de una unidad.

En la tabla siguiente se muestran algunos ejemplos de cadenas de unidad:

Cuerda Significado
"\.\A:" Abre la unidad de disco A.
"\.\C:" Abre el volumen C: .
"\.\C:" Abre el sistema de archivos del volumen C: .

También puede abrir un volumen haciendo referencia a su nombre de volumen. Para obtener más información, consulte Nomenclatura de un volumen.

Un volumen contiene uno o varios sistemas de archivos montados. Los identificadores de volumen se pueden abrir como no almacenados en caché a discreción del sistema de archivos concreto, incluso cuando la opción no almacenada en caché no se especifica en CreateFile3. Debe suponer que todos los sistemas de archivos de Microsoft abren los identificadores de volumen como no almacenados en caché. Las restricciones de E/S no almacenadas en caché para los archivos también se aplican a los volúmenes.

Un sistema de archivos puede requerir o no alineación del búfer aunque los datos no se almacenen en caché. Sin embargo, si se especifica la opción no almacenada en caché al abrir un volumen, se aplica la alineación del búfer independientemente del sistema de archivos del volumen. Se recomienda en todos los sistemas de archivos que abra los identificadores de volumen como no almacenados en caché y siga las restricciones de E/S no almacenadas en caché.

Nota:

 Para leer o escribir en los últimos sectores del volumen, debe llamar a DeviceIoControl y especificar FSCTL_ALLOW_EXTENDED_DASD_IO. Esto indica al controlador del sistema de archivos que no realice ninguna comprobación de límites de E/S en las llamadas de lectura o escritura de particiones. En su lugar, el controlador del dispositivo realiza comprobaciones de límites.

Dispositivo de modificador

Los códigos de control IOCTL_CHANGER_* para DeviceIoControl aceptan un identificador para un dispositivo de modificador. Para abrir un dispositivo de modificador, use un nombre de archivo con el siguiente formato: "\.\Changerx", donde x es un número que indica qué dispositivo se va a abrir, empezando por cero. Para abrir el dispositivo de modificador cero en una aplicación escrita en C o C++, use el siguiente nombre de archivo: "\\.\Changer0".

Unidades de cinta

Puede abrir unidades de cinta con un nombre de archivo de la siguiente forma: "\.\TAPEx", donde x es un número que indica qué unidad se va a abrir, empezando por la unidad de cinta cero. Para abrir la unidad de cinta cero en una aplicación escrita en C o C++, use el siguiente nombre de archivo: "\\.\TAPE0".

Para obtener más información, consulte Copia de seguridad.

Recursos de comunicaciones

La función CreateFile3 puede crear un identificador para un recurso de comunicaciones, como el puerto serie COM1. Para los recursos de comunicaciones, el parámetro dwCreationDisposition debe ser OPEN_EXISTING, el parámetro dwShareMode debe ser cero (acceso exclusivo) y el parámetro hTemplateFile debe ser NULL. Se puede especificar el acceso de lectura, escritura o lectura y escritura, y el identificador se puede abrir para E/S superpuesta.

Para especificar un número de puerto COM mayor que 9, use la sintaxis siguiente: "\.\COM10". Esta sintaxis funciona para todos los números de puerto y hardware que permite especificar números de puerto COM.

Para obtener más información sobre las comunicaciones, consulte Comunicaciones.

Consolas

La función CreateFile3 puede crear un identificador para la entrada de la consola (CONIN$). Si el proceso tiene un identificador abierto para él como resultado de la herencia o duplicación, también puede crear un identificador para el búfer de pantalla activo (CONOUT$). El proceso de llamada debe asociarse a una consola heredada o a una asignada por la función AllocConsole .

En el caso de los identificadores de consola, establezca los parámetros CreateFile3 como se indica a continuación:

Parámetros Valor
lpFileName Use el valor CONIN$ para especificar la entrada de la consola.

Use el valor CONOUT$ para especificar la salida de la consola.

CONIN$ obtiene un identificador del búfer de entrada de la consola, incluso si la función SetStdHandle redirige el identificador de entrada estándar. Para obtener el identificador de entrada estándar, use la función GetStdHandle .

CONOUT$ obtiene un identificador del búfer de pantalla activo, incluso si SetStdHandle redirige el identificador de salida estándar. Para obtener el identificador de salida estándar, use GetStdHandle.
dwDesiredAccess GENERIC_READ \| GENERIC_WRITE es preferible, pero cualquiera de ellos puede limitar el acceso.
dwShareMode Al abrir CONIN$, especifique FILE_SHARE_READ. Al abrir CONOUT$, especifique FILE_SHARE_WRITE.

Si el proceso de llamada hereda la consola o si un proceso secundario debe poder acceder a la consola, este parámetro debe ser FILE_SHARE_READ \| FILE_SHARE_WRITE.
dwCreationDisposition Debe especificar OPEN_EXISTING al usar CreateFile3 para abrir la consola.

Establezca los miembros de la estructura de CREATEFILE3_EXTENDED_PARAMETERS pasados en el parámetro pCreateExParams de la siguiente manera:

Miembros Valor
lpSecurityAttributes Si desea que la consola se herede, el miembro bInheritHandle de la estructura SECURITY_ATTRIBUTES debe ser TRUE.
dwFileAttributes
dwFileFlags
dwSecurityQosFlags
hTemplateFile
Ignorado.

En la tabla siguiente se muestran varios valores de dwDesiredAccess y lpFileName:

lpFileName dwDesiredAccess Resultado
"CON" GENERIC_READ Abre la consola para la entrada.
"CON" GENERIC_WRITE Abre la consola para la salida.
"CON" GENERIC_READ \| GENERIC_WRITE Hace que CreateFile3 produzca un error; GetLastError devuelve ERROR_FILE_NOT_FOUND.

Mailslots

Si CreateFile3 abre el final del cliente de un mailslot, la función devuelve INVALID_HANDLE_VALUE si el cliente mailslot intenta abrir un mailslot local antes de que el servidor mailslot lo haya creado con la función CreateMailSlot .

Para obtener más información, vea Mailslots.

Tubería

Si CreateFile3 abre el final del cliente de una canalización con nombre, la función usa cualquier instancia de la canalización con nombre que esté en estado de escucha. El proceso de apertura puede duplicar el identificador tantas veces como sea necesario, pero después de abrirlo, otro cliente no puede abrir la instancia de canalización con nombre. El acceso especificado cuando se abre una canalización debe ser compatible con el acceso especificado en el parámetro dwOpenMode de la función CreateNamedPipe .

Si la función CreateNamedPipe no se llamó correctamente en el servidor antes de esta operación, no existirá una canalización y CreateFile3 producirá un error con ERROR_FILE_NOT_FOUND.

Si hay al menos una instancia de canalización activa, pero no hay canalizaciones de escucha disponibles en el servidor, lo que significa que todas las instancias de canalización están conectadas actualmente, CreateFile3 produce un error con ERROR_PIPE_BUSY.

Para obtener más información, consulte Canalizaciones.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 11 24H2 [aplicaciones de escritorio | Aplicaciones para UWP]
servidor mínimo admitido Windows Server 2025 [aplicaciones de escritorio | Aplicaciones para UWP]
encabezado fileapi.h (incluya Windows.h)
Biblioteca Kernel32.lib
DLL de Kernel32.dll

Consulte también

CreateDirectory2

DeleteFile2

RemoveDirectory2