DirectX Graphics Infrastructure (DXGI) recognizes that some parts of graphics evolve more slowly than others. The primary goal of DXGI is to manage low-level tasks that can be independent of the DirectX graphics runtime. DXGI provides a common framework for future graphics components, the first component that takes advantage of DXGI is Direct3D 10.
In previous versions of Direct3D, low-level tasks like enumeration of hardware devices, presenting rendered frames to an output, controlling gamma, and managing a full-screen transition were included in the 3D runtime. These tasks are now implemented in DXGI.
DXGI's purpose is to communicate with the kernel mode driver and the system hardware.
An application has the option of talking to DXGI directly, or calling the Direct3D APIs in D3D10Core (which handles the communications with DXGI for you). You may want to work with DXGI directly if your application needs to enumerate devices or control how data is presented to an output.