
Interpreting Process Monitor Result
Article Overview and Navigation
This document provides a detailed exploration of Windows operations monitoring using Procmon, result interpretation, and a catalog of common result values. Navigate through the sections below to explore specific aspects:
- I. Windows Operations Monitoring via Procmon, Result Interpretation, and External Influences: Delves into core Windows architectural components, their roles in generating Procmon results, the relationship between NTSTATUS and Win32 error codes, and the complexities of interpreting Procmon data.
- II. Catalog of Common and Diagnostically Significant Procmon Result Values: Presents an organized catalog with detailed entries for numerous Procmon result values, including common errors like ACCESS DENIED, NAME NOT FOUND, SHARING VIOLATION, and success codes.
- III. Summary Table of Key Procmon Result Values: Offers a concise summary table of the most important and frequently encountered Procmon result values for quick reference and diagnostics.
- Works Cited: Lists the references and sources consulted for this document.
I. Windows Operations Monitoring via Procmon, Result Interpretation, and External Influences
A. Elucidating Core Windows Architectural Components and Operations Monitored by Procmon
Process Monitor (Procmon) is an indispensable utility for real-time observation of system activity on Microsoft Windows operating systems. It captures detailed information about File System, Registry, Network, and Process/Thread activities.1 This capability is crucial for diagnosing application malfunctions, understanding system behavior, and conducting security incident analysis.3 Procmon achieves its comprehensive monitoring through a combination of kernel-mode drivers and Event Tracing for Windows (ETW).
For File System, Registry, and Process/Thread events, Procmon installs a kernel-mode filter driver, typically named PROCMONxy.SYS
(where 'xy' denotes a version-specific identifier).1 This driver strategically inserts itself into relevant driver stacks. In the case of file system monitoring, it functions as a file system minifilter driver, attaching to the file system stack managed by fltmgr.sys
.5 Minifilters can intercept I/O Request Packets (IRPs) both before (pre-operation) and after (post-operation) they are processed by the base file system driver (e.g., NTFS.SYS
) or other filters lower in the stack.6 The "altitude" of Procmon's minifilter is a configured value that determines its position relative to other file system minifilters, influencing its visibility into I/O operations.7 For Registry activity, Procmon's driver utilizes CmRegisterCallbackEx
to register routines that are invoked by the Configuration Manager for pre- and post-registry operations, allowing observation of the final status of these operations.5, 8 Process and thread lifecycle events (creation, termination) are captured using PsSetCreateProcessNotifyRoutineEx
and PsSetCreateThreadNotifyRoutine
, respectively, while image loading (DLLs, EXEs) is monitored via PsSetLoadImageNotifyRoutineEx
.5
Network activity (TCP and UDP) is traced using Event Tracing for Windows (ETW).5 Historically, Procmon utilized the NT Kernel Logger ETW session; however, contemporary versions employ a dedicated ETW session named "PROCMON TRACE".10 ETW provides a robust and standardized kernel-level infrastructure for publishing and consuming event data.10 This dichotomy in data sources—kernel filter driver versus ETW—means that the characteristics of captured data, such as timing precision and susceptibility to certain evasion techniques, can differ. While kernel drivers offer fine-grained, low-level interception5, ETW has documented bypass methods and can introduce minor event reporting latencies.5, 10 Consequently, if sophisticated network evasion is suspected, network traces from Procmon might benefit from correlation with other logging mechanisms.
The flow of operations within Windows, particularly for file I/O, is orchestrated by I/O Request Packets (IRPs). An IRP is a fundamental kernel data structure that represents an I/O request as it transits through the system.11 When an application or another kernel component initiates an I/O operation (e.g., reading a file), the I/O Manager typically creates an IRP. This IRP is then dispatched to the topmost driver in the device stack associated with the target device (e.g., a file system volume). Each driver in the stack, including any filter drivers like Procmon's or third-party filters, has the opportunity to process the IRP. A driver can complete the IRP (setting its final status), modify it, or pass it down to the next driver in the stack. The Result column in Procmon predominantly reflects the final NTSTATUS code with which an IRP (or an analogous kernel operation) was completed by one of the components in this processing chain.13 Procmon's file system filter intercepts these IRPs, logging their parameters (e.g., desired access, share mode, offset, length) and the ultimate outcome.
For network operations, user-mode calls initiated through Winsock (e.g., WS2_32.DLL
) are typically handled by the Ancillary Function Driver (AFD.SYS
). AFD.SYS
then communicates with underlying transport drivers, such as TCPIP.SYS
, primarily using the Transport Driver Interface (TDI). TDI requests are often encapsulated as internal device control IRPs (IRP_MJ_INTERNAL_DEVICE_CONTROL
).14 Additionally, the Windows Filtering Platform (WFP) allows callout drivers to inspect and modify network traffic at various layers of the network stack.15 Procmon's ETW-based network capture subscribes to events generated by these network components. The Result code in Procmon is thus fundamentally tied to the completion status of an IRP or an equivalent kernel-level operation. Understanding that such requests are processed sequentially by a stack of drivers, any of which can finalize the operation with a specific status, is pivotal for diagnosing the origin of a particular Result value.
Procmon captures a wealth of data for each event, including the Time of Day, Process Name, Process ID (PID), Operation type (e.g., CreateFile
, RegQueryValue
, TCP Send
), Path (to the file, registry key, or network endpoint), the Result of the operation, and a Detail column providing operation-specific information.17 The Result column, populated with NTSTATUS codes, is the primary indicator of an operation's success or failure from the kernel's perspective.
B. Roles of System Components in Generating Procmon Result Values
The Result values observed in Procmon traces are generated by a variety of components operating at different layers of the Windows architecture. Understanding the roles of these components is essential for accurate interpretation. (For deeper architectural context on these components and general Windows error handling, see Windows Error Generation Architecture).
1. Kernel-mode Core Components Relevant to Traced Operations
The Windows kernel and its core drivers are the primary sources of NTSTATUS codes that Procmon captures. A single user-mode operation, such as opening a file, can traverse multiple kernel managers and drivers, each capable of terminating the operation and generating an NTSTATUS code. The Result observed in Procmon typically originates from the first component in this chain that authoritatively completes or fails the request.
a. NTOSKRNL.EXE (Executive Subsystems)18
NTOSKRNL.EXE
is the kernel image, containing the core executive subsystems responsible for fundamental operating system services. These subsystems are primary originators of many NTSTATUS codes.- I/O Manager (Io prefix): Central to all I/O operations. Creates and routes IRPs, manages driver stacks, validates parameters (e.g.,
STATUS_INVALID_PARAMETER
,STATUS_INVALID_DEVICE_REQUEST
), and handles completion. Can return buffer-related codes likeSTATUS_BUFFER_TOO_SMALL
/STATUS_BUFFER_OVERFLOW
.13, 18 - Object Manager (Ob prefix): Manages executive objects (files, devices, keys, processes, threads). Handles name parsing, creation, handles, security. Common codes:
STATUS_OBJECT_NAME_NOT_FOUND
,STATUS_OBJECT_PATH_NOT_FOUND
,STATUS_OBJECT_NAME_COLLISION
,STATUS_INVALID_HANDLE
,STATUS_REPARSE
.18, 21 - Process Manager (Ps prefix): Manages processes and threads. Involved in results like
STATUS_PROCESS_IS_TERMINATING
,STATUS_ACCESS_DENIED
for process/thread ops.18 - Memory Manager (Mm prefix): Manages virtual/physical memory, paging, memory-mapped files. Can generate
STATUS_INSUFFICIENT_RESOURCES
(pool exhaustion, commit limit).18 - Registry Manager (Configuration Manager - Cm prefix): Implements the Registry. Source of codes like
STATUS_REGISTRY_CORRUPT
,STATUS_KEY_DELETED
,STATUS_ACCESS_DENIED
for registry ops.18, 24 - Security Reference Monitor (Se prefix): Enforces security policy via access checks (DACLs) and privileges. Primary source for
STATUS_ACCESS_DENIED
(0xC0000022) andSTATUS_PRIVILEGE_NOT_HELD
(0xC0000061).18, 27
- I/O Manager (Io prefix): Central to all I/O operations. Creates and routes IRPs, manages driver stacks, validates parameters (e.g.,
b. Native File System Drivers (e.g.,
NTFS.SYS
,FASTFAT.SYS
,Refs.sys
,CDFS.SYS
)Implement logic for specific on-disk formats, translating IRPs into disk operations.
NTFS.SYS
: Manages NTFS volumes. Returns codes related to disk/file corruption (STATUS_DISK_CORRUPT_ERROR
,STATUS_FILE_CORRUPT_ERROR
), metadata issues, locking/sharing conflicts (STATUS_SHARING_VIOLATION
,STATUS_FILE_LOCK_CONFLICT
,STATUS_FILE_LOCKED_WITH_ONLY_READERS
,STATUS_FILE_LOCKED_WITH_WRITERS
), USN journal, compression/encryption issues, end-of-file (STATUS_END_OF_FILE
), and deletion status (STATUS_DELETE_PENDING
).29FASTFAT.SYS
: Manages FAT/exFAT volumes. Similar codes for corruption/locking specific to FAT.20ReFS.sys
: Manages Resilient File System volumes. Generates codes related to its integrity mechanisms.33CDFS.SYS
: Manages CD/DVD file systems. Can returnSTATUS_ACCESS_DENIED
(write attempts) orSTATUS_DEVICE_BUSY
.35
c. Native Network Stack Components (
TCPIP.SYS
,AFD.SYS
, NDIS drivers)Responsible for network communication.
TCPIP.SYS
: Core TCP/IP, UDP/IP driver. Source of codes likeSTATUS_CONNECTION_REFUSED
,STATUS_HOST_UNREACHABLE
,STATUS_PORT_UNREACHABLE
,STATUS_TIMEOUT
,STATUS_ADDRESS_ALREADY_EXISTS
,STATUS_REMOTE_DISCONNECT
,STATUS_LOCAL_DISCONNECT
.14, 37AFD.SYS
: Ancillary Function Driver supporting Winsock. Translates user-mode socket calls to kernel TDI requests. Failures can relate to socket state or parameter validation.14- NDIS drivers: Framework for NIC drivers (miniports) and intermediate drivers. Errors can indicate media problems, NIC hardware failures, driver configuration issues.16
d. Other relevant native device drivers involved in I/O paths
Drivers managing specific hardware.
- Storage Drivers (e.g.,
disk.sys
,storport.sys
,classpnp.sys
): Manage physical storage devices below file systems. Can generate codes likeSTATUS_DEVICE_NOT_READY
,STATUS_IO_DEVICE_ERROR
,STATUS_MEDIA_WRITE_PROTECTED
,STATUS_DEVICE_BUSY
.45 - USB Drivers, Human Interface Device (HID) Drivers, etc.: Generate codes specific to their devices (e.g.,
STATUS_DEVICE_DATA_ERROR
,STATUS_DEVICE_POWER_FAILURE
).
- Storage Drivers (e.g.,
2. User-mode System Libraries (as callers triggering monitored operations)
User-mode applications use APIs provided by system DLLs, which translate requests into native system calls.
- a.
NTDLL.DLL
: Lowest-level user-mode library, interface to kernel Native API (NtCreateFile
,NtOpenKeyEx
, etc.). Procmon often shows calls to these preceding kernel ops. Result column often shows direct return NTSTATUS from these functions.46 - b.
KERNEL32.DLL
andKERNELBASE.DLL
: Expose core Win32 API (CreateFileW
,ReadFile
,RegOpenKeyExW
). Wrappers aroundNTDLL.DLL
functions. Crucially translate NTSTATUS codes from kernel into Win32 error codes (viaRtlNtStatusToDosError
) retrieved byGetLastError()
.46, 48 - c.
ADVAPI32.DLL
: "Advanced API" services (security, registry, event logging). Also calls down throughKERNEL32
/KERNELBASE
/NTDLL
.46 - d.
SHELL32.DLL
: Windows Shell API (higher-level file operations like copy/move viaSHFileOperation
). One shell call decomposes into many low-level file/registry ops in Procmon.46, 52 - e.
WS2_32.DLL
(Winsock): Windows Sockets API (socket
,bind
,connect
,send
). Interfaces with kernel-modeAFD.SYS
.46
Understanding the translation from NTSTATUS (seen in Procmon) to Win32 error codes (reported by applications) is vital. For example, Procmon shows STATUS_ACCESS_DENIED
(0xC0000022), application reports ERROR_ACCESS_DENIED
(5). Not all NTSTATUS codes have unique Win32 equivalents.48
3. Third-Party Filter Drivers (Critical External Influence on Procmon Results)
Third-party filter drivers are kernel-mode components that intercept and potentially modify system operations. They are a pervasive and critical factor influencing the Result codes seen in Procmon, often being the true origin of unexpected outcomes.
- a. Role and Mechanism:
Filter drivers insert into standard processing paths (I/O, system events).
- File System Minifilters (
fltmgr.sys
): Modern mechanism for filtering file I/O. Attach at specific "altitudes". Used by AV, EDR, DLP, encryption, backup, virtualization. Can inspect/modify IRPs pre/post operation.5, 6 - Network Filters (WFP Callout Drivers & NDIS Filter Drivers):
- Windows Filtering Platform (WFP) Callout Drivers: Comprehensive framework for network traffic inspection/modification at multiple TCP/IP layers. Used by firewalls, IDS/IPS, network monitors.15, 54
- NDIS Filter Drivers (Lightweight Filters - LWFs): Attach between protocol drivers (e.g.,
TCPIP.SYS
) and NIC drivers. Can monitor/modify/drop packets at data link layer. Used by sniffers, VPNs, firewalls, traffic shapers.16, 44
- Registry Filters (
CmRegisterCallbackEx
): Kernel drivers register callbacks invoked for registry operations. Allows monitoring, blocking, modification. Used by security software, app virtualization, customization tools.8, 57 - Process/Thread Creation Notification Routines (
PsSetCreateProcessNotifyRoutineEx
,PsSetCreateThreadNotifyRoutine
): Kernel drivers notified of process/thread creation/termination. Used heavily by EDR/AV for behavioral analysis, policy enforcement, DLL injection.59
- File System Minifilters (
- b. Impact on Procmon Traces:
Profound impact on Procmon data:
- i. Modifying Result Codes (CRITICAL): Can complete operations early or alter status codes.
- Denial of Service: Frequently return
STATUS_ACCESS_DENIED
based on policy (AV block, EDR prevention, DLP block).6 - Sharing/Locking Conflicts: Filters opening files (AV scan, backup) can cause
STATUS_SHARING_VIOLATION
,STATUS_FILE_LOCKED_WITH_ONLY_READERS
,STATUS_FILE_LOCKED_WITH_WRITERS
for subsequent application access.6 - Redirection: HSM or file virtualization filters may return
STATUS_REPARSE
to redirect I/O.6 - Deferred Operations: May return
STATUS_DELETE_PENDING
. - Network Blocking: WFP/NDIS filters can cause
STATUS_CONNECTION_REFUSED
,STATUS_HOST_UNREACHABLE
, or timeouts by dropping packets.15 - Registry Operation Failure: Can cause registry ops to fail with
STATUS_ACCESS_DENIED
or custom statuses.57
- Denial of Service: Frequently return
- ii. Introducing Operations: Perform their own I/O visible in Procmon.
- On-Access Scanning: AV/EDR perform
CreateFile
,ReadFile
,CloseFile
after application's successful open.6 - Reputation Lookups/Logging: Security software makes network requests or registry queries for policy/reputation checks, or writes to own log files.
- On-Access Scanning: AV/EDR perform
- iii. Altering Duration: Filter processing (encryption, scanning, policy evaluation) adds latency, visible in Procmon's Duration column. Can cause performance issues, timeouts, and subsequent errors.6
- iv. Causing Unexpected Sequences:
- Retries: Application retries after filter block.
- Path Alternation:
STATUS_REPARSE
causes I/O Manager to retry with a different path. - Application Code Path Changes: Application switches logic based on filter-induced failure/behavior.
- i. Modifying Result Codes (CRITICAL): Can complete operations early or alter status codes.
- c. Diagnostic Challenge:
Filter drivers complicate diagnosis:
- Attribution Difficulty:
STATUS_ACCESS_DENIED
might appear to come from NTFS or Object Manager, but a filter could be the true source. Procmon Result might be the filter's verdict, not the OS's.65 - Importance of Stack Traces: Stack Trace view in Procmon is paramount. If a third-party driver (non-Microsoft
.sys
file) is near the top of the kernel stack when the Result is generated, it strongly indicates filter involvement. Learning to read stacks is crucial.7 - Using
fltmc.exe
: Lists loaded file system minifilters, altitudes, attachments (fltmc instances
).67 Disabling filters methodically can help isolate issues. - Interpreting in Full Context: Result code needs context of the entire filter stack. An operation passes through multiple filters; any could affect outcome. Filters can introduce seemingly unrelated operations.
- Attribution Difficulty:
C. NTSTATUS Codes and Their Relationship with Win32 Error Codes
The Result column in Procmon primarily displays NTSTATUS codes, the native status reporting mechanism within the Windows kernel and drivers.
- NTSTATUS Codes:
NTSTATUS
is a 32-bit data type used by kernel-mode components to indicate success, informational status, warnings, or errors.19 Structure includes Severity, Facility (originating component group), and Code. Defined inntstatus.h
(WDK/SDK). Microsoft documentation lists codes and meanings.19, 40, 70 For a general overview of Windows error code systems, see Primary Error Code Systems. - Relationship to Win32 Error Codes:
User-mode Win32 applications typically use Win32 error codes, retrieved via
GetLastError()
.71 Kernel NTSTATUS codes are usually translated to Win32 error codes by user-mode libraries (KERNELBASE.DLL
/KERNEL32.DLL
)46 usingRtlNtStatusToDosError
(inNTDLL.DLL
).48 This translation is not always 1:1; some NTSTATUS codes map to generic errors likeERROR_MR_MID_NOT_FOUND
, losing specificity. Procmon's display of raw NTSTATUS provides more precise kernel-level information. - Filter Driver Actions and NTSTATUS:
Third-party filter drivers, being kernel components, work directly with NTSTATUS codes. When a filter blocks or completes an operation, it sets the status (e.g.,
IoStatus.Status
in an IRP) to an NTSTATUS code (likeSTATUS_ACCESS_DENIED
) and returns a completion status (e.g.,FLT_PREOP_COMPLETE
).6 This is exactly what Procmon captures. Understanding NTSTATUS is essential for interpreting traces with active filters.
D. Addressing Procmon Result Interpretation Complexity
Interpreting Procmon's Result column is complex due to Windows' layered architecture, component interactions, and especially the pervasive influence of third-party filter drivers. Accurate diagnosis requires holistic analysis of multiple Procmon data points.
Windows processes requests through layers: user-mode libraries (KERNEL32.DLL
, NTDLL.DLL
), executive subsystems (I/O Mgr, Object Mgr, SRM in NTOSKRNL.EXE
), core drivers (NTFS.SYS
, TCPIP.SYS
), and critically, third-party filter drivers (FS, network, registry, process). Each layer can influence the final Result.
Third-party filter drivers (see I.B.3) are a primary source of complexity:
- Override/Mask Base System Results: Filter returns
STATUS_ACCESS_DENIED
even if underlying permissions allow access. - Introduce Additional Operations: AV scans, DLP logging add events not directly from the application.
- Introduce Latency: Filter processing increases Duration, potentially causing timeouts/secondary failures.
Therefore, analyze Result code with other columns:
- Path and Detail Columns: Provide context (target object path, operation parameters like Desired Access, ShareMode, IOCTL code, registry data). Crucial for understanding the attempt.17
- Stack Trace Column (CRITICAL): Shows kernel-mode call stack at event logging. If a third-party driver (
somefilter.sys
) is near the top when an error Result occurs, it's a strong suspect.7 - Duration Column: High values, especially correlated with filters in the stack, indicate filter-induced bottlenecks.6
- Surrounding Events: Sequence provides clues (retries, AV scans after successful open,
STATUS_REPARSE
followed by newCreateFile
).
Unexpected Result values often stem from:
- Third-Party Filter Driver Intervention (Most Common): AV blocking, EDR enforcing policy, encryption modifying I/O, backup holding locks, firewall dropping packets.
- Reparse Point Processing:
STATUS_REPARSE
is normal for symbolic links, junctions, mount points, placeholders (OneDrive, HSM). I/O Manager or filter (wcifs.sys
,storqosflt.sys
) redirects the operation. Analyze subsequent events.21 - Symbolic Links and Junctions: Inherently trigger
STATUS_REPARSE
. - Subtle Configuration Issues: Incorrect security policies (enforced by filters), registry settings affecting drivers, network misconfigurations.
- Application Logic Errors: Invalid parameters passed, logically flawed operations (write to read-only handle), poor error handling leading to cascading failures.
While core Windows component bugs occur, they are less frequent causes than the above, especially filter actions. Effective Procmon analysis requires an investigative mindset, hypothesizing causes and using data (especially stack traces) to confirm/refute, always considering filters as intermediaries.
II. Catalog of Common and Diagnostically Significant Procmon Result Values
A. & B. Catalog Organization
This section provides a catalog of common and diagnostically important Result values (primarily NTSTATUS codes) frequently encountered in Procmon traces across File System, Registry, Network, and Process/Thread operations. Entries are alphabetical, detailing NTSTATUS code, potential origins (emphasizing filter drivers), typical operations, technical causes, and diagnostic clues. For broader coverage of Windows error codes beyond Procmon specifics, refer to The Catalog of Public Windows Error Codes and Messages.
C. Detailed Result Value Entries
1. Result Value Name: ACCESS DENIED
NTSTATUS Code:
0xC0000022
70Primary Originating Layer/System (Potential): Security Reference Monitor (SRM in
NTOSKRNL.EXE
), File System Driver (e.g.,NTFS.SYS
), Registry Manager (NTOSKRNL.EXE
), Third-Party Filter Driver (File System, Registry, Process, Network).Typical Operations:
CreateFile
,OpenFile
,DeleteFile
,SetBasicInformationFile
,RegOpenKey
,RegCreateKey
,RegSetValue
,RegDeleteKey
, Process Create, Thread Create, TCP Bind (privileged ports),DeviceIoControlFile
.Detailed Causation ("Why"):
- Permissions/ACLs (SRM): Primary cause. Object's security descriptor denies requested Desired Access based on caller's token (
SeAccessCheck
inNTOSKRNL.EXE
). - Explicit blocking/denial by Filter Drivers (CRITICAL): Very common. FS Filters (AV, EDR, DLP) block based on policy (malware, sensitive data, ransomware protection).6 Registry Filters block key/value access. Process/Thread Filters (EDR) prevent creation/injection. Network Filters (WFP) deny connections based on firewall rules.54
- Privilege Issues: Operation requires specific privilege (e.g.,
SeSecurityPrivilege
,SeBackupPrivilege
) caller lacks. OftenSTATUS_PRIVILEGE_NOT_HELD
(0xC0000061) but can beACCESS DENIED
. - Integrity Level Mismatch: Lower integrity process denied access to higher integrity object (Mandatory Integrity Control - MIC).
- Sharing Mode Conflicts (Less Common): Sometimes exclusive access attempts conflicting with existing opens manifest as
ACCESS DENIED
. - Invalid Device State or Request: E.g., write attempt to read-only mounted volume by FS driver.
- Permissions/ACLs (SRM): Primary cause. Object's security descriptor denies requested Desired Access based on caller's token (
Procmon Diagnostic Clues ("How to Corroborate"):
- Detail column for
CreateFile
: ShowsDesired Access
andShareMode
. Compare with object permissions. - Stack Trace (Crucial): If
ntoskrnl.exe!SeAccessCheck
prominent, likely standard ACL denial. If third-party filter (mfehidk.sys
,symefasi.sys
,wdfilter.sys
,carbonblack.sys
,sentinel.sys
, etc.) at/near top, filter likely source.62 - Path column: Identifies object. Inspect ACLs using Explorer properties,
icacls.exe
,Get-Acl
. - Event Sequence: Look for security software ops before/after the denial.
- External Tools:
fltmc.exe instances
for FS filters.67 Temporarily disable suspect security software.netsh wfp show filters
for WFP rules.
- Detail column for
2. Result Value Name: ADDRESS ALREADY EXISTS
NTSTATUS Code:
0xC000020A
70Primary Originating Layer/System (Potential): Network Stack Component (e.g.,
TCPIP.SYS
,AFD.SYS
), Third-Party Network Filter Driver (WFP/NDIS).Typical Operations: TCP Bind (e.g., via
IRP_MJ_INTERNAL_DEVICE_CONTROL
withTDI_BIND
orIOCTL_AFD_BIND
), UDP Bind.Detailed Causation ("Why"):
- Port in Use: Most common. Attempt to bind socket to local IP/port already in use by another active socket.
- Lingering Sockets: Socket in
TIME_WAIT
state prevents immediate reuse. - Filter Driver Intervention: Network filter might manage own state and deem address "in use" or reserved.
Procmon Diagnostic Clues ("How to Corroborate"):
- Path column: Shows local IP/port being bound (e.g.,
0.0.0.0:80
). - Detail column: May show specifics for
AFD_BIND
. - External Tools:
netstat -ano -p TCP
(or-p UDP
) lists active endpoints, states, owning PID. Compare with Procmon path to find conflict. - Stack Trace: Shows if
TCPIP.SYS
orAFD.SYS
returns error. Third-party network filter presence indicates possible involvement. - Event Sequence: Check for recent socket closure on that address/port.
- Path column: Shows local IP/port being bound (e.g.,
3. Result Value Name: BUFFER OVERFLOW
NTSTATUS Code:
0x80000005
70 (Warning/Informational, NT_SUCCESS macro is TRUE)Primary Originating Layer/System (Potential): I/O Manager, various Kernel Drivers (FS, Registry, Network), Third-Party Filter Driver.
Typical Operations:
QueryDirectoryFile
,RegQueryValueKey
,RegQueryKey
,DeviceIoControlFile
(variable data),NtQueryInformationFile
,NtQuerySystemInformation
.Detailed Causation ("Why"):
- Variable-Length Data Retrieval: Caller provides buffer; buffer large enough for some data but not all. System/filter fills buffer, returns this status, indicates amount written.19
- Caller Expectation: Expected pattern. Caller checks status, notes data returned, potentially reallocates larger buffer (based on required size sometimes returned) and retries.76
- Filter Driver Behavior: Filter processing such query might return this if its modified data exceeds caller's buffer.
Procmon Diagnostic Clues ("How to Corroborate"):
- Detail column: Often shows buffer Length provided. May show length returned.
- Event Sequence: Look for subsequent retry of same operation with larger buffer size (often visible in Detail). Retry often succeeds or gets this status again if data large/growing.
- Stack Trace: Shows component returning status.
- Usually not an error itself, but part of API contract. Problem if application fails to handle retry logic.
4. Result Value Name: BUFFER TOO SMALL
NTSTATUS Code:
0xC0000023
70 (Error status, NT_SUCCESS macro is FALSE)Primary Originating Layer/System (Potential): I/O Manager, various Kernel Drivers (FS, Registry, Network), Third-Party Filter Driver.
Typical Operations: Similar to BUFFER OVERFLOW:
QueryDirectoryFile
,RegQueryValueKey
,RegQueryKey
,DeviceIoControlFile
,NtQueryInformationFile
,NtQueryVolumeInformationFile
.Detailed Causation ("Why"):
- Insufficient Buffer for Any Data: Caller buffer too small for minimal/any data. Unlike
BUFFER_OVERFLOW
, usually no data returned.19 - Required Size Indication: System/filter often sets
IoStatus.Information
to required buffer size for caller retry. - Fixed-Size Output Mismatch: Provided buffer smaller than expected fixed-size output structure.
- Filter Driver Behavior: Filter intercepting query can return this if buffer insufficient for its (potentially modified) data.
- Insufficient Buffer for Any Data: Caller buffer too small for minimal/any data. Unlike
Procmon Diagnostic Clues ("How to Corroborate"):
- Detail column: May show buffer Length provided. Might state required size.
- Event Sequence: Look for subsequent retry with larger buffer size (visible in Detail). Retry often succeeds.
- Stack Trace: Identifies component determining buffer too small.
- Common error; applications should handle by reissuing with adequate buffer.
5. Result Value Name: CONNECTION REFUSED
NTSTATUS Code:
0xC0000236
70Primary Originating Layer/System (Potential): Network Stack Component (
TCPIP.SYS
), Third-Party Network Filter Driver (WFP/NDIS).Typical Operations: TCP Connect (often Procmon
TCP:Connect
, initiated byAFD_CONNECT
).Detailed Causation ("Why"):
- No Listening Service: Remote host reached, but no application listening on destination port. Remote TCP stack actively rejected (sent TCP RST).
- Firewall on Remote Host: Remote firewall blocking port and configured to send RST.
- Firewall on Local Host (Less Common): Local firewall (potentially Third-Party WFP Filter) could actively refuse outgoing SYN, though silent drop (leading to TIMEOUT) is more common.
- Application Layer Rejection: Server app accepts TCP then immediately closes (e.g., unmet criteria), possibly mapped to this error by client stack.
Procmon Diagnostic Clues ("How to Corroborate"):
- Path column: Shows destination IP address and port.
- Detail column: May show source/destination ports for TCP Connect.
- External Tools: Verify remote service listening (
netstat -ano
on remote). Check client/server firewalls. Test connect from different client/tool (telnet
,Test-NetConnection
). - Stack Trace: Typically shows
TCPIP.SYS
/AFD.SYS
. If third-party network filter high in stack, investigate its role. - Event Sequence: Look for repeated attempts if application retries.
6. Result Value Name: DELETE PENDING
NTSTATUS Code:
0xC0000056
70Primary Originating Layer/System (Potential): File System Driver (e.g.,
NTFS.SYS
), Third-Party File System Filter Driver.Typical Operations: Any file operation (except
CloseFile
, some queries) on a file object marked for deletion (e.g.,ReadFile
,WriteFile
,SetBasicInformationFile
, anotherCreateFile
).Detailed Causation ("Why"):
- File Marked for Deletion: Previous op marked file for delete (
SetDispositionInformationFile
withDeleteFile=TRUE
, orFILE_FLAG_DELETE_ON_CLOSE
used on open). - File System Behavior: FS disallows most subsequent ops on existing handles (or new opens) once marked DELETE_PENDING. Actual disk deletion on last handle close.
- Filter Driver Intervention: Filter might implement own deferred delete logic or intercept deletes, mark file pending, and return this status.
- File Marked for Deletion: Previous op marked file for delete (
Procmon Diagnostic Clues ("How to Corroborate"):
- Event Sequence: Look for preceding
SetDispositionInformationFile
(Detail showsDelete: True
) orCreateFile
(Options includeDelete On Close
) on same path/handle. - Path column: Identifies file.
- Stack Trace: Indicates FS driver or filter returning status.
- Indicates file is being deleted; apps should close handles.
- Event Sequence: Look for preceding
7. Result Value Name: DEVICE BUSY
NTSTATUS Code:
0x80000011
70 (Warning/Informational)Primary Originating Layer/System (Potential): Device Driver (storage, serial, etc.), I/O Manager, Third-Party Filter Driver.
Typical Operations:
CreateFile
(esp. devices),DeviceIoControlFile
,WriteFile
,ReadFile
.Detailed Causation ("Why"):
- Exclusive Access Conflict: Attempt to open device already in exclusive use, or request requires exclusive access not currently grantable.
- Device Overloaded/Queues Full: Device/driver has too many pending requests.
- Resource Contention: Required hardware resource (interrupt, DMA) unavailable.
- Filter Driver Holding Resource: Filter in device stack might hold device busy or manage access leading to this.
- Media Change/Initialization: Removable media changing state.
Procmon Diagnostic Clues ("How to Corroborate"):
- Path column: Identifies device/file.
- Detail column for
CreateFile
:Desired Access
/ShareMode
show if exclusive access requested. - Event Sequence: Look for other processes accessing same device. Check system event logs. Retries common.
- Duration: Consistently slow ops on device might precede this status.
- Stack Trace: Pinpoints driver in stack returning status. Investigate filters if present.
8. Result Value Name: DIRECTORY NOT EMPTY
NTSTATUS Code:
0xC0000101
70Primary Originating Layer/System (Potential): File System Driver (e.g.,
NTFS.SYS
,FASTFAT.SYS
), Third-Party File System Filter Driver.Typical Operations:
SetDispositionInformationFile
(deleting directory),DeleteFile
(targeting directory with older APIs).Detailed Causation ("Why"):
- Contains Files/Subdirectories: Attempt to delete directory that still contains items. Most FS require directory empty for deletion.
- Hidden or System Files: Directory appears empty in Explorer but hidden/system files prevent deletion.
- Open Handles: Open handles to files/subdirectories within the target directory prevent their removal, thus blocking parent deletion.
- Filter Driver Interference: Filter could prevent enumeration/deletion of items, hold items open, or directly return this status based on own logic.
Procmon Diagnostic Clues ("How to Corroborate"):
- Path column: Identifies directory.
- Event Sequence: Look for preceding
QueryDirectoryFile
on target dir to see enumerated contents. Look for failed delete attempts on items within target dir (Result indicates why they failed, e.g.,SHARING_VIOLATION
,ACCESS_DENIED
). - External Tools:
dir /a <path>
orGet-ChildItem -Path <path> -Force
lists all contents. Check for open handles (Resource Monitor, Process Explorer). - Stack Trace: Shows FS driver. Filter might be visible if involved.
9. Result Value Name: DISK CORRUPT ERROR
NTSTATUS Code:
0xC0000032
70Primary Originating Layer/System (Potential): File System Driver (e.g.,
NTFS.SYS
,FASTFAT.SYS
), Storage Driver.Typical Operations: Any FS operation involving disk metadata/data read/write (
CreateFile
,ReadFile
,WriteFile
,QueryDirectoryFile
,SetInformationFile
).Detailed Causation ("Why"):
- File System Structure Corruption: Severe error. On-disk FS structures (MFT, FAT, directories, bitmaps) damaged/inconsistent.
- Bad Sectors: Physical bad sectors on media lead to unreadable/unwritable metadata/data, interpreted as corruption.
- Sudden Power Loss/Unsafe Shutdown: Leaves FS structures inconsistent.
- Hardware Malfunction: Failing HDD/SSD/controller.
- Driver Bugs (Less Common): Storage or FS driver bugs could cause corruption.
Procmon Diagnostic Clues ("How to Corroborate"):
- Path column: May indicate file/dir accessed when corruption detected, but could be general FS structure.
- Event Sequence: Often multiple ops fail with this or related errors (
STATUS_FILE_CORRUPT_ERROR
,STATUS_CRC_ERROR
). - System Event Log: Check System log for disk errors (sources "Disk", "NTFS", "PartMgr").
- External Tools: Run
CHKDSK /f /r <volume>:
. Check SMART data (CrystalDiskInfo). - Stack Trace: Typically points to FS driver (
NTFS.SYS!NtfsFsdRead
) or lower storage driver.
10. Result Value Name: END OF FILE
NTSTATUS Code:
0xC0000011
70Primary Originating Layer/System (Potential): File System Driver (e.g.,
NTFS.SYS
), I/O Manager.Typical Operations:
ReadFile
,NtReadFile
.Detailed Causation ("Why"):
- Read Past File Boundary: Read attempt at or beyond current end of file's valid data. Normal/expected for sequential reads.
- Zero-Length File: Attempting read from 0-byte file.
- Sparse File Region: Read from unallocated sparse region might return EOF or zeros depending on FS/flags.
Procmon Diagnostic Clues ("How to Corroborate"):
- Detail column for
ReadFile
: ShowsOffset
andLength
requested. Compare Offset with file size.IoStatus.Information
(bytes read) will be 0 if read started at/beyond EOF, or less than Length if read crossed EOF. - Event Sequence: Often last successful/semi-successful read before close.
- File Size: Correlate with size from preceding
CreateFile
orQueryStandardInformationFile
/QueryBasicInformationFile
. - Generally not an error, but indicator for app to stop reading.
- Detail column for
11. Result Value Name: FILE LOCKED WITH ONLY READERS
NTSTATUS Code:
0x0000012A
70 (Informational/Success)Primary Originating Layer/System (Potential): File System Driver, Third-Party File System Filter Driver.
Typical Operations:
LockFile
(NtLockFile
),DeviceIoControlFile
(FSCTL_LOCK_VOLUME
).Detailed Causation ("Why"):
- Successful Lock with Existing Readers: Lock request succeeded, but file/range already locked by others permitting only reading. Current lock granted, status informs caller.
- Filter Driver Custom Locking: Filter implementing own locking might return this based on its state.
Procmon Diagnostic Clues ("How to Corroborate"):
- Detail column for
LockFile
: ShowsOffset
,Length
, flags (shared/exclusive lock). - Event Sequence: Look for other
LockFile
ops on same file by other processes/handles. - Informational status, usually not a problem unless exclusive lock required.
- Detail column for
12. Result Value Name: FILE LOCKED WITH WRITERS
NTSTATUS Code:
0x0000012B
70 (Informational/Success)Primary Originating Layer/System (Potential): File System Driver, Third-Party File System Filter Driver.
Typical Operations:
LockFile
(NtLockFile
),DeviceIoControlFile
(FSCTL_LOCK_VOLUME
).Detailed Causation ("Why"):
- Successful Lock with Existing Writers: Lock request succeeded, but file/range already locked by others permitting write access. Current lock granted, status informs caller.
- Filter Driver Custom Locking: Filter managing own locks could return this.
Procmon Diagnostic Clues ("How to Corroborate"):
- Detail column for
LockFile
: ShowsOffset
,Length
, lock flags. - Event Sequence: Examine other
LockFile
ops on same file. - Informational status.
- Detail column for
13. Result Value Name: FILE LOCK CONFLICT
NTSTATUS Code:
0xC0000054
70Primary Originating Layer/System (Potential): File System Driver (e.g.,
NTFS.SYS
), Third-Party File System Filter Driver.Typical Operations:
LockFile
(NtLockFile
), sometimesReadFile
/WriteFile
if implicit locks conflict with existing byte-range locks.Detailed Causation ("Why"):
- Conflicting Byte-Range Lock: Attempt to lock byte range conflicts with existing lock on overlapping range held by another process/handle (e.g., exclusive requested over existing shared, any lock requested over existing exclusive).
- Filter Driver Interference: Filter might manage locks or hold conflicting lock itself.
Procmon Diagnostic Clues ("How to Corroborate"):
- Detail column for
LockFile
: ShowsOffset
,Length
, requested lock type (shared/exclusive). - Event Sequence: Search for other
LockFile
ops on same path. Identify process/handle holding conflicting lock (Procmon Find Handle/DLL, filter path, examine open handles/locks). - Stack Trace: Likely points to FS driver. Filter might appear if involved.
- Detail column for
14. Result Value Name: HOST UNREACHABLE
NTSTATUS Code:
0xC000023D
70Primary Originating Layer/System (Potential): Network Stack Component (
TCPIP.SYS
), Third-Party Network Filter Driver (WFP/NDIS).Typical Operations: TCP Connect, UDP Send, TCP Send (if route changes or remote becomes unreachable).
Detailed Causation ("Why"):
- No Route to Host: Local system lacks network route to destination IP (bad local config, routing table issue, destination genuinely unreachable).
- ARP Failure (Local Network): Failed to resolve MAC address for destination IP or gateway via ARP.
- Firewall Blocking (Local or Intermediate): Firewall (local, possibly Third-Party WFP Filter; or intermediate router) dropping packets, preventing response, leading stack to determine unreachability (often after timeouts).
- Physical Layer Issues: Cable disconnected, faulty NIC, switch port down.
- VPN/Tunneling Issues: Problems with tunnel interface or routing if traffic should use VPN/tunnel.
Procmon Diagnostic Clues ("How to Corroborate"):
- Path column: Shows destination IP address and port.
- External Tools:
ping <host_ip>
(basic connectivity).tracert <host_ip>
/pathping
(route tracing).ipconfig /all
(local config).route print
(local routing table). Check firewall logs. - Stack Trace: Usually points to
TCPIP.SYS
. Network filter visible if involved in blocking/misrouting. - Event Sequence: Look for preceding DNS resolution attempts (UDP Send/Receive port 53) to verify IP address correctness.
15. Result Value Name: INSUFFICIENT RESOURCES
NTSTATUS Code:
0xC000009A
70Primary Originating Layer/System (Potential): Memory Manager (
NTOSKRNL.EXE
), I/O Manager, various Drivers (FS, Net, Reg), Third-Party Filter Driver.Typical Operations: Virtually any op requiring kernel memory (nonpaged/paged pool), handles, or other finite resources:
CreateFile
,RegCreateKey
, Process Create, TCP Connect,ReadFile
/WriteFile
(internal buffers),DeviceIoControlFile
.Detailed Causation ("Why"):
- Kernel Memory Exhaustion (Most Common): System out of nonpaged or paged pool memory needed for kernel data structures (IRPs, FCBs, sockets). Often due to driver leaks (including third-party filters) or high load.
- Handle Limit Exceeded: Process exceeds handle quota or system limit.
- Quota Exhaustion: Process exceeds paged pool or other resource quotas.
- Other System Limits: Exhaustion of PTEs, I/O map registers, etc.
- Filter Driver Resource Consumption: Poorly written filter leaks kernel memory or consumes excessive resources, contributing to or causing error.
Procmon Diagnostic Clues ("How to Corroborate"):
- Event Sequence: Error may appear for various ops across processes if system globally low. Look for pattern.
- Duration: Ops may slow significantly before this error appears.
- External Tools: Task Manager/Resource Monitor (check nonpaged/paged pool). Performance Monitor (track Memory\Pool Nonpaged Bytes, Pool Paged Bytes, Available MBytes; Process\Handle Count).
PoolMon
(WDK tool identifies pool tags/drivers consuming memory, diagnoses leaks). Kernel Debugger (!vm
,!poolused
for advanced analysis). - Stack Trace: Shows component failing allocation. Filter driver visible if it failed allocation.
16. Result Value Name: INVALID HANDLE
NTSTATUS Code:
0xC0000008
70Primary Originating Layer/System (Potential): Object Manager (
NTOSKRNL.EXE
), I/O Manager, various Drivers.Typical Operations: Any op taking handle input:
ReadFile
,WriteFile
,CloseFile
,RegQueryValue
,DeviceIoControlFile
,NtWaitForSingleObject
.Detailed Causation ("Why"):
- Handle is Not Valid: Value doesn't correspond to open object in process handle table.
- Handle Closed Prematurely: Handle was valid but since closed (
CloseHandle
/NtClose
); app attempts reuse (common programming error). - Incorrect Handle Value: App passed uninitialized variable, corrupted value, or non-handle value (e.g., pointer).
- Handle Used in Wrong Process Context (kernel callers): Kernel code uses user-mode handle in wrong process context.
- Object Type Mismatch (Less Common): API expects file handle, receives event handle (more likely
STATUS_OBJECT_TYPE_MISMATCH
).
Procmon Diagnostic Clues ("How to Corroborate"):
- Detail column: May show handle value used.
- Event Sequence: Trace handle value backward from failure. Look for original
CreateFile
/RegOpenKey
returning it. Look forCloseFile
/NtClose
for that handle before the failure. - Application Code Review: Often points to app handle management bugs.
- Stack Trace: Shows API call receiving invalid handle.
17. Result Value Name: INVALID PARAMETER
NTSTATUS Code:
0xC000000D
70Primary Originating Layer/System (Potential): I/O Manager, Object Manager, any Kernel Driver (FS, Reg, Net, Device), Third-Party Filter Driver.
Typical Operations: Almost any system call/IRP:
CreateFile
,ReadFile
,WriteFile
,DeviceIoControlFile
,RegSetValueEx
,NtCreateUserProcess
.Detailed Causation ("Why"):
- Incorrect Flags or Options: Invalid flag combination (e.g., mutually exclusive flags in
CreateFile
options). - Invalid Buffer Address/Alignment/Size: Buffer pointer NULL, invalid user address, misaligned for direct I/O. Size zero or inconsistent.
- Illegal Value for a Parameter: Out-of-range or undefined value for parameter expecting specific range/enum.
- Inconsistent Parameters: Parameters individually valid but inconsistent together (e.g.,
ReadFile
offset+length exceeds max file size). - Malformed Structures: Structure passed as parameter malformed/invalid data.
- Filter Driver Validation: Filter performs own validation, returns this if criteria unmet, even if underlying driver might accept (or fail differently).
- Incorrect Flags or Options: Invalid flag combination (e.g., mutually exclusive flags in
Procmon Diagnostic Clues ("How to Corroborate"):
- Detail column (Crucial): Shows parameters passed.
CreateFile
: Desired Access, ShareMode, Options, Disposition.DeviceIoControlFile
: IOCTL code, buffer lengths. Registry ops: data types/lengths. - Stack Trace: Helps identify component (OS API, driver, filter) performing validation and returning error.
- API Documentation: Refer to MS docs for specific operation (
NtCreateFile
WDK,CreateFileW
SDK) for valid parameter values/combinations. - Application Code Review: Often indicates bug in how caller forms request.
- Detail column (Crucial): Shows parameters passed.
18. Result Value Name: KEY DELETED
NTSTATUS Code:
0xC000017C
70Primary Originating Layer/System (Potential): Registry Manager (
NTOSKRNL.EXE
), Third-Party Registry Filter Driver.Typical Operations: Any registry op on key marked for deletion (except close handle):
RegQueryValue
,RegSetValue
,RegOpenKey
(on subkey).Detailed Causation ("Why"):
- Operation on Deleted Key: Attempted op (other than close) on registry key handle after key marked for deletion (
RegDeleteKey
/NtDeleteKey
). Key logically gone; most ops fail until last handle closed. - Filter Driver Intervention: Filter might manage key deletion customly or return this if policy dictates key effectively deleted.
- Operation on Deleted Key: Attempted op (other than close) on registry key handle after key marked for deletion (
Procmon Diagnostic Clues ("How to Corroborate"):
- Path column: Identifies registry key.
- Event Sequence: Look for preceding
RegDeleteKey
/NtDeleteKey
targeting same key or parent. - Stack Trace: Typically shows Configuration Manager (
Cmp*
functions inNTOSKRNL.EXE
) or registry filter driver returning error. - Status indicates key no longer valid for most operations.
19. Result Value Name: LOCAL DISCONNECT
NTSTATUS Code:
0xC000013B
70Primary Originating Layer/System (Potential): Network Stack Component (
TCPIP.SYS
,AFD.SYS
), Third-Party Network Filter Driver.Typical Operations: TCP Send, TCP Receive, TCP Disconnect (when local side initiates).
Detailed Causation ("Why"):
- Local Application Closed Socket: Local app explicitly closed socket (
closesocket()
/CloseHandle()
). Normal termination. - Local Stack Initiated Termination: Local TCP/IP stack terminated connection due to internal reason (local protocol error, policy enforced by local component/filter).
- Filter Driver Action: Third-Party Network Filter (WFP/NDIS) could programmatically terminate connection based on rules, causing this status for affected app.
- Local Application Closed Socket: Local app explicitly closed socket (
Procmon Diagnostic Clues ("How to Corroborate"):
- Path column: Shows source/destination IP/port of disconnected connection.
- Event Sequence: Look for preceding ops by local process indicating connection shutdown (TCP Disconnect op, app logic completion).
- Stack Trace: Can show
AFD.SYS
(app close) orTCPIP.SYS
. Filter driver visible if forcing disconnect. - Application Logs: May indicate why app closed connection.
20. Result Value Name: NAME NOT FOUND (Often Procmon display for STATUS_OBJECT_NAME_NOT_FOUND)
NTSTATUS Code:
0xC0000034
(STATUS_OBJECT_NAME_NOT_FOUND)70Primary Originating Layer/System (Potential): Object Manager (
NTOSKRNL.EXE
), File System Driver (e.g.,NTFS.SYS
), Registry Manager (NTOSKRNL.EXE
), Network Stack Component (TCPIP.SYS
viaAFD.SYS
for DNS), Third-Party Filter Driver (FS, Reg, Net).Typical Operations:
CreateFile
,OpenFile
,RegOpenKey
,RegQueryValue
(value name), GetHostByName/DNS query (UDP Send/Receive port 53).Detailed Causation ("Why"):
- Object Does Not Exist (Object Manager): Object Manager couldn't find named object (event, mutex, section, symlink) in its namespace.
- File or Directory Not Found (File System Driver): Specified file/dir name doesn't exist within parent directory (parent path itself valid).
- Registry Key or Value Not Found (Registry Manager): Specified key doesn't exist under parent, or value name doesn't exist under key.
- DNS Name Resolution Failure (Network Stack): For network ops resolving hostname, DNS server couldn't find A/AAAA record. Visible on UDP port 53 ops if network activity shown.77
- Filter Driver Hiding/Blocking: Third-party filter intercepts, returns this if policy dictates object hidden or access blocked as "not found" (e.g., security software cloaking files/keys).
- SMB Directory Cache Inconsistency: SMB redirector cache not updated after remote file creation, subsequent open fails with this.22
Procmon Diagnostic Clues ("How to Corroborate"):
- Path column: Shows full path/name sought. Check for typos, incorrect construction.
- Detail column for
CreateFile
: Check Disposition (e.g., ifOPEN_EXISTING
used for non-existent file). - Stack Trace: Obj Mgr (
ObpLookupObjectName
), FS driver (NtfsCommonCreate
), Reg Mgr (CmpDoOpen
). Filter driver high in stack is strong suspect. - Event Sequence: Check if file recently deleted/renamed. For DNS, examine query/response packets (Procmon/Wireshark).
- External Tools: Verify existence (Explorer,
dir
,regedit
,nslookup
). Checkfltmc.exe
for FS filters.
21. Result Value Name: NOT A DIRECTORY
NTSTATUS Code:
0xC0000103
70 (Note: AlsoSTATUS_PENDING
; Procmon disambiguates)Primary Originating Layer/System (Potential): File System Driver (e.g.,
NTFS.SYS
,FASTFAT.SYS
), Object Manager (certain namespace ops).Typical Operations:
CreateFile
(withFILE_DIRECTORY_FILE
option on a file, or opening file as directory for enumeration),QueryDirectoryFile
(on a file).Detailed Causation ("Why"):
- Operation Requires Directory, Target is File: Operation valid only for directories (enumerate, create file within with certain flags) attempted on a file.
- Path Incorrectly Identifies File as Directory Segment: E.g.,
C:\Path\To\File.txt\NewFile.txt
fails becauseFile.txt
isn't a directory.
Procmon Diagnostic Clues ("How to Corroborate"):
- Path column: Shows target path. Verify if component identified as directory is one.
- Detail column for
CreateFile
: Check Options field for flags likeFILE_DIRECTORY_FILE
/FILE_NON_DIRECTORY_FILE
. - External Tools: Use Explorer or
dir
to check object type at path. - Stack Trace: Usually points to FS driver.
22. Result Value Name: NOT SUPPORTED
NTSTATUS Code:
0xC00000BB
70Primary Originating Layer/System (Potential): Any Kernel Driver (FS, Net, Device), I/O Manager, Third-Party Filter Driver.
Typical Operations:
DeviceIoControlFile
(unsupported IOCTLs),FsControlFile
(unsupported FSCTLs),SetInformationFile
/QueryInformationFile
(unsupportedFileInformationClass
),CreateFile
(unsupported flags/options for device type).Detailed Causation ("Why"):
- Unsupported Functionality: Requested operation or specific feature/option not implemented/supported by target device/driver/FS.
- IOCTL/FSCTL: Control code in
DeviceIoControlFile
/FsControlFile
not recognized/handled by target driver. - FileInformationClass:
FILE_INFORMATION_CLASS
enum value used in query/set file info not supported by FS for that object type. - Unsupported Flags/Options:
CreateFile
flags meaningless/unsupported for target device type (e.g., file flags on raw device). - Operation Not Allowed on Target: Operation valid generally but not for specific object/device type (e.g., set EOF on directory).
- Filter Driver Rejection: Third-party filter intercepts, returns this if it doesn't implement/allow that operation/variation, even if underlying native component supports it.
Procmon Diagnostic Clues ("How to Corroborate"):
- Detail column (Very important):
DeviceIoControlFile
/FsControlFile
shows IOCTL/FSCTL code (lookup in WDK/docs).SetInformationFile
/QueryInformationFile
showsFileInformationClass
.CreateFile
shows Options, Desired Access. - Stack Trace: Identifies driver/system component returning status. Filter high in stack is likely source.
- API/Driver Documentation: Consult docs for target device/driver/FS to verify if operation/IOCTL/FileInformationClass supported.
- Detail column (Very important):
23. Result Value Name: OBJECT NAME COLLISION
NTSTATUS Code:
0xC0000035
70Primary Originating Layer/System (Potential): Object Manager (
NTOSKRNL.EXE
), File System Driver, Registry Manager, Third-Party Filter Driver.Typical Operations:
CreateFile
(withCREATE_NEW
disposition),RegCreateKeyEx
(withREG_CREATED_NEW_KEY
intended),NtCreateNamedPipeFile
,NtCreateMailslotFile
.Detailed Causation ("Why"):
- Object Already Exists (and overwrite not allowed): Attempt to create object (file, dir, key, named pipe, mailslot) with specific name, but object with same name already exists, and creation disposition disallowed overwrite/open existing (e.g.,
CreateFile
withCREATE_NEW
fails if file exists). - Case Insensitivity: NTFS lookups case-insensitive by default but preserve case. Creating
myfile.txt
collides ifMyFile.TXT
exists. - Filter Driver Logic: Filter might enforce own naming policies or manage virtualized namespace, returning this if create violates rules.
- Object Already Exists (and overwrite not allowed): Attempt to create object (file, dir, key, named pipe, mailslot) with specific name, but object with same name already exists, and creation disposition disallowed overwrite/open existing (e.g.,
Procmon Diagnostic Clues ("How to Corroborate"):
- Path column: Shows name of object attempted creation.
- Detail column for
CreateFile
: Check Disposition. IfCREATE_NEW
(1), error expected if file exists.CREATE_ALWAYS
(2) should overwrite;OPEN_ALWAYS
(4) should open if exists or create if not. - External Tools: Verify if object with same name (case-insensitively for files/dirs) exists at path (Explorer,
dir
,regedit
). - Event Sequence: Look for prior ops creating conflicting object.
24. Result Value Name: OBJECT PATH NOT FOUND
NTSTATUS Code:
0xC000003A
70Primary Originating Layer/System (Potential): Object Manager (
NTOSKRNL.EXE
), File System Driver, Registry Manager.Typical Operations:
CreateFile
,OpenFile
,RegOpenKey
.Detailed Causation ("Why"):
- Intermediate Directory/Key Missing: Component (directory/key) in path leading to final object name does not exist. E.g., for
C:\Dir1\Dir2\File.txt
, occurs ifDir1
exists butDir2
does not. Distinct fromSTATUS_OBJECT_NAME_NOT_FOUND
(path prefix exists, final name doesn't). - Root of Path Invalid: Path root invalid (e.g., access file on non-existent drive
X:\File.txt
).
- Intermediate Directory/Key Missing: Component (directory/key) in path leading to final object name does not exist. E.g., for
Procmon Diagnostic Clues ("How to Corroborate"):
- Path column: Carefully examine full path.
- External Tools: Manually navigate path component by component (Explorer,
cd
,regedit
) to find missing part. - Stack Trace: Points to Object Manager (namespace paths), FS driver (file paths), or Registry Manager (reg paths).
25. Result Value Name: PENDING
NTSTATUS Code:
0x00000103
70 (Informational/Success by NT_SUCCESS macro)Primary Originating Layer/System (Potential): I/O Manager, various Kernel Drivers (FS, Net, Device), Third-Party Filter Driver.
Typical Operations: Common with async I/O:
ReadFile
,WriteFile
,DeviceIoControlFile
, TCP Connect, TCP Send, TCP Receive,NtWaitForSingleObject
(with non-zero timeout).Detailed Causation ("Why"):
- Asynchronous Operation Initiated: Requested I/O op successfully initiated but not yet completed.19 Calling thread can continue while op proceeds in background. I/O Mgr/driver queued op, will signal completion later (event, APC, completion port).
- Normal for Asynchronous I/O: Standard/expected return for async I/O (handle opened with
FILE_FLAG_OVERLAPPED
, sockets). Not an error. - Filter Driver Behavior: Filter intercepting async IRP, needing own lengthy async processing, might return
STATUS_PENDING
and complete IRP later.
Procmon Diagnostic Clues ("How to Corroborate"):
- Event Sequence (Crucial): Look for corresponding completion event later in trace for same operation (match file handle, socket context, IRP pointer if advanced output/symbols enabled). Completion event has actual final Result (e.g.,
SUCCESS
,END_OF_FILE
, error code) and bytes transferred (Detail for Read/Write). Completion often from "System" process (PID 4) or DPC/ISR context. - Duration of PENDING op: Usually very short (just queuing). True duration is time between PENDING and completion event.
- Detail column: May show flags indicating async I/O.
- If completion event never seen, might indicate hung op or capture stopped too soon.
- Event Sequence (Crucial): Look for corresponding completion event later in trace for same operation (match file handle, socket context, IRP pointer if advanced output/symbols enabled). Completion event has actual final Result (e.g.,
26. Result Value Name: PORT UNREACHABLE
NTSTATUS Code:
0xC000023F
70Primary Originating Layer/System (Potential): Network Stack Component (
TCPIP.SYS
for UDP), Third-Party Network Filter Driver.Typical Operations: UDP Send.
Detailed Causation ("Why"):
- No UDP Listener on Remote Port: UDP datagram sent to remote port with no listening app. Remote host stack may respond with ICMP "Port Unreachable". Local
TCPIP.SYS
receives ICMP, translates to this status for sender. - Remote Firewall Blocking UDP Port: Remote firewall blocks UDP port, configured to send ICMP Port Unreachable.
- Filter Driver Action: Local/intermediate network filter could potentially generate/simulate condition.
- No UDP Listener on Remote Port: UDP datagram sent to remote port with no listening app. Remote host stack may respond with ICMP "Port Unreachable". Local
Procmon Diagnostic Clues ("How to Corroborate"):
- Path column: Shows destination IP/port for UDP Send.
- Event Sequence: Look for corresponding incoming ICMP message in network trace (Wireshark). Procmon doesn't usually show ICMP directly unless part of TCP/UDP op result.
- External Tools: Verify expected UDP service listening on remote host/port. UDP connectionless; relies on ICMP feedback.
- Stack Trace: Usually
TCPIP.SYS
if standard ICMP-indicated unreachability.
27. Result Value Name: PRIVILEGE NOT HELD
NTSTATUS Code:
0xC0000061
70Primary Originating Layer/System (Potential): Security Reference Monitor (SRM in
NTOSKRNL.EXE
), various kernel components checking specific privileges.Typical Operations: Ops requiring specific admin/system privileges:
NtOpenFile
withFILE_FLAG_BACKUP_SEMANTICS
(SeBackupPrivilege
/SeRestorePrivilege
),NtShutdownSystem
(SeShutdownPrivilege
),NtLoadDriver
(SeLoadDriverPrivilege
), accessing SACLs (SeSecurityPrivilege
).Detailed Causation ("Why"):
- Missing Required Privilege: Caller process access token lacks specific privilege required by operation. Windows uses privileges for sensitive system-wide ops beyond object ACLs.28
- Privilege Exists but Not Enabled: Process has privilege in token but not enabled (some need explicit enable via
AdjustTokenPrivileges
).
Procmon Diagnostic Clues ("How to Corroborate"):
- Detail column: May sometimes provide hints, but specific privilege often implicit.
- Stack Trace: Can show
SePrivilegeCheck
or otherSe*
functions inNTOSKRNL.EXE
. - Process Token Information: Use Process Explorer (Properties -> Security tab) to view process privileges and status (enabled/disabled).
- API Documentation: Docs for failing NtXxx/Win32 API often list required privileges.
- Clear security failure; caller not authorized for specific system-level action.
28. Result Value Name: REGISTRY CORRUPT
NTSTATUS Code:
0xC000014C
70Primary Originating Layer/System (Potential): Registry Manager (
NTOSKRNL.EXE
).Typical Operations: Any registry op (
RegOpenKey
,RegQueryValue
,RegCreateKey
), esp. during boot hive loading, or accessing specific hive.Detailed Causation ("Why"):
- Hive File Corruption: On-disk registry hive file (SYSTEM, SOFTWARE, SAM, NTUSER.DAT) physically corrupted (disk errors, unsafe shutdown, malware).
- In-Memory Corruption: In-memory image of hive corrupted.
- Failed Recovery: Configuration Manager attempted hive recovery using log file (.LOG1, .LOG2) but failed.
- Very serious error, often leads to instability/unbootable system if critical hive affected.25
Procmon Diagnostic Clues ("How to Corroborate"):
- Path column: May indicate specific reg path accessed when corruption detected. If during boot logging, might relate to core hive loading.
- System Event Log: Check System log for errors from "Microsoft-Windows-Registry-TrE" or similar, potentially detailing corrupted hive/recovery attempts.
- External Tools: WinRE might allow
CHKDSK
/System Restore. Offline registry editors/analysis tools for non-booting systems. - Stack Trace: Points to Configuration Manager functions (
Cmp*
routines inNTOSKRNL.EXE
).
29. Result Value Name: REMOTE DISCONNECT
NTSTATUS Code:
0xC000013C
70Primary Originating Layer/System (Potential): Network Stack Component (
TCPIP.SYS
,AFD.SYS
), Third-Party Network Filter Driver.Typical Operations: TCP Send, TCP Receive (when remote side initiates disconnect).
Detailed Causation ("Why"):
- Remote Application Closed Socket: Remote app explicitly closed its socket. Normal remote termination.
- Remote Stack Initiated Termination: Remote TCP/IP stack initiated termination (sent FIN/RST). Due to remote app crash, remote system shutdown, remote network timeout, remote protocol error.
- Network Interruption Closer to Remote: Network device closer to remote (firewall, NAT) terminated session.
- Filter Driver Action (Remote or Intercepting): Filter on remote side causing drop, or intermediate network device filter resetting connection, manifests as remote disconnect locally.
Procmon Diagnostic Clues ("How to Corroborate"):
- Path column: Shows source/destination IP/port of disconnected connection.
- Event Sequence: Look for last successful data exchange before status.
- Stack Trace: Can show
AFD.SYS
/TCPIP.SYS
processing disconnect notification. - Network Trace (Wireshark): Concurrent capture shows TCP FIN/RST received from remote triggering status.
- Remote System Logs: Logs on remote server/app might indicate why it closed connection.
30. Result Value Name: REPARSE
NTSTATUS Code:
0x00000104
70 (Informational/Success by NT_SUCCESS macro)Primary Originating Layer/System (Potential): Object Manager (
NTOSKRNL.EXE
), File System Driver (e.g.,NTFS.SYS
), Third-Party File System Filter Driver.Typical Operations:
CreateFile
,OpenFile
(any op involving path parsing).Detailed Causation ("Why"):
- Symbolic Link/Junction/Mount Point Encountered: Not an error. During path resolution, Object Manager or FS Driver encountered reparse point (symlink, junction, mount point, file with special reparse tag like HSM, OneDrive placeholders, deduplication, WCI).21
- Redirection Directive:
STATUS_REPARSE
instructs I/O Manager/filter to re-evaluate operation, typically with modified path (symlink target) or allow specific driver (owning tag) to handle I/O.74 - File System Filter Driver Redirection (CRITICAL): Many filters use reparse points/status extensively.64 HSM (stub file -> filter retrieves from slow storage -> reissue open). File Virtualization/Sync (OneDrive placeholders -> filter downloads/hydrates). Deduplication (points to common chunks).
- IO Manager Handling: If known tag (symlink), I/O Mgr substitutes path and retries. If filter tag, filter's handler invoked.
Procmon Diagnostic Clues ("How to Corroborate"):
- Event Sequence (Crucial): Look for subsequent
CreateFile
immediately following REPARSE result. NewCreateFile
often has different Path (resolved target), Result oftenSUCCESS
or other status. - Detail column of REPARSE
CreateFile
: With "Enable Advanced Output", might show reparse tag value (Tag: Symbolic Link, Mount Point, custom value). - Stack Trace: Can show
IopParseDevice
/ObpLookupObjectName
(OS handled). If filter driver (wcifs.sys
,storqosflt.sys
,rdbss.sys
,cldflt.sys
, third-party AV/HSM/sync) returning/handling, its module in stack. - External Tools:
fsutil reparsepoint query <path>
shows reparse data.dir /AL
shows symlinks/junctions.
- Event Sequence (Crucial): Look for subsequent
31. Result Value Name: SHARING VIOLATION
NTSTATUS Code:
0xC0000043
70Primary Originating Layer/System (Potential): File System Driver (e.g.,
NTFS.SYS
), Third-Party File System Filter Driver.Typical Operations:
CreateFile
,OpenFile
.Detailed Causation ("Why"):
- Incompatible Share Modes (CRITICAL): Attempt to open file with
ShareMode
(e.g.,FILE_SHARE_READ
,FILE_SHARE_WRITE
) incompatible with how file already opened by another handle (same/different process). Example: Proc A opens exclusive (ShareMode=0); Proc B attempts any open -> fails. Example: Proc A opens withShareMode=FILE_SHARE_READ
,DesiredAccess=GENERIC_WRITE
; Proc B attemptsDesiredAccess=GENERIC_READ
-> fails. Rule: New open's access must be permitted by all existing openers' share modes, AND new open's share mode must permit all existing openers' access modes. - Filter Driver Holding File Open (CRITICAL): Third-party FS filter (AV, backup, indexer) might have file open, potentially with restrictive share mode, while processing. Very common cause of unexpected violations. Filter's open may be brief but conflict.6
- Desired Access vs. Existing Open: Attempting write access when another handle open without
FILE_SHARE_WRITE
. Attempting delete access when another handle open withoutFILE_SHARE_DELETE
.
- Incompatible Share Modes (CRITICAL): Attempt to open file with
Procmon Diagnostic Clues ("How to Corroborate"):
- Detail column for failing
CreateFile
: Shows requestedDesired Access
andShareMode
. - Event Sequence & Filtering: Filter Procmon for file
Path
. Look for all prior successfulCreateFile
ops on this path by any process; examine theirShareMode
. Identify processes/handles currently holding file open (Procmon Find Handle/DLL, Process Explorer, Resource Monitor). - Stack Trace: Usually FS driver (
NTFS.SYS
,FASTFAT.SYS
) returns error. Critically, if filter holding file open conflictingly, its own open ops might be visible prior. Filter might also directly returnSTATUS_SHARING_VIOLATION
based on policy or if high in stack when violation returned. - Temporarily disabling security/backup software can help isolate cause.
- Detail column for failing
32. Result Value Name: SUCCESS
NTSTATUS Code:
0x00000000
70Primary Originating Layer/System (Potential): I/O Manager, Object Manager, FS Driver, Reg Mgr, Net Stack, any other driver, Third-Party Filter Driver (if allows pass-through, completes own op successfully, or uses success-equivalent bypass like
STATUS_CALLBACK_BYPASS
57).Typical Operations: Virtually all operations can result in SUCCESS (
CreateFile
,ReadFile
,WriteFile
,CloseFile
,RegOpenKey
,RegQueryValue
, TCP Connect, Process Create).Detailed Causation ("Why"):
- Operation Completed as Requested: Kernel component/driver performed op successfully. Conditions met: object found, rights granted, no sharing conflicts, valid params, resources available, device state ok.
- For
CreateFile
: File/dir opened/created per Desired Access, ShareMode, Disposition. Detail shows outcome (Disposition: OPENED, CREATED, OVERWRITTEN).17 - For
ReadFile
/WriteFile
: Data transferred. Detail shows Offset, Length requested, I/O Flags. Bytes transferred inIoStatus.Information
(matches Length for success unless EOF/BUFFER_OVERFLOW). - For Registry ops: Key opened, value read/written/deleted. Detail shows data for queries/sets.
- For Network ops: TCP connection established, data sent/received.
- For Process/Thread ops: Process/thread created.
- Filter Driver Context: If filters present: Filter pre-op returned success status (
FLT_PREOP_SUCCESS_*
), allowing op to proceed/complete successfully below. Filter post-op observed success from below, returned success. Filter handled op itself, returnedSTATUS_SUCCESS
or equivalent (STATUS_CALLBACK_BYPASS
for some reg filter post-notifications57).
Procmon Diagnostic Clues ("How to Corroborate"):
- Detail column: Confirms specifics (access granted, data read, connection established).
- Duration: Typically low for simple/quick ops. Higher duration indicates significant work (large read, slow network) or latency from stack components (including filters).
- Stack Trace: Shows execution path leading to success. Useful for understanding component involvement (including filters) even in success cases.
- Event Sequence: Successful ops enable subsequent dependent ops (e.g., successful
CreateFile
followed byReadFile
/WriteFile
on handle).
33. Result Value Name: TIMEOUT
NTSTATUS Code:
0x00000102
70Primary Originating Layer/System (Potential): Network Stack Component (
TCPIP.SYS
,AFD.SYS
), I/O Manager (ops with timeouts), various Device Drivers, Third-Party Filter Driver (esp. net/FS filters imposing time limits or causing delays).Typical Operations: TCP Connect, TCP Send, TCP Receive,
NtWaitForSingleObject
(and related waits),DeviceIoControlFile
(if IOCTL/driver implements timeout),ReadFile
/WriteFile
(some devices/flags).Detailed Causation ("Why"):
- Network Operation Timeout: TCP Connect: No response (SYN-ACK) from remote within retransmission timeout (remote down, connectivity issue, firewall silently dropping packets). TCP Send/Receive: No ACK for sent data, or no expected data received within protocol/app timeout.
- Wait Operation Timeout: Wait function (
NtWaitForSingleObject
) expired because timeout interval elapsed before object(s) signaled. - Device I/O Timeout: Device driver failed to complete I/O within prescribed limit (non-responsive device, hardware errors, driver bug).
- Filter Driver Induced Latency (CRITICAL): Third-party filter (FS, net, etc.) performing lengthy processing (deep inspection, encryption, slow remote lookups) adds significant latency. If latency exceeds timeout (app, I/O Mgr, higher driver), op may complete with
STATUS_TIMEOUT
.6 - Application-Defined Timeout: App implements own timeout, aborts op. May manifest differently unless app cancels underlying I/O resulting in this status.
Procmon Diagnostic Clues ("How to Corroborate"):
- Path column: Shows destination IP/port (network), target file/device.
- Duration column: Duration of timed-out op approx equals timeout value. Examine durations of preceding related ops; long durations in underlying calls (filters?) can cause higher-level timeout.
- Event Sequence: TCP Connect: Look for
TCP:Retransmit
events (Procmon/Wireshark) before TIMEOUT. Look for other network/device problems (HOST_UNREACHABLE
,DEVICE_NOT_READY
). - Stack Trace: Indicates component reporting timeout.
TCPIP.SYS
-> network-level timeout. Higher up -> app/framework timeout. Filter presence in stack of timed-out or preceding ops significant if involved in long processing. - External Tools: Network diagnostics (
ping
,tracert
, Wireshark). Device diagnostics/system event logs.
III. Summary Table of Key Procmon Result Values
Result Name | NTSTATUS Code | Primary Originating Layer(s) | Typical Operation Categories | Concise Meaning / Predominant Cause Category |
---|---|---|---|---|
SUCCESS | 0x00000000 |
I/O Mgr, Obj Mgr, FS Driver, Net Stack, Reg Mgr, Filter Driver | File, Registry, Network, Process | Operation completed successfully. |
ACCESS DENIED | 0xC0000022 |
Sec Ref Mon, FS Driver, Reg Mgr, Third-Party Filter Driver | File, Registry, Process, Network | Insufficient rights or privilege; Frequently due to filter driver policy. |
ADDRESS ALREADY EXISTS | 0xC000020A |
Net Stack (TCPIP.SYS, AFD.SYS), Third-Party Net Filter | Network (Bind) | Requested local network address/port is already in use. |
BUFFER OVERFLOW | 0x80000005 |
I/O Mgr, Kernel Drivers, Third-Party Filter Driver | File, Registry, Network (Query) | (Warning) Data returned, but buffer too small for all of it; partial data may be present. Common for variable-length queries. |
BUFFER TOO SMALL | 0xC0000023 |
I/O Mgr, Kernel Drivers, Third-Party Filter Driver | File, Registry, Network (Query) | (Error) Buffer too small to return any/minimal data; required size often indicated. |
CONNECTION REFUSED | 0xC0000236 |
Net Stack (TCPIP.SYS), Third-Party Net Filter | Network (TCP Connect) | Remote host actively refused connection (no listener or firewall RST). |
DELETE PENDING | 0xC0000056 |
FS Driver, Third-Party FS Filter | File | Operation on a file already marked for deletion; actual delete on last handle close. |
DEVICE BUSY | 0x80000011 |
Device Driver, I/O Mgr, Third-Party Filter Driver | File (Device I/O), Device | (Warning) Device is temporarily unable to process the request; often due to exclusive use or overload. |
DIRECTORY NOT EMPTY | 0xC0000101 |
FS Driver, Third-Party FS Filter | File (Directory Delete) | Attempt to delete a directory that still contains files or subdirectories. |
DISK CORRUPT ERROR | 0xC0000032 |
FS Driver, Storage Driver | File | File system structure on disk is corrupt and unusable. |
END OF FILE | 0xC0000011 |
FS Driver, I/O Mgr | File (Read) | Read operation reached or attempted to read beyond the end of the file. Normal for sequential reads. |
FILE LOCKED WITH ONLY READERS | 0x0000012A |
FS Driver, Third-Party FS Filter | File (Lock) | (Informational) Lock successful, but file already locked by others for read access. |
FILE LOCKED WITH WRITERS | 0x0000012B |
FS Driver, Third-Party FS Filter | File (Lock) | (Informational) Lock successful, but file already locked by others allowing write access. |
FILE LOCK CONFLICT | 0xC0000054 |
FS Driver, Third-Party FS Filter | File (Lock, Read/Write) | Requested byte-range lock conflicts with an existing lock. |
HOST UNREACHABLE | 0xC000023D |
Net Stack (TCPIP.SYS), Third-Party Net Filter | Network (Connect, Send) | No network route to the destination host or ARP failure; Can be due to firewall silently dropping packets. |
INSUFFICIENT RESOURCES | 0xC000009A |
Mem Mgr, I/O Mgr, Drivers, Third-Party Filter Driver | File, Registry, Network, Process | System lacks resources (e.g., kernel memory pool, handles); Can be due to filter driver leaks/consumption. |
INVALID HANDLE | 0xC0000008 |
Obj Mgr, I/O Mgr, Drivers | File, Registry, Process, Generic | Handle provided is not valid, closed, or of wrong type. |
INVALID PARAMETER | 0xC000000D |
I/O Mgr, Obj Mgr, Any Driver, Third-Party Filter Driver | File, Registry, Network, Process | Invalid flags, buffer, value, or inconsistent parameters passed to API; Filters may have stricter validation. |
KEY DELETED | 0xC000017C |
Reg Mgr, Third-Party Reg Filter | Registry | Operation on a registry key already marked for deletion. |
LOCAL DISCONNECT | 0xC000013B |
Net Stack (TCPIP.SYS, AFD.SYS), Third-Party Net Filter | Network (TCP Send/Receive) | Local application/stack initiated connection termination; Can be filter driver action. |
NAME NOT FOUND | 0xC0000034 |
Obj Mgr, FS Driver, Reg Mgr, Net Stack (DNS), Third-Party Filter Driver | File, Registry, Network | Object/file/key/host not found; Can be filter driver hiding/blocking or failed DNS. |
NOT A DIRECTORY | 0xC0000103 |
FS Driver, Obj Mgr | File | Operation requires a directory, but target is a file. (Note: 0xC0000103 also used for STATUS_PENDING). |
NOT SUPPORTED | 0xC00000BB |
Any Driver, I/O Mgr, Third-Party Filter Driver | File, Registry, Network, Device | Requested operation or parameter is not supported by target; Filters may not support all underlying operations. |
OBJECT NAME COLLISION | 0xC0000035 |
Obj Mgr, FS Driver, Reg Mgr, Third-Party Filter Driver | File, Registry (Create) | Attempt to create an object that already exists, and overwrite not allowed. |
OBJECT PATH NOT FOUND | 0xC000003A |
Obj Mgr, FS Driver, Reg Mgr | File, Registry | An intermediate directory/key in the specified path does not exist. |
PENDING | 0x00000103 |
I/O Mgr, Drivers, Third-Party Filter Driver | File, Network (Async I/O) | (Informational) Asynchronous operation initiated, completion will occur later. |
PORT UNREACHABLE | 0xC000023F |
Net Stack (TCPIP.SYS), Third-Party Net Filter | Network (UDP Send) | No service listening on remote UDP port (ICMP Port Unreachable received). |
PRIVILEGE NOT HELD | 0xC0000061 |
Sec Ref Mon | File, Registry, Process, System | Caller lacks a required privilege for the operation (e.g., SeBackupPrivilege ). |
REGISTRY CORRUPT | 0xC000014C |
Reg Mgr | Registry | Registry hive file is corrupt on disk or in memory. Serious system error. |
REMOTE DISCONNECT | 0xC000013C |
Net Stack (TCPIP.SYS, AFD.SYS), Third-Party Net Filter | Network (TCP Send/Receive) | Remote peer initiated connection termination (normal close or error). |
REPARSE | 0x00000104 |
Obj Mgr, FS Driver, Third-Party Filter Driver | File (Path Parsing) | (Informational) Reparse point encountered (symlink, junction, filter tag); operation needs re-evaluation/redirection. |
SHARING VIOLATION | 0xC0000043 |
FS Driver, Third-Party Filter Driver | File (Open) | File open request conflicts with existing open handle's sharing modes; Often caused by filter driver holding file open. |
TIMEOUT | 0x00000102 |
Net Stack, I/O Mgr, Device Drivers, Third-Party Filter Driver | Network (Connect/Send/Receive), Wait Ops, Device I/O | Operation did not complete within timeout period; Can be network issue, device non-response, or latency induced by filter driver processing. |
Note: This table summarizes key results. Third-party filter drivers are a frequent factor, especially for ACCESS DENIED, SHARING VIOLATION, INSUFFICIENT RESOURCES, REPARSE, and TIMEOUT results. Refer to the detailed catalog entries for specifics. |
Works Cited
- Process Monitor (ProcMon) Tutorial - David Maiolo, accessed May 13, 2025, https://www.davidmaiolo.com/2018/03/12/process-monitor-procmon-tutorial/
- 2295: Collecting Process Monitor log - Acronis Support Portal, accessed May 13, 2025, https://care.acronis.com/s/article/Collecting-Process-Monitor-Log?language=en_US
- Use Process Monitor to create real-time event logs - ThreatDown Support, accessed May 13, 2025, https://support.threatdown.com/hc/en-us/articles/4413798945811-Use-Process-Monitor-to-create-real-time-event-logs
- Process Monitor (ProcMon) installation and usage guide - Thomson Reuters, accessed May 13, 2025, https://www.thomsonreuters.com/content/helpandsupp/en-us/help/gofileroom/get-started/set-up/process-monitor-procmon-installation.html
- Process Monitor X - Extended ProcMon-like tool based on Event ..., accessed May 13, 2025, https://www.edugeek.net/forums/topic/172704-process-monitor-x-extended-procmon-like-tool-based-on-event-tracing-for-windows/
- Minifilter Diagnostics | Microsoft Learn, accessed May 13, 2025, https://learn.microsoft.com/en-us/windows-hardware/test/assessments/minifilter-diagnostics
- How To Use Procmon Track Low Level Driver - 路遥之家, accessed May 13, 2025, https://crushonme.github.io/wiki/How-To-Use-Procmon-Track-Low-Level-Driver/
- Registry Filter Drivers (Part 1) - Jeremy Hurren, accessed May 13, 2025, https://lordjeb.com/2014/01/14/registry-filter-drivers-part-1/
- Process Monitor - Documentation & Help, accessed May 13, 2025, https://documentation.help/Process-Monitor/documentation.pdf
- Design issues of modern EDRs: bypassing ETW-based solutions - BINARLY, accessed May 13, 2025, https://www.binarly.io/blog/design-issues-of-modern-edrs-bypassing-etw-based-solutions
- What is IRP in Computing? (I/O Request Packet) - 60sec.site, accessed May 13, 2025, https://60sec.site/terms/what-is-irp-in-computing-io-request-packet
- What is the difference between an IOCTL and an IRP - Stack Overflow, accessed May 13, 2025, https://stackoverflow.com/questions/18901467/what-is-the-difference-between-an-ioctl-and-an-irp
- Completing I/O Requests - TU Chemnitz, accessed May 13, 2025, https://www-user.tu-chemnitz.de/~heha/oney_wdm/ch05d.htm
- Article - TDI Overview - CodeMachine, accessed May 13, 2025, https://codemachine.com/articles/tdi_overview.html
- What The Filter (WTF) is Going on With Windows Filtering Platform (WFP)? - Zero Networks, accessed May 13, 2025, https://zeronetworks.com/blog/wtf-is-going-on-with-wfp
- Network Sniffing on Microsoft Windows - In Detail, accessed May 13, 2025, http://gary-nebbett.blogspot.com/2018/06/gary-gary-2-2132-2018-06-06t153500z.html
- Procmon Basics - Concurrency, accessed May 13, 2025, https://concurrency.com/blog/procmon-basics/
- ntoskrnl.exe - Wikipedia, accessed May 13, 2025, https://en.wikipedia.org/wiki/Ntoskrnl.exe
- Use NTSTATUS Values - Windows drivers | Microsoft Learn, accessed May 13, 2025, https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/using-ntstatus-values
- "STATUS_SHARING_VIOLATION" error message when you try to open a highly fragmented file on a computer that is running Windows 7 or Windows Server 2008 R2 - Microsoft Support, accessed May 13, 2025, https://support.microsoft.com/en-us/topic/-status-sharing-violation-error-message-when-you-try-to-open-a-highly-fragmented-file-on-a-computer-that-is-running-windows-7-or-windows-server-2008-r2-be899c3b-8c5a-c883-ce0d-055d258a9178
- ntstatus.h - CodeMachine, accessed May 13, 2025, https://codemachine.com/downloads/win10.1803/ntstatus.h
- "STATUS_OBJECT_NAME_NOT_FOUND" error message when you open a newly-created file in a shared folder in Windows 7 or in Windows Server 2008 R2 - Microsoft Support, accessed May 13, 2025, https://support.microsoft.com/en-us/topic/-status-object-name-not-found-error-message-when-you-open-a-newly-created-file-in-a-shared-folder-in-windows-7-or-in-windows-server-2008-r2-111de51c-ea2e-8c68-3ce9-9185a93bb8b8
- go-ntdll/ntstatus_generated.go at master - GitHub, accessed May 13, 2025, https://github.com/hillu/go-ntdll/blob/master/ntstatus_generated.go
- Unable to delete registry key that is causing problems with Windows Installer on Win 7, accessed May 13, 2025, https://answers.microsoft.com/en-us/windows/forum/all/unable-to-delete-registry-key-that-is-causing/a81adda2-8e17-4cb1-94ee-56ab095ab2a6
- Windows 10 error code 0xc000014c - Microsoft Community, accessed May 13, 2025, https://answers.microsoft.com/en-us/windows/forum/all/windows-10-error-code-0xc000014c/689520d8-c234-43a8-9c0e-4fcc79cc81ec
- NTSTATUS codes - CSDN博客, accessed May 13, 2025, https://blog.csdn.net/weixin_30485799/article/details/94858796
- ntstatus package - github.com/oiweiwei/go-msrpc/msrpc/erref/ntstatus - Go Packages, accessed May 13, 2025, https://pkg.go.dev/github.com/oiweiwei/go-msrpc/msrpc/erref/ntstatus
- Forward the read request from raw pdo - #4 by Tim_Roberts - OSR Developer Community, accessed May 13, 2025, https://community.osr.com/t/forward-the-read-request-from-raw-pdo/54088/4
- How to Fix Failed NTFS.sys in Windows 10 - EaseUS Software, accessed May 13, 2025, https://www.easeus.com/resource/fix-ntfs.sys-missing-or-corrupt.html
- How do I fix blue screen Stop Code NTFS FILE SYSTEM : r/Windows10 - Reddit, accessed May 13, 2025, https://www.reddit.com/r/Windows10/comments/kegdrs/how_do_i_fix_blue_screen_stop_code_ntfs_file/
- BSOD What Failed NTFS.SYS - Microsoft Community, accessed May 13, 2025, https://answers.microsoft.com/en-us/windows/forum/all/bsod-what-failed-ntfssys/63d790bc-15b4-40ea-a424-8a44897be576
- [Fixed] FAT FILE SYSTEM [fastfat.sys] BSoD Error on Windows - Stellar Data Recovery, accessed May 13, 2025, https://www.stellarinfo.com/blog/windows-10-fat-file-system-fastfat-bsod-fix/
- Bug Check Code Reference - Windows drivers - Learn Microsoft, accessed May 13, 2025, https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-code-reference2
- using-ntstatus-values.md - GitHub, accessed May 13, 2025, https://github.com/MicrosoftDocs/windows-driver-docs/blob/staging/windows-driver-docs-pr/kernel/using-ntstatus-values.md
- Windows-driver-samples/filesys/cdfs/fsctrl.c at main - GitHub, accessed May 13, 2025, https://github.com/Microsoft/Windows-driver-samples/blob/master/filesys/cdfs/fsctrl.c
- Windows-driver-samples/filesys/cdfs/cachesup.c at main - GitHub, accessed May 13, 2025, https://github.com/microsoft/Windows-driver-samples/blob/master/filesys/cdfs/cachesup.c
- "Error 720: Can't connect to a VPN Connection" when you try to establish a VPN connection - Windows Server | Microsoft Learn, accessed May 13, 2025, https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/troubleshoot-error-720-when-establishing-a-vpn-connection
- Samba4 join NT_STATUS_CONNECTION_REFUSED error - Server Fault, accessed May 13, 2025, https://serverfault.com/questions/900576/samba4-join-nt-status-connection-refused-error
- making TDI (tcp) Calls from a scsi miniport at boot time - OSR Developer Community, accessed May 13, 2025, https://community.osr.com/t/making-tdi-tcp-calls-from-a-scsi-miniport-at-boot-time/33119
- NTSTATUS - MS-ERREF - Learn Microsoft, accessed May 13, 2025, https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/87fba13e-bf06-450e-83b1-9241dc81e781
- STATUS_REMOTE_DISCONNECT - Free Pascal, accessed May 13, 2025, https://www.freepascal.org/daily/packages/winunits-jedi/jwantstatus/status_remote_disconnect.html
- STATUS_LOCAL_DISCONNECT - Free Pascal, accessed May 13, 2025, https://www.freepascal.org/daily/packages/winunits-jedi/jwantstatus/status_local_disconnect.html
- STATUS_ADDRESS_ALREADY, accessed May 13, 2025, https://www.freepascal.org/daily/packages/winunits-jedi/jwantstatus/status_address_already_exists.html
- NPF functions - WinPcap, accessed May 13, 2025, https://www.winpcap.org/docs/docs_41b5/html/group__NPF__code.html
- drivers/storage/class/classpnp/class.c File Reference - ReactOS, accessed May 13, 2025, https://doxygen.reactos.org/d9/dd9/drivers_2storage_2class_2classpnp_2class_8c.html
- Microsoft Windows library files - Wikipedia, accessed May 13, 2025, https://en.wikipedia.org/wiki/Microsoft_Windows_library_files
- Windows API System Calls : r/SentinelOneXDR - Reddit, accessed May 13, 2025, https://www.reddit.com/r/SentinelOneXDR/comments/1g7cw4p/windows_api_system_calls/
- How to convert specific NTSTATUS value to the Hresult? - Stack Overflow, accessed May 13, 2025, https://stackoverflow.com/questions/25566234/how-to-convert-specific-ntstatus-value-to-the-hresult
- RtlNtStatusToDosError function (winternl.h) - Win32 apps - Learn Microsoft, accessed May 13, 2025, https://learn.microsoft.com/en-us/windows/win32/api/winternl/nf-winternl-rtlntstatustodoserror
- shell32.dll and desktop.ini - Microsoft Community, accessed May 13, 2025, https://answers.microsoft.com/en-us/windows/forum/all/shell32dll-and-desktopini/c2f10a77-7568-4bcb-af71-7ee17e3a6d77
- I have open up shell32.dll in a directory and extracted all of the icons from it... - Microsoft Community, accessed May 13, 2025, https://answers.microsoft.com/en-us/windows/forum/all/i-have-open-up-shell32dll-in-a-directory-and/b8f142c5-a63d-437b-af9a-84224113b34f
- SHFileOperationA function (shellapi.h) - Win32 apps - Learn Microsoft, accessed May 13, 2025, https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shfileoperationa
- About hooking SHFileOperation - madshi.net, accessed May 13, 2025, http://forum.madshi.net/viewtopic.php?t=28927
- Controlling and Monitoring a Network with User Mode and Driver Mode Techniques: Overview, Pros and Cons, WFP Implementation | Apriorit, accessed May 13, 2025, https://www.apriorit.com/dev-blog/688-driver-controlling-and-monitoring-networks-with-user-mode-and-driver-mode-techniques
- Windows Filtering Platform - Win32 apps - Learn Microsoft, accessed May 13, 2025, https://learn.microsoft.com/en-us/windows/win32/fwp/windows-filtering-platform-start-page
- Receiving Data in a Filter Driver - Windows - Learn Microsoft, accessed May 13, 2025, https://learn.microsoft.com/en-us/windows-hardware/drivers/network/receiving-data-in-a-filter-driver
- Handling Notifications - Windows drivers | Microsoft Learn, accessed May 13, 2025, https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/handling-notifications
- Advanced Procmon Part 2 – Filtering inclusions - Guy Leech's Blog - WordPress.com, accessed May 13, 2025, https://guyrleech.wordpress.com/2015/06/22/advanced-procmon-part-2-filtering-inclusions/
- PsSetCreateProcessNotifyRoutin, accessed May 13, 2025, https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/nf-ntddk-pssetcreateprocessnotifyroutineex
- Mini-filter and sharing violation in post-cleanup callback - OSR Developer Community, accessed May 13, 2025, https://community.osr.com/t/mini-filter-and-sharing-violation-in-post-cleanup-callback/24822
- Datacom Server TCPIP error 10061 WSAECONNREFUSED Connection Refused, accessed May 13, 2025, https://knowledge.broadcom.com/external/article/203992/datacom-server-tcpip-error-10061-wsaecon.html
- Windows 10 minifilter driver STATUS_ACCESS_DENIED not working on blocking DELETE operation. - Microsoft Community, accessed May 13, 2025, https://answers.microsoft.com/en-us/windows/forum/all/windows-10-minifilter-driver-statusaccessdenied/8f784d44-5e47-4579-8438-7a04fc6cd3f6
- ProcMon - catching incoming file accesses from the network - Super User, accessed May 13, 2025, https://superuser.com/questions/909906/procmon-catching-incoming-file-accesses-from-the-network
- SimRep File System Minifilter Driver - Code Samples | Microsoft Learn, accessed May 13, 2025, https://learn.microsoft.com/en-us/samples/microsoft/windows-driver-samples/simrep-file-system-minifilter-driver/
- IRP Tracking for File System Mini filter drivers - NTFSD - OSR Developer Community, accessed May 13, 2025, https://community.osr.com/t/irp-tracking-for-file-system-mini-filter-drivers/42873
- The case of the stack trace that wouldn't (trace) - Marc Durdin's Blog, accessed May 13, 2025, https://marc.durdin.net/2013/09/the-case-of-the-stack-trace-that-wouldnt/
- Tools for Minifilter Development and Testing - Windows drivers - Learn Microsoft, accessed May 13, 2025, https://learn.microsoft.com/en-us/windows-hardware/drivers/ifs/development-and-testing-tools
- Performance and consistency issues when modules or driver are loaded - SQL Server, accessed May 13, 2025, https://learn.microsoft.com/en-us/troubleshoot/sql/database-engine/performance/performance-consistency-issues-filter-drivers-modules
- Defining New NTSTATUS Values - Windows drivers - Learn Microsoft, accessed May 13, 2025, https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/defining-new-ntstatus-values
- [MS-ERREF]: NTSTATUS Values | Microsoft Learn, accessed May 13, 2025, https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/596a1078-e883-4972-9bbc-49e60bebca55
- System Error Codes (0-499) (WinError.h) - Win32 apps | Microsoft Learn, accessed May 13, 2025, https://learn.microsoft.com/en-us/windows/win32/debug/system-error-codes--0-499-
- [MS-ERREF]: Win32 Error Codes - Learn Microsoft, accessed May 13, 2025, https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/18d8fbe8-a967-4f1c-ae50-99ca8e491d2d
- NTSTATUS - Fictional Memory, accessed May 13, 2025, http://kirkshoop.github.io/2011/09/20/ntstatus.html
- redirection with STATUS_REPARSE and FltReissueSynchronousIo - NTFSD, accessed May 13, 2025, https://community.osr.com/t/redirection-with-status-reparse-and-fltreissuesynchronousio/46413
- Solving Access Denied Errors Using Process Monitor | Mark S. Rasmussen, accessed May 13, 2025, https://improve.dk/solving-access-denied-errors-using-process-monitor/
- Process Monitor: Entries with BUFFER OVERFLOW - Super User, accessed May 13, 2025, https://superuser.com/questions/491597/process-monitor-entries-with-buffer-overflow
- Diagnostic Logs | Turbo Documentation, accessed May 13, 2025, https://docs.turbo.net/client/turbo-vm/troubleshooting/analyzing-logs.html
- what does STATUS_PENDING mean? - Stack Overflow, accessed May 13, 2025, https://stackoverflow.com/questions/27793411/what-does-status-pending-mean
- Forward the read request from raw pdo - NTDEV - OSR Developer Community, accessed May 13, 2025, https://community.osr.com/t/forward-the-read-request-from-raw-pdo/54088
- STATUS_REGISTRY_CORRUPT in winapi::shared::ntstatus - Rust - Docs.rs, accessed May 13, 2025, https://docs.rs/winapi/latest/aarch64-pc-windows-msvc/winapi/shared/ntstatus/constant.STATUS_REGISTRY_CORRUPT.html
- About File System Filter Drivers - Windows drivers - Learn Microsoft, accessed May 13, 2025, https://learn.microsoft.com/en-us/windows-hardware/drivers/ifs/about-file-system-filter-drivers