Hi all,
I'm running into an issue on Windows 11, build 26100.1742. This problem did not occur on an older build (22000.194).
I'm trying to load a NetAdapterCx-based network driver (rtcx21.sys, Realtek 2.5G) as BOOT_START (Start = 0), but I've hit a roadblock while trying to resolve its dependencies.
Here are the steps I've taken and the debugging results:
Step 1: Set rtcx21.sys to BOOT_START
-
I changed the
Starttype forrtcx21.systo0. -
On boot,
rtcx21failed to initialize with0xC000003A (STATUS_OBJECT_PATH_NOT_FOUND). -
The
FxStubBindClasseslog confirmed it failed to bind to theNetAdapterCxclass.
Step 2: Set NetAdapterCx.sys to BOOT_START
-
I changed the
Starttype forNetAdapterCx.systo0. -
Now,
NetAdapterCxitself fails with0xC000003Aor0xC0000034. -
Debugging showed a call stack from
NetAdapterCx!DriverEntry-> ... ->NDIS!LoadDriver, which was trying to dynamically loadExecutionContext.sys. This failed, presumably because the file system isn't available at theBOOT_STARTphase.
Step 3: Set ExecutionContext.sys to BOOT_START
-
I also changed the
Starttype forExecutionContext.systo0. -
Now,
ExecutionContext.sysfails to load; itsDriverEntryreturns0xC00000BB (STATUS_NOT_SUPPORTED). -
As a result of
ExecutionContextfailing to load,NetAdapterCxalso fails in a chain reaction, returning0xC0000034 (STATUS_OBJECT_NAME_NOT_FOUND).
Step 4: Debugging the 0xC00000BB failure
-
I attached a debugger to find out why
ExecutionContext.syswas returningSTATUS_NOT_SUPPORTED. -
I observed the following call stack:
-
ExecutionContext!DriverEntry -
NDIS!KLoaderRegisterModule -
NDIS!KLoader::RegisterModule -
NDIS!KLoader::FindModuleByGuidLocked
-
-
It appears that when
ExecutionContext!DriverEntrycallsNDIS!KLoaderRegisterModule, the NDIS KLoader itself is returning0xC00000BB.
My Questions
My guess is that the NDIS KLoader subsystem itself does not support being run at the BOOT_START phase on build 26100.1742.
-
Is the
NetAdapterCxstack and its dependencies (NDIS KLoader,ExecutionContext) fundamentally incompatible withBOOT_START? -
If so, what is the recommended approach for performing network I/O during the
BOOT_STARTphase (for a custom boot scenario, notkdnic)? -
Does anyone know what changed between build 22000 and 26100 that might have introduced this
BOOT_STARTincompatibility?
Any advice would be greatly appreciated. Thanks.