Mark Russinovich: This is the fifth post in my Pushing the Limits of Windows series where I explore the upper bound on the number and size of resources that Windows manages, such as physical memory, virtual memory, processes and threads:
     Pushing the Limits of Windows: Physical Memory
    Pushing the Limits of Windows: Virtual Memory
    Pushing the Limits of Windows: Paged and Nonpaged Pool
    Pushing the Limits of Windows: Processes and Threads 
 
  This time I’m going to go inside the implementation of handles to find and explain their limits. Handles are data structures that represent open instances of basic operating system objects applications interact with, such as files, registry keys, synchronization primitives, and shared memory. There are two limits related to the number of handles a process can create: the maximum number of handles the system sets for a process and the amount of memory available to store the handles and the objects the application is referencing with its handles.