The quick answer:
An API set is a collection of Windows API functions, organized by category, and exported from a DLL with a strong name (The DLL name is part of the contract with the developer. If the API Set changes, so does the name). An API Set DLL is called a Stub DLL because it doesn't implement any of the exported functions (that's why the DLLs are typically around 20KB each). An API Set DLL implements a Stub function that forwards the call (at runtime) to another DLL that actually implements the requested function: Kernel.dll, User32.dll, ucrtbase.dll, etc. The ability to export a function whose implementation is forwarded (called Export Forwarding or Function Forwarding) has been part of Windows (a DEF file capability) for many years. Kernel32.dll uses this technique to forward to ntdll.dll for example. The complete list of API Set DLLs that the OS supports is called the API Set Schema and is contained in \windows\system32\apisetschema.dll, a resource only DLL that is loaded at boot time. There is a different schema file for each release of the OS.
Article continues below Ad.