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, each in a directory of its own under lib/backend/. For
these, links point to the cross-platform 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, see Async. I/O via emuthrpool, see Async. I/O via thrpool
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