Voltar à lista
Windows Win32Arquivos & E/Skernel32.dll

CreateFileW

Abre ou cria um arquivo, dispositivo, pipe ou outro objeto do sistema, retornando um HANDLE.

Descrição

A função mais versátil da Win32 API para obter um handle: usada para arquivos comuns, mas também para abrir dispositivos físicos (ex.: \\.\PhysicalDrive0), pipes nomeados, portas de comunicação e mais, dependendo do caminho fornecido.

Header: fileapi.hDLL: kernel32.dllNative API: NtCreateFile

Nota

Equivalente aproximado ao `open`/`openat` do Linux — ver mapeamento de equivalências.

Assinatura

HANDLE CreateFileW(
    LPCWSTR lpFileName,
    DWORD dwDesiredAccess,
    DWORD dwShareMode,
    LPSECURITY_ATTRIBUTES lpSecurityAttributes,
    DWORD dwCreationDisposition,
    DWORD dwFlagsAndAttributes,
    HANDLE hTemplateFile
);

Parâmetros

ParâmetroTipoDescrição
lpFileNameLPCWSTRCaminho do arquivo/dispositivo a abrir.
dwDesiredAccessDWORDGENERIC_READ, GENERIC_WRITE, ou 0 para apenas consultar metadados.
dwShareModeDWORDFILE_SHARE_READ, FILE_SHARE_WRITE, FILE_SHARE_DELETE — o que outros handles podem fazer concorrentemente.
lpSecurityAttributesLPSECURITY_ATTRIBUTESAtributos de segurança e herança do handle, ou NULL para os padrões.
dwCreationDispositionDWORDCREATE_NEW, CREATE_ALWAYS, OPEN_EXISTING, OPEN_ALWAYS, TRUNCATE_EXISTING.
dwFlagsAndAttributesDWORDFILE_ATTRIBUTE_NORMAL, FILE_FLAG_OVERLAPPED, FILE_FLAG_NO_BUFFERING, etc.
hTemplateFileHANDLEHandle de um arquivo template cujos atributos são copiados, ou NULL.

Valor de retorno

Um HANDLE válido em sucesso; INVALID_HANDLE_VALUE em erro (consulte GetLastError).

Códigos de erro (GetLastError)

ERROR_FILE_NOT_FOUND(2)
O sistema não conseguiu encontrar o arquivo especificado.
ERROR_PATH_NOT_FOUND(3)
O sistema não conseguiu encontrar o caminho especificado.
ERROR_ACCESS_DENIED(5)
Acesso negado.
ERROR_SHARING_VIOLATION(32)
O processo não pode acessar o arquivo porque está em uso por outro processo.
ERROR_ALREADY_EXISTS(183)
Não é possível criar um arquivo já existente.

Relacionadas