Windows System Calls

System calls are the fundamental interface between user-mode applications and the Windows kernel. They allow applications to request services from the operating system, such as creating processes, accessing files, or managing memory.

What are System Calls?

In Windows, system calls are typically implemented through Native NT API functions. While many developers interact with higher-level Win32 API functions (like those in kernel32.dll or user32.dll), these functions often serve as wrappers around the underlying Native NT API. Direct use of the Native NT API can offer more control and access to lower-level features but comes with increased complexity and less portability.

Key System Call Categories

System calls can be broadly categorized based on the services they provide:

Invoking System Calls

Directly calling Native NT API functions from user mode is possible but discouraged for general application development due to the lack of official support and potential for changes between Windows versions. The standard approach is to use Win32 API functions, which are designed for stability and backward compatibility.

However, understanding the underlying Native NT API is crucial for:

For educational purposes, here's a conceptual representation of how one might invoke a system call (this is not executable code and abstracts away the complexities of system call dispatch):

// Conceptual example - not actual C++
NTSTATUS status = NtCreateFile(
    &fileHandle,
    GENERIC_READ | GENERIC_WRITE,
    &objectAttributes,
    &ioStatusBlock,
    NULL, // Allocation size
    FILE_ATTRIBUTE_NORMAL,
    FILE_SHARE_READ | FILE_SHARE_WRITE,
    FILE_OPEN_IF,
    0, // Create options
    NULL, // Security context
    0 // Extended attributes
);

if (NT_SUCCESS(status)) {
    // File created or opened successfully
} else {
    // Handle error
}

Notable Native NT API Functions

Here's a small selection of commonly referenced Native NT API functions:

Function Name Primary Purpose Related Win32 API
NtCreateFile Creates or opens a file or device. CreateFile
NtAllocateVirtualMemory Allocates memory in the address space of a process. VirtualAlloc
NtFreeVirtualMemory Frees memory previously allocated by NtAllocateVirtualMemory. VirtualFree
NtCreateProcessEx Creates a new process. CreateProcess
NtQuerySystemInformation Retrieves various system information. Many, e.g., GetSystemInfo, EnumProcesses
NtClose Closes an open handle to an object. CloseHandle

Further Reading

For in-depth information on specific system calls, their parameters, and return values, refer to official Microsoft documentation and resources dedicated to Windows internals. Understanding the undocumented Native NT API requires careful research and experimentation.