Files

50 lines
2.0 KiB
C

// Native userspace path and filesystem base services.
#pragma once
#include <stddef.h>
#include <stdint.h>
#include <ntlite/handle.h>
#include <ntlite/status.h>
#include <ntlite/string_view.h>
#include <ntlite/file_stat.h>
#include <ntlite/syscall.h>
#if defined(NTL_SYSCALL_STATIC)
#define NTL_PATH_API
#elif defined(NTL_SYSCALL_BUILD)
#define NTL_PATH_API __declspec(dllexport)
#else
#define NTL_PATH_API
#endif
// Native global paths are canonical resource paths such as /SystemRoot/system/init.exe.
// Relative paths are resolved against the process-local userspace CWD. Parent traversal is
// clamped at the CWD's owning RSSRV resource binding. Backslash is never accepted; repeated '/',
// '.', and '..' are normalized before RSSRV sees the path.
NTL_PATH_API KSTATUS NtlRealPath(SYS_STRING_VIEW path,
char* buffer,
size_t bufferSize,
size_t* requiredSizeOut);
NTL_PATH_API KSTATUS NtlSetCurrentDirectory(SYS_STRING_VIEW path);
NTL_PATH_API KSTATUS NtlGetCurrentDirectory(char* buffer,
size_t bufferSize,
size_t* requiredSizeOut);
NTL_PATH_API KSTATUS NtlOpenFile(SYS_STRING_VIEW path,
uint32_t access,
uint32_t disposition,
uint32_t flags,
SYS_HANDLE* handleOut);
NTL_PATH_API KSTATUS NtlOpenDir(SYS_STRING_VIEW path,
uint32_t access,
uint32_t flags,
SYS_HANDLE* handleOut);
NTL_PATH_API KSTATUS NtlStatPath(SYS_STRING_VIEW path, SYS_FILE_STAT* statOut);
NTL_PATH_API KSTATUS NtlDeleteFile(SYS_STRING_VIEW path);
NTL_PATH_API KSTATUS NtlRenameFile(SYS_STRING_VIEW oldPath, SYS_STRING_VIEW newPath);
NTL_PATH_API KSTATUS NtlCreateDirectory(SYS_STRING_VIEW path);
NTL_PATH_API KSTATUS NtlRemoveDirectory(SYS_STRING_VIEW path);
#undef NTL_PATH_API