When troubleshooting performance issues with Outlook 2003 attachments (connecting to Exchange 2007), we observed severe latency when opening small files (<1MB). The problem persisted despite:
- Creating new Windows user profiles
- Rebuilding Outlook profiles
- Verifying normal behavior on other workstations
Process Monitor logs showed these critical patterns:
15:23:01.123 OUTLOOK.EXE FAST I/O DISALLOWED C:\Users\[user]\AppData\Local\Microsoft\Windows\Temporary Internet Files\ 15:23:04.567 OUTLOOK.EXE IRP_MJ_CREATE Delay: 3200ms 15:23:07.890 EXPLORER.EXE FAST I/O DISALLOWED \\fileserver\share\document.docx
The FAST_IO_DISALLOWED error occurs when:
- The file system driver rejects fast I/O path requests
- System falls back to slower IRP (I/O Request Packet) processing
- This creates significant latency for small, frequent operations
Common triggers include:
Component | Potential Issue |
---|---|
Antivirus | Real-time scanning intercepting I/O |
File System Filter | Third-party drivers (backup/encryption) |
Network Redirector | SMB protocol version mismatches |
Storage Stack | Corrupted cache or filter drivers |
Check loaded filter drivers:
Get-WmiObject Win32_SystemDriver | Where-Object { $_.PathName -like "*filter*" } | Select-Object Name, State, PathName
Monitor I/O patterns:
# Requires Admin rights Start-Transcript -Path C:\io_debug.log Get-Counter '\Process(*)\IO Data Operations/sec' -Continuous Stop-Transcript
Add these values temporarily for diagnostics:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management] "LargeSystemCache"=dword:00000001 "DisablePagingExecutive"=dword:00000001
For our specific case, these steps resolved the issue:
- Uninstalled legacy antivirus components
- Updated network adapter drivers
- Modified SMB settings via Group Policy:
Computer Configuration > Policies > Administrative Templates > Network > Lanman Workstation "Enable insecure guest logons" = Enabled
- Cleared Outlook cache:
outlook.exe /cleanviews outlook.exe /cleanautocompletecache
Confirm resolution with:
# Check for FAST I/O failures Get-WinEvent -LogName "Microsoft-Windows-Kernel-IO/Operational" | Where-Object { $_.Message -like "*FAST_IO_DISALLOWED*" }
When troubleshooting Outlook 2003's painfully slow attachment handling (especially with Exchange 2007 backend), the FAST I/O DISALLOWED
error in Process Monitor reveals a fundamental file system bottleneck. This isn't just an Outlook quirk - it manifests across network file operations, though becomes particularly noticeable with email attachments due to Outlook's temp file handling mechanism.
Windows' Fast I/O mechanism bypasses certain IRP (I/O Request Packet) processing for performance gains. When disallowed, the system falls back to traditional (slower) I/O paths. Common triggers include:
// Pseudo-code illustrating I/O path decision
if (FileSystemSupportsFastIO() && !SecurityRestrictions()) {
UseFastIOPath();
} else {
FallbackToStandardIRP(); // ← Where delays occur
}
From multiple troubleshooting cases, we've identified these frequent culprits:
- Antivirus Overreach: Real-time scanning intercepting I/O paths
- NTFS Corruption: Particularly in user profile directories
- Group Policy Restrictions: Enterprise security policies disabling fast paths
- Broken Filter Drivers: Legacy or misconfigured storage stack components
Here's a PowerShell script to diagnose I/O path issues:
# Check for filter drivers
Get-WmiObject Win32_SystemDriver |
Where-Object { $_.Name -like "*flt*" -or $_.Name -like "*filter*" } |
Select-Object Name,State,PathName
# Verify NTFS integrity
Repair-Volume -DriveLetter C -Scan
Repair-Volume -DriveLetter C -SpotFix
# Check for AV interference
(Get-MpPreference).DisableRealtimeMonitoring = $true # Test with protection disabled
Case Study: A financial firm resolved similar issues by:
- Creating a dedicated Outlook temp directory with specific permissions:
mkdir C:\OutlookTemp icacls C:\OutlookTemp /grant "USERNAME:(OI)(CI)(M)"
- Forcing Outlook to use this location via registry:
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Office\11.0\Outlook\Security" -Name "OutlookSecureTempFolder" -Value "C:\OutlookTemp"
When the issue manifests across network shares, consider these Wireshark filters to analyze SMB traffic:
smb2.cmd == 0x05 || # SMB2 READ
smb2.cmd == 0x08 || # SMB2 WRITE
smb2.flags.response == 0
Compare latency between SMB2_READ
requests and responses to identify storage-side bottlenecks.
For Windows 7/Server 2008 R2 systems, these registry values often help:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"NtfsDisableLastAccessUpdate"=dword:00000001
"DisableDeleteNotification"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters]
"DirectoryCacheEntrySizeMax"=dword:00000100
"FileInfoCacheEntrySizeMax"=dword:00000100