Skip to content

[UDFS] Fix driver load failure on Windows XP / POSReady 2009#13

Open
Zero3K20 wants to merge 5 commits into
assorted:udf-devfrom
Zero3K20:copilot/fix-udfs-loading-issue
Open

[UDFS] Fix driver load failure on Windows XP / POSReady 2009#13
Zero3K20 wants to merge 5 commits into
assorted:udf-devfrom
Zero3K20:copilot/fix-udfs-loading-issue

Conversation

@Zero3K20
Copy link
Copy Markdown

UDFS fails to load on Windows XP because KeAreAllApcsDisabled (introduced in WS03 SP1) is not exported by XP's ntoskrnl — the PE loader aborts before DriverEntry runs.

Changes

  • misc.cpp: Replace KeAreAllApcsDisabled() with KeGetCurrentIrql() >= APC_LEVEL — the standard FS driver idiom, available on all NT versions.

  • misc.cpp: Fix UDFDestroyZones to delete all lookaside lists initialized in UDFInitializeZones. UDFNonPagedFcbLookasideList, UDFFcbIndexLookasideList, and UDFFcbDataLookasideList were leaking on unload.

  • udfinit.cpp: Make FsRtlRegisterFileSystemFilterCallbacks failure non-fatal. Driver functions without the pre-acquire section synchronization callback.

  • udffs.h: Zero POOL_NX_ALLOCATION (Win8+ flag, 0x200) in the __REACTOS__ compat block alongside existing NonPagedPoolNx/MdlMappingNoExecute downgrades. OR-ing it into lookaside list pool types produces an invalid type on XP-era kernels.

Original prompt

This section details on the original issue you should resolve

<issue_title>[UDFS] It is having trouble loading under Windows XP</issue_title>
<issue_description>It is having trouble loading under Windows XP. I get the following error in Event Viewer:

The following boot-start or system-start driver(s) failed to load: 
Udfs
```</issue_description>

## Comments on the Issue (you are @copilot in this section)

<comments>
</comments>


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

assorted and others added 4 commits February 15, 2026 02:23
Simplify APC check to KeGetCurrentIrql() >= APC_LEVEL

Co-Authored-By: Zero3K20 <258969903+Zero3K20@users.noreply.github.com>
@Zero3K20
Copy link
Copy Markdown
Author

@assorted

- misc.cpp: Replace KeAreAllApcsDisabled() (WS03SP1+) with KeGetCurrentIrql() >= APC_LEVEL
- udfinit.cpp: Make FsRtlRegisterFileSystemFilterCallbacks failure non-fatal
- udffs.h: Zero POOL_NX_ALLOCATION (Win8+ flag) in ReactOS compat block

Co-authored-by: Zero3K20 <258969903+Zero3K20@users.noreply.github.com>
@Zero3K20 Zero3K20 closed this Apr 27, 2026
@Zero3K20 Zero3K20 reopened this May 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants