Windows#
The Windows platform communicates with the Windows NVMe driver StorNVMe.sys via IOCTLs. It relies on the NVMe pass-through through IOCTLs to submit admin, IO and arbitrary user-defined commands.
System Configuration#
Windows is one of several supported platforms. xNVMe is likely to work on multiple versions of Windows, however Windows 10 or later is recommended as it has all the features which xNVMe utilizes. For tested versions, see the Toolchain section.
Device Identifiers#
Windows exposes NVMe devices as files using the following naming schemes:
\\.\PhysicalDrive{ctrlr_id}NVMe Controller device node
Backend Configs#
The Windows platform provides the following backend configs. Some of these use cross-platform implementations from the Common Backend Implementations (CBI). For these, links point to descriptions in the CBI section. For the Windows-specific interfaces, descriptions are available in the corresponding subsections.
Memory Allocators
windows, Use Windows memory allocator
Asynchronous Interfaces
iocp, Use Windows readfile/writefile with overlapped(iocp) for Asynchronous I/Oiocp_th, Use Windows readfile/writefile with thread based overlapped(iocp) for Asynchronous I/Oio_ring, Use Windows io_ring for Asynchronous I/Oemu, add link to CBIthrpool, add link to CBI
Synchronous Interfaces
nvme, Use Windows NVMe Driver ioctl() for synchronous I/Ofile, Use Windows File System APIs and readfile()/writefile() for I/O
Admin Interfaces
nvme, Use Windows NVMe Driver ioctl() for admin commandsblock, Use Windows NVMe Driver ioctl() for admin commandsfile, Use Windows File System APIs for admin commands
Device Interfaces
windows, Use Windows file/dev handles and enumerate NVMe devices