The total number of open handles in the system is limited only by the amount of memory available. However, a single process can have no more than 65,536 handles. Some object types support a limited number of handles per process, while other object types support a limited number of handles in the system.
Above refers to all handles not just file handles.
User object Overview
Accelerator table Keyboard Accelerators
Caret Carets
Cursor Cursors
DDE conversation Dynamic Data Exchange Management Library
Desktop Window Stations and Desktops
Hook Hooks
Icon Icons
Menu Menus
Window Windows
Window position Windows
Window station Window Stations and Desktops
GDI object Overview
Bitmap Bitmaps
Brush Brushes
DC Device Contexts
Enhanced metafile Metafiles
Enhanced-metafile DC Metafiles
Font Fonts and Text
Memory DC Device Contexts
Metafile Metafiles
Metafile DC Metafiles
Palette Colors
Pen and extended pen Pens
Region Regions
Kernel object Overview
Access token Access Control
Change notification File I/O
Communications device Communications
Console input Character-Mode Applications
Console screen buffer Character-Mode Applications
Event Synchronization
Event log Event Logging
File File I/O
File mapping File Mapping
Find file File I/O
Heap Memory Management
Job Job Objects
Mailslot Mailslots
Module Dynamic-Link Libraries
Mutex Synchronization
Pipe Pipes
Process Processes and Threads
Semaphore Synchronization
Socket Windows Sockets 2
Thread Processes and Threads
Timer Synchronization
Timer queue Synchronization
Timer-queue timer Synchronization
Update resource Resources