BypassIO, aksdf.sys and my X-Rite spectrophotometer
• 6 min read
A few months ago, I was nosing around the Windows Game Bar and came across a section in its settings named ‘Gaming features’. Against various local drives, it had a message saying ‘BypassIO not supported due to driver: aksdf’:

That didn’t sound like a good thing. But what was aksdf? Searching for ‘aksdf’
in Autoruns
found aksdf.sys
at C:\Windows\System32\drivers
. Inspecting the file’s
properties showed that it had a file description of ‘Safenet Inc. Sentinel Data
Filter Driver’, and was signed by a company named Gemalto, Inc.:
A little more digging revealed that the driver was originally developed by a company called Aladdin Knowledge Systems (presumably, the ‘aks’ in the driver filename is an abbreviation of this). Aladdin Knowledge Systems was acquired by Vector Capital who then folded Aladdin into another of their companies, SafeNet. SafeNet was later acquired by Gemalto.
Gemalto was then acquired by Thales Group, and the driver is now part of the Sentinel License Development Kit (LDK). Back in the Aladdin days, the driver was part of a product line called Hardware Against Software Piracy (HASP)1. Part of that product line let companies protect software against piracy by requiring a physical dongle to be connected to the PC while using the software. (There were software-only solutions as well, however.)
Okay, but why was this driver on my PC? I didn’t have any obvious clues, but (and I forget how) I managed to track it down to X-Rite i1Profiler, the main software for my X-Rite spectrophotometer. Apparently, at some point in time, you could buy a licence for iProfiler in the form of a USB dongle. This was aimed at people with older (or perhaps more basic) X-Rite products that didn’t come with i1Profiler when purchased (but instead some other worse and presumably older software). The X-Rite support site once contained lots of references to the Sentinel drivers, but seemingly most of the relevant pages have been hidden from public view (the Wayback Machine has some of them, though).
Annoyingly, uninstalling i1Profiler doesn’t remove the Sentinel drivers from your PC.2 It can be done properly, though, using the installer for the drivers.
The installer for the drivers is a file named haspdinst.exe
. One way of
getting it is to extract the i1Profiler installer using
Inno Setup Unpacker. But, it’s
easier just to
download the latest version of the Sentinel LDK installer from Thales’s support site.
Running haspdinst.exe -info
shows a dialogue box containing a list of the
installed Sentinel drivers and their versions, and a list of the driver versions
included in the installer3:

The drivers can be fully removed by running:
haspdinst.exe -kp -purge
(The available arguments can be found by running haspdinst.exe -help
. They’re
also
covered in the online documentation.
Oddly, the -purge
argument is not mentioned in either of those, but it
features in
this support article about a legacy hardlock.sys driver,
for example.)
Once that command has finished removing the drivers, a dialogue box saying
‘Operation successfully completed’ will appear. You can run
haspdinst.exe -info
again to double-check that the drivers are gone:

And, of course, you can look at Gaming features again in the Game Bar settings to check if the BypassIO message has changed:

Even with the driver removed, X-Rite i1Profiler seems to work fine for me. (Of
course, that’s far less likely if your licence for i1Profiler is on a dedicated
USB dongle. If that’s the case for you, you may have luck reinstalling the
latest Sentinel drivers, as that will leave out aksdf.sys
and other legacy
drivers if they were previously removed. That will only work if i1Profiler can
recognise dongles without the legacy drivers, of course…)
Aside – what is going on with my F:\ drive?
You may have noticed that the Game Bar screenshots above say that BypassIO is
unavailable on my F: drive due to the ntfs
driver. That sounds a bit weird,
doesn’t it?
Luckily, the fsutil
command-line tool can be used to get a bit more detail
about why BypassIO is unsupported.
For a drive affected by aksdf.sys
, it reports:
> fsutil bypassio state C:\
BypassIo on "C:\" is not currently supported
Status: 506 (At least one minifilter does not support bypass IO)
Driver: aksdf
Reason: The specified minifilter does not support bypass IO.
Storage Type: NVMe
Storage Driver: Not BypassIo Compatible
And for my F: drive, it reports:
> fsutil bypassio state F:\
> BypassIo on "F:\" is not currently supported
Status: 335 (The specified operation is not supported on a compressed file)
Driver: ntfs.sys
Reason: Compressed file not supported
Storage Type: NVMe
Storage Driver: BypassIo compatible
The problem is that I had at some point enabled compression on my F: drive.
fsutil
also allows you to query specific paths, though. If I pass it the path
of an uncompressed directory on my F: drive, it reports that BypassIO is
supported:
> fsutil bypassio state F:\test\
> BypassIo on "F:\test\" is currently supported
Storage Type: NVMe
Storage Driver: BypassIo compatible
So, I can probably keep my F: drive compressed if I want and just turn off compression on directories where BypassIO might be needed (such as directories containing game files).
Aside – what is BypassIO?
The documentation for BypassIO says:
BypassIO is an optimized I/O path for reading from files. The goal of this path is to reduce the CPU overhead of doing reads, which helps to meet the I/O demands of loading and running next-generation games on Windows. BypassIO is a part of the infrastructure to support DirectStorage on Windows, and is available starting in Windows 11.
It’s important that storage drivers implement support for BypassIO, and that you keep BypassIO enabled as much as possible. Without storage stack support, game performance is degraded, resulting in a poor gaming experience for end users.
There will be broader application uses beyond gaming in future Windows releases.
That quote mentions DirectStorage. The Windows documentation for DirectStorage4 (peculiarly, for Microsoft, on GitHub only) has an explanation of what DirectStorage is:
DirectStorage is a feature intended to allow games to make full use of high-speed storage (such as NVMe SSDs) that can can [sic] deliver multiple gigabytes a second of small (eg 64kb [sic]) data reads with minimal CPU overhead. Although it is possible to saturate a drive using traditional ReadFile-based IO the CPU overhead of increases non-linearly as the size of individual reads decreases. Additionally, most games choose to store their assets compressed on disk in order to reduce the install footprint, with these assets being decompressed on the fly as load time. The CPU overhead of this becomes increasingly expensive as bandwidth increases.
Various articles online suggest that take-up of DirectStorage has been low, however, so I’m not at all clear how much BypassIO compatibility really matters.
Footnotes
-
If you’re curious about the history, old web pages about HASP are on the Wayback Machine ↩
-
Although this is perhaps not easy to do automatically, as other software could be using the drivers. Still, an entry for the drivers in the Installed apps list could be added so they can at least be uninstalled manually. ↩
-
Note that this newer version of the driver installer doesn’t list an older driver named
hardlock.sys
in this dialogue box, but the-purge
command correctly removes that driver as well. ↩ -
As opposed to the separate Xbox DirectStorage documentation ↩