Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Cria ou abre um arquivo ou dispositivo de E/S. Os dispositivos de E/S mais usados são os seguintes: arquivo, fluxo de arquivos, diretório, disco físico, volume, buffer de console, unidade de fita, recurso de comunicação, emaillot e pipe. A função retorna um identificador que pode ser usado para acessar o arquivo ou dispositivo para vários tipos de E/S, dependendo do arquivo ou dispositivo e dos sinalizadores e atributos especificados.
Quando chamado de um aplicativo empacotado em área restrita, CreateFile3 é simplificado. Você pode abrir apenas arquivos ou diretórios dentro dos diretórios ApplicationData.LocalFolder ou Package.InstalledLocation . Você não pode abrir pipes nomeados ou emailslots ou criar arquivos criptografados (FILE_ATTRIBUTE_ENCRYPTED).
Observação
Nos referimos aqui à pasta local do aplicativo e ao local instalado do pacote, não a pacotes adicionais no grafo do pacote, como pacotes de recursos. O CreateFile3 não dá suporte à abertura de arquivos em pacotes adicionais no grafo do pacote. Para executar essa operação como uma operação transacionada, que resulta em um identificador que pode ser usado para E/S transacionada, use a função CreateFileTransacted .
Sintaxe
HANDLE CreateFile3(
LPCWSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
DWORD dwCreationDisposition,
LPCREATEFILE3_EXTENDED_PARAMETERS pCreateExParams
);
Parâmetros
lpFileName
O nome do arquivo ou dispositivo a ser criado ou aberto.
Para obter informações sobre nomes especiais de dispositivo, consulte Definindo um nome de dispositivo MS-DOS.
Para criar um fluxo de arquivos, especifique o nome do arquivo, um dois-pontos e, em seguida, o nome do fluxo. Para obter mais informações, consulte Fluxos de Arquivos.
Dica
Você pode aceitar para remover a limitação de MAX_PATH sem acrescentar "\?". Consulte a seção "Limitação máxima do comprimento do caminho" de Arquivos de Nomenclatura, Caminhos e Namespaces para obter detalhes.
dwDesiredAccess
O acesso solicitado ao arquivo ou dispositivo, que pode ser resumido como leitura, gravação, ambos ou nenhum zero.
Os valores mais usados são GENERIC_READ, GENERIC_WRITE ou ambos (GENERIC_READ | GENERIC_WRITE). Para obter mais informações, consulte Direitos genéricos de acesso, segurança de arquivos e direitos de acesso, constantes de direitos de acesso a arquivos e ACCESS_MASK.
Se esse parâmetro for zero, o aplicativo poderá consultar determinados metadados, como atributos de arquivo, diretório ou dispositivo sem acessar esse arquivo ou dispositivo, mesmo se GENERIC_READ acesso tivesse sido negado.
Não é possível solicitar um modo de acesso que entre em conflito com o modo de compartilhamento especificado pelo parâmetro dwShareMode em uma solicitação aberta que já tenha um identificador aberto.
Para obter mais informações, consulte a seção Comentários deste tópico e Criando e abrindo arquivos.
dwShareMode
O modo de compartilhamento solicitado do arquivo ou dispositivo, que pode ser lido, gravar, ambos, excluir, todos eles ou nenhum (consulte a tabela a seguir). As solicitações de acesso a atributos ou atributos estendidos não são afetadas por esse sinalizador.
Se esse parâmetro for zero e CreateFile3 for bem-sucedido, o arquivo ou dispositivo não poderá ser compartilhado e não poderá ser aberto novamente até que o identificador para o arquivo ou dispositivo seja fechado. Para obter mais informações, consulte a seção Comentários.
Não é possível solicitar um modo de compartilhamento que entre em conflito com o modo de acesso especificado em uma solicitação existente que tenha um identificador aberto. CreateFile3 falharia e a função GetLastError retornaria ERROR_SHARING_VIOLATION.
Para habilitar um processo para compartilhar um arquivo ou dispositivo enquanto outro processo tiver o arquivo ou dispositivo aberto, use uma combinação compatível de um ou mais dos valores a seguir. Para obter mais informações sobre combinações válidas desse parâmetro com o parâmetro dwDesiredAccess , consulte Criando e abrindo arquivos.
Observação
As opções de compartilhamento para cada identificador aberto permanecem em vigor até que esse identificador seja fechado, independentemente do contexto do processo.
| Valor | Significado |
|---|---|
00x00000000 |
Impede que outros processos abram um arquivo ou dispositivo se solicitarem acesso de exclusão, leitura ou gravação. O acesso exclusivo a um arquivo ou diretório só será concedido se o aplicativo tiver acesso de gravação ao arquivo. |
FILE_SHARE_DELETE0x00000004 |
Habilita operações abertas subsequentes em um arquivo ou dispositivo para solicitar acesso de exclusão. Caso contrário, outros processos não poderão abrir o arquivo ou o dispositivo se solicitarem o acesso de exclusão. Se esse sinalizador não for especificado, mas o arquivo ou dispositivo tiver sido aberto para exclusão de acesso, a função falhará. Nota: Excluir o acesso permite operações de exclusão e renomeação. |
FILE_SHARE_READ0x00000001 |
Permite que as operações abertas subsequentes em um arquivo ou dispositivo solicitem acesso de leitura. Caso contrário, outros processos não poderão abrir o arquivo ou o dispositivo se solicitarem acesso de leitura. Se esse sinalizador não for especificado, mas o arquivo ou dispositivo tiver sido aberto para acesso de leitura, a função falhará. Se um arquivo ou diretório estiver sendo aberto e esse sinalizador não for especificado e o chamador não tiver acesso de gravação ao arquivo ou diretório, a função falhará. |
FILE_SHARE_WRITE0x00000002 |
Habilita operações abertas subsequentes em um arquivo ou dispositivo para solicitar acesso de gravação. Caso contrário, outros processos não poderão abrir o arquivo ou o dispositivo se solicitarem acesso de gravação. Se esse sinalizador não for especificado, mas o arquivo ou dispositivo tiver sido aberto para acesso de gravação ou tiver um mapeamento de arquivo com acesso de gravação, a função falhará. |
dwCreationDisposition
Uma ação a ser tomada em um arquivo ou dispositivo que existe ou não existe.
Para dispositivos que não sejam arquivos, esse parâmetro geralmente é definido como OPEN_EXISTING.
Para obter mais informações, consulte a seção Comentários.
Esse parâmetro deve ser um dos seguintes valores, que não podem ser combinados:
| Valor | Significado |
|---|---|
CREATE_ALWAYS2 |
Sempre cria um arquivo novo. Se o arquivo especificado existir e for gravável, a função truncará o arquivo, a função será bem-sucedida e o código de último erro será definido como ERROR_ALREADY_EXISTS (183). Se o arquivo especificado não existir e for um caminho válido, um novo arquivo será criado, a função será bem-sucedida e o código de último erro será definido como zero. Para obter mais informações, consulte a seção Comentários deste tópico. |
CREATE_NEW1 |
Cria um novo arquivo, somente se ele ainda não existir. Se o arquivo especificado existir, a função falhará e o código de último erro será definido como ERROR_FILE_EXISTS (80). Se o arquivo especificado não existir e for um caminho válido para um local gravável, um novo arquivo será criado. |
OPEN_ALWAYS4 |
Sempre abre um arquivo. Se o arquivo especificado existir, a função terá êxito e o código de último erro será definido como ERROR_ALREADY_EXISTS (183). Se o arquivo especificado não existir e for um caminho válido para um local gravável, a função criará um arquivo e o código de último erro será definido como zero. |
OPEN_EXISTING3 |
Abre um arquivo ou dispositivo, somente se ele existir. Se o arquivo ou dispositivo especificado não existir, a função falhará e o código do último erro será definido como ERROR_FILE_NOT_FOUND (2). Para obter mais informações sobre dispositivos, consulte a seção Comentários . |
TRUNCATE_EXISTING5 |
Abre um arquivo e trunca-o para que seu tamanho seja zero bytes, somente se ele existir. Se o arquivo especificado não existir, a função falhará e o código de último erro será definido como ERROR_FILE_NOT_FOUND (2). O processo de chamada deve abrir o arquivo com o GENERIC_WRITE bit definido como parte do parâmetro dwDesiredAccess . |
pCreateExParams
Ponteiro para uma estrutura de CREATEFILE3_EXTENDED_PARAMETERS opcional.
Valor de retorno
Se a função for bem-sucedida, o valor retornado será um identificador aberto para o arquivo, dispositivo, pipe nomeado ou slot de email especificado.
Se a função falhar, o valor retornado será INVALID_HANDLE_VALUE. Para obter informações de erro estendidas, chame GetLastError. Os possíveis erros incluem o seguinte:
| Código de retorno | Descrição |
|---|---|
| ERROR_PATH_REDIRECTED | lpFileName foi redirecionado por pontos de nova análise e/ou links simbólicos. |
Observações
CreateFile3 se comporta exatamente da mesma maneira que CreateFile2 com uma exceção; as operações poderão falhar se lpFileName for redirecionado por meio de um ponto de nova análise ou link simbólico. Os redirecionamentos podem ser não permitidos adicionando o sinalizador FILE_FLAG_DISALLOW_PATH_REDIRECTS ao dwFileFlags.
Para compilar um aplicativo que usa a função CreateFile3 , defina a macro _WIN32_WINNT como 0x0602 ou posterior. Para obter mais informações, consulte Usando os cabeçalhos do Windows.
O CreateFile3 dá suporte à interação de arquivos e à maioria dos outros tipos de dispositivos e mecanismos de E/S disponíveis para desenvolvedores do Windows. Esta seção tenta abordar os diversos problemas que os desenvolvedores podem enfrentar ao usar CreateFile3 em contextos diferentes e com diferentes tipos de E/S. O texto tenta usar o arquivo de palavra somente ao se referir especificamente aos dados armazenados em um arquivo real em um sistema de arquivos. No entanto, alguns usos de arquivo podem estar se referindo de forma mais geral a um objeto de E/S que dá suporte a mecanismos semelhantes a arquivos. Esse uso liberal do arquivo de termo é particularmente predominante em nomes constantes e nomes de parâmetros devido às razões históricas mencionadas anteriormente.
Quando um aplicativo for concluído usando o identificador de objeto retornado por CreateFile3, use a função CloseHandle para fechar o identificador. Isso não só libera recursos do sistema, mas pode ter maior influência em itens como compartilhar o arquivo ou dispositivo e confirmar dados em disco. As especificações são indicadas neste tópico conforme apropriado.
Alguns sistemas de arquivos, como o sistema de arquivos NTFS, dão suporte à compactação ou criptografia para arquivos e diretórios individuais. Em volumes que têm um sistema de arquivos montado com esse suporte, um novo arquivo herda os atributos de compactação e criptografia de seu diretório.
Você não pode usar CreateFile3 para controlar compactação, descompactação ou descriptografia em um arquivo ou diretório. Para obter mais informações, consulte Criando e abrindo arquivos, compactação e descompactação de arquivos e criptografia de arquivo.
Se o membro lpSecurityAttributes da estrutura de CREATEFILE3_EXTENDED_PARAMETERS passada no parâmetro pCreateExParams for NULL, o identificador retornado por CreateFile3 não poderá ser herdado por nenhum processo filho que seu aplicativo possa criar. As seguintes informações sobre esse membro também se aplicam:
- Se a variável de membro bInheritHandle não
FALSEfor , que é qualquer valor diferente de zero, o identificador poderá ser herdado. Portanto, é fundamental que esse membro da estrutura seja inicializadoFALSEcorretamente se você não pretende que o identificador seja herdável. - As ACL (listas de controle de acesso) no descritor de segurança padrão para um arquivo ou diretório são herdadas do diretório pai.
- O sistema de arquivos de destino deve dar suporte à segurança em arquivos e diretórios para que o membro lpSecurityDescriptor tenha um efeito sobre eles, o que pode ser determinado usando GetVolumeInformation.
No Windows 8 e no Windows Server 2012, essa função é compatível com as seguintes tecnologias:
| Tecnologia | Suportado |
|---|---|
| Protocolo SMB (Bloco de Mensagens do Servidor) 3.0 | Yes |
| TFO (Failover Transparente) do SMB 3.0 | Não |
| SMB 3.0 com Compartilhamentos de Arquivos de Expansão (SO) | Não |
| Sistema de Arquivos de Volume Compartilhado de Cluster (CsvFS) | Yes |
| ReFS (Sistema de Arquivos Resiliente) | Yes |
Comportamento simbólico de vínculo
Se a chamada para essa função criar um arquivo, não haverá nenhuma alteração no comportamento. Além disso, considere as seguintes informações sobre FILE_FLAG_OPEN_REPARSE_POINT sinalizador para o membro dwFileFlags da estrutura CREATEFILE3_EXTENDED_PARAMETERS passada no parâmetro pCreateExParams :
- Se FILE_FLAG_OPEN_REPARSE_POINT for especificado:
- Se um arquivo existente for aberto e for um link simbólico, o identificador retornado será um identificador para o link simbólico.
- Se TRUNCATE_EXISTING ou FILE_FLAG_DELETE_ON_CLOSE forem especificados, o arquivo afetado será um link simbólico.
- Se FILE_FLAG_OPEN_REPARSE_POINT não for especificado:
- Se um arquivo existente for aberto e for um link simbólico, o identificador retornado será um identificador para o destino.
- Se CREATE_ALWAYS, TRUNCATE_EXISTINGou FILE_FLAG_DELETE_ON_CLOSE forem especificados, o arquivo afetado será o destino.
Arquivos
Se você renomear ou excluir um arquivo e restaurá-lo pouco depois, o sistema pesquisará no cache informações de arquivo para restaurar. As informações armazenadas em cache incluem seu par de nomes curto/longo e tempo de criação.
Se você chamar CreateFile3 em um arquivo que está pendente de exclusão como resultado de uma chamada anterior para DeleteFile ou DeleteFile2, a função falhará. O sistema operacional atrasa a exclusão de arquivos até que todos os identificadores do arquivo sejam fechados. GetLastError retorna ERROR_ACCESS_DENIED.
O parâmetro dwDesiredAccess pode ser zero, permitindo que o aplicativo consulte atributos de arquivo sem acessar o arquivo se o aplicativo estiver em execução com configurações de segurança adequadas. Isso é útil para testar a existência de um arquivo sem abri-lo para acesso de leitura e/ou gravação ou para obter outras estatísticas sobre o arquivo ou diretório. Consulte Obter e definir informações de arquivo e GetFileInformationByHandle.
Quando um aplicativo cria um arquivo em uma rede, é melhor usar GENERIC_READ | GENERIC_WRITE para dwDesiredAccess do que usar GENERIC_WRITE sozinho. O código resultante é mais rápido, pois o redirecionador pode usar o gerenciador de cache e enviar menos SMBs com mais dados. Essa combinação também evita um problema em que gravar em um arquivo em uma rede pode ocasionalmente retornar ERROR_ACCESS_DENIED.
Para obter mais informações, consulte Criando e abrindo arquivos.
Fluxos de arquivos
Em sistemas de arquivos NTFS, você pode usar CreateFile3 para criar fluxos separados em um arquivo. Para obter mais informações, consulte Fluxos de Arquivos.
Diretórios
Um aplicativo não pode criar um diretório usando CreateFile3, portanto, somente o valor OPEN_EXISTING é válido para dwCreationDisposition para esse caso de uso. Para criar um diretório, o aplicativo deve chamar CreateDirectory, CreateDirectoryEx ou CreateDirectory2.
Para abrir um diretório usando CreateFile3, especifique o sinalizador FILE_FLAG_BACKUP_SEMANTICS como parte do membro dwFileFlags da estrutura CREATEFILE3_EXTENDED_PARAMETERS passada no parâmetro pCreateExParams . As verificações de segurança apropriadas ainda se aplicam quando esse sinalizador é usado sem privilégios de SE_BACKUP_NAME e SE_RESTORE_NAME .
Ao usar CreateFile3 para abrir um diretório durante a desfragmentação de um volume de sistema de arquivos FAT ou FAT32, não especifique o MAXIMUM_ALLOWED direito de acesso. O acesso ao diretório será negado se isso for feito. Em vez disso , especifique o acesso GENERIC_READ direito.
Para obter mais informações, consulte Sobre o Gerenciamento de Diretórios.
Discos físicos e volumes
O acesso direto ao disco ou a um volume é restrito.
Você pode usar a função CreateFile3 para abrir uma unidade de disco física ou um volume, que retorna um identificador DASD (dispositivo de armazenamento de acesso direto) que pode ser usado com a função DeviceIoControl . Isso permite que você acesse o disco ou o volume diretamente, por exemplo, metadados de disco como a tabela de partição. No entanto, esse tipo de acesso também expõe a unidade de disco ou o volume a uma possível perda de dados, pois uma gravação incorreta em um disco usando esse mecanismo pode tornar seu conteúdo inacessível ao sistema operacional. Para garantir a integridade dos dados, familiarize-se com DeviceIoControl e como outras APIs se comportam de forma diferente com um identificador de acesso direto em vez de um identificador do sistema de arquivos.
Os seguintes requisitos devem ser atendidos para que essa chamada seja bem-sucedida:
- O chamador deve ter privilégios administrativos. Para obter mais informações, consulte Em execução com privilégios especiais.
- O parâmetro dwCreationDisposition deve ter o sinalizador OPEN_EXISTING .
- Ao abrir um volume ou disquete, o parâmetro dwShareMode deve ter o sinalizador FILE_SHARE_WRITE .
Observação
O parâmetro dwDesiredAccess pode ser zero, permitindo que o aplicativo consulte atributos de dispositivo sem acessar um dispositivo. Isso é útil para um aplicativo determinar o tamanho de uma unidade de disco disquete e os formatos aos quais ele dá suporte sem a necessidade de um disquete em uma unidade, por exemplo. Ele também pode ser usado para ler estatísticas sem exigir permissão de leitura/gravação de dados de nível superior.
Ao abrir uma unidade física x:, a cadeia de caracteres lpFileName deve ser a seguinte forma: "\.\PhysicalDriveX".
Os números de disco rígido começam em zero. A tabela a seguir mostra alguns exemplos de cadeias de caracteres de unidade física.
| fio | Significado |
|---|---|
| "\.\PhysicalDrive0" | Abre a primeira unidade física. |
| "\.\PhysicalDrive2" | Abre a terceira unidade física. |
Para obter o identificador de unidade física para um volume, abra um identificador para o volume e chame a função DeviceIoControl com IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS. Esse código de controle retorna o número do disco e o deslocamento para cada uma ou mais extensões do volume; um volume pode abranger vários discos físicos.
Para obter um exemplo de como abrir uma unidade física, consulte Chamando DeviceIoControl.
Ao abrir um volume ou uma unidade de mídia removível (por exemplo, uma unidade de disco disquete ou uma unidade de memória flash), a cadeia de caracteres lpFileName deve ser a seguinte forma: "\\.\X:". Não use uma barra invertida à direita (\), que indica o diretório raiz de uma unidade.
A tabela a seguir mostra alguns exemplos de cadeias de caracteres de unidade:
| fio | Significado |
|---|---|
| "\.\A:" | Abre a unidade de disco disquete A. |
| "\.\C:" | Abre o volume C: . |
| "\.\C:" | Abre o sistema de arquivos do volume C:. |
Você também pode abrir um volume referindo-se ao nome do volume. Para obter mais informações, consulte Nomenclatura de um volume.
Um volume contém um ou mais sistemas de arquivos montados. Os identificadores de volume podem ser abertos como não armazenados a critério do sistema de arquivos específico, mesmo quando a opção não em cache não é especificada em CreateFile3. Você deve assumir que todos os sistemas de arquivos da Microsoft abrem identificadores de volume como não armazenados em cache. As restrições de E/S não em cache para arquivos também se aplicam a volumes.
Um sistema de arquivos pode ou não exigir alinhamento de buffer mesmo que os dados não sejam armazenados em cache. No entanto, se a opção não armazenada em cache for especificada ao abrir um volume, o alinhamento do buffer será imposto independentemente do sistema de arquivos no volume. É recomendável em todos os sistemas de arquivos que você abra identificadores de volume como não armazenados em cache e siga as restrições de E/S não localizadas.
Observação
Para ler ou gravar nos últimos setores do volume, você deve chamar DeviceIoControl e especificar FSCTL_ALLOW_EXTENDED_DASD_IO. Isso sinaliza que o driver do sistema de arquivos não executará nenhuma verificação de limite de E/S em chamadas de leitura ou gravação de partição. Em vez disso, as verificações de limite são executadas pelo driver do dispositivo.
Dispositivo de alteração
Os códigos de controle IOCTL_CHANGER_* para DeviceIoControl aceitam um identificador para um dispositivo de alteração. Para abrir um dispositivo de alteração, use um nome de arquivo do seguinte formulário: "\.\Changerx" em que x é um número que indica qual dispositivo abrir, começando com zero. Para abrir o dispositivo de alteração zero em um aplicativo escrito em C ou C++, use o seguinte nome de arquivo: "\\.\Changer0".
Unidades de fita
Você pode abrir unidades de fita usando um nome de arquivo do seguinte formulário: "\.\TAPEx" em que x é um número que indica qual unidade abrir, começando com a unidade de fita zero. Para abrir a unidade de fita zero em um aplicativo escrito em C ou C++, use o seguinte nome de arquivo: "\\.\TAPE0".
Para obter mais informações, consulte Backup.
Recursos de comunicação
A função CreateFile3 pode criar um identificador para um recurso de comunicação, como a porta serial COM1. Para recursos de comunicação, o parâmetro dwCreationDisposition deve ser OPEN_EXISTING, o parâmetro dwShareMode deve ser zero (acesso exclusivo) e o parâmetro hTemplateFile deve ser NULL. O acesso de leitura, gravação ou leitura/gravação pode ser especificado e o identificador pode ser aberto para E/S sobreposta.
Para especificar um número de porta COM maior que 9, use a seguinte sintaxe: "\.\COM10". Essa sintaxe funciona para todos os números de porta e hardware que permitem que os números da porta COM sejam especificados.
Para obter mais informações sobre comunicações, consulte Comunicações.
Consoles
A função CreateFile3 pode criar um identificador para a entrada do console (CONIN$). Se o processo tiver um identificador aberto como resultado de herança ou duplicação, ele também poderá criar um identificador para o buffer de tela ativo (CONOUT$). O processo de chamada deve ser anexado a um console herdado ou a um alocado pela função AllocConsole .
Para identificadores de console, defina os parâmetros CreateFile3 da seguinte maneira:
| Parâmetros | Valor |
|---|---|
| lpFileName | Use o valor CONIN$ para especificar a entrada do console. Use o valor CONOUT$ para especificar a saída do console. CONIN$ obtém um identificador para o buffer de entrada do console, mesmo que a função SetStdHandle redirecione o identificador de entrada padrão. Para obter o identificador de entrada padrão, use a função GetStdHandle . CONOUT$ obtém um identificador para o buffer de tela ativo, mesmo que SetStdHandle redirecione o identificador de saída padrão. Para obter o identificador de saída padrão, use GetStdHandle. |
| dwDesiredAccess |
GENERIC_READ \| GENERIC_WRITE é preferencial, mas qualquer um pode limitar o acesso. |
| dwShareMode | Ao abrir o CONIN$, especifique FILE_SHARE_READ. Ao abrir CONOUT$, especifique FILE_SHARE_WRITE. Se o processo de chamada herdar o console ou se um processo filho deve ser capaz de acessar o console, esse parâmetro deve ser FILE_SHARE_READ \| FILE_SHARE_WRITE. |
| dwCreationDisposition | Você deve especificar OPEN_EXISTING ao usar CreateFile3 para abrir o console. |
Defina os membros da estrutura de CREATEFILE3_EXTENDED_PARAMETERS passada no parâmetro pCreateExParams da seguinte maneira:
| Membros | Valor |
|---|---|
| lpSecurityAttributes | Se você quiser que o console seja herdado, o membro bInheritHandle da estrutura SECURITY_ATTRIBUTES deverá ser TRUE. |
|
dwFileAttributes dwFileFlags dwSecurityQosFlags hTemplateFile |
Ignorado. |
A tabela a seguir mostra várias configurações de dwDesiredAccess e lpFileName:
| lpFileName | dwDesiredAccess | Resultado |
|---|---|---|
| "CON" | GENERIC_READ | Abre o console para entrada. |
| "CON" | GENERIC_WRITE | Abre o console para saída. |
| "CON" | GENERIC_READ \| GENERIC_WRITE |
Faz com que CreateFile3 falhe; GetLastError retorna ERROR_FILE_NOT_FOUND. |
Emailslots
Se CreateFile3 abrir o fim do cliente de um emaillot, a função retornará INVALID_HANDLE_VALUE se o cliente do maillot tentar abrir um emaillot local antes que o servidor maillot o tenha criado com a função CreateMailSlot .
Para obter mais informações, consulte Emailslots.
Tubos
Se CreateFile3 abrir a extremidade do cliente de um pipe nomeado, a função usará qualquer instância do pipe nomeado que esteja no estado de escuta. O processo de abertura pode duplicar o identificador quantas vezes forem necessários, mas depois que ele for aberto, a instância de pipe nomeada não poderá ser aberta por outro cliente. O acesso especificado quando um pipe é aberto deve ser compatível com o acesso especificado no parâmetro dwOpenMode da função CreateNamedPipe .
Se a função CreateNamedPipe não tiver sido chamada com êxito no servidor antes dessa operação, um pipe não existirá e CreateFile3 falhará com ERROR_FILE_NOT_FOUND.
Se houver pelo menos uma instância de pipe ativa, mas não houver pipes de ouvinte disponíveis no servidor, o que significa que todas as instâncias de pipe estão conectadas no momento, CreateFile3 falha com ERROR_PIPE_BUSY.
Para obter mais informações, consulte Pipes.
Requisitos
| Requisito | Valor |
|---|---|
| de cliente com suporte mínimo | Windows 11 24H2 [aplicativos da área de trabalho | Aplicativos UWP] |
| servidor com suporte mínimo | Windows Server 2025 [aplicativos da área de trabalho | Aplicativos UWP] |
| cabeçalho | fileapi.h (inclua Windows.h) |
| Biblioteca | Kernel32.lib |
| de DLL | Kernel32.dll |