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: NtCreateFileNota
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âmetro | Tipo | Descrição |
|---|---|---|
| lpFileName | LPCWSTR | Caminho do arquivo/dispositivo a abrir. |
| dwDesiredAccess | DWORD | GENERIC_READ, GENERIC_WRITE, ou 0 para apenas consultar metadados. |
| dwShareMode | DWORD | FILE_SHARE_READ, FILE_SHARE_WRITE, FILE_SHARE_DELETE — o que outros handles podem fazer concorrentemente. |
| lpSecurityAttributes | LPSECURITY_ATTRIBUTES | Atributos de segurança e herança do handle, ou NULL para os padrões. |
| dwCreationDisposition | DWORD | CREATE_NEW, CREATE_ALWAYS, OPEN_EXISTING, OPEN_ALWAYS, TRUNCATE_EXISTING. |
| dwFlagsAndAttributes | DWORD | FILE_ATTRIBUTE_NORMAL, FILE_FLAG_OVERLAPPED, FILE_FLAG_NO_BUFFERING, etc. |
| hTemplateFile | HANDLE | Handle 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
Equivalente em Linux x86_64