The USB mass storage device class allows an application to act as a physical storage device for use by another USB application or for a host operating system. Because the type of storage can vary by application, the mass storage class abstracts the storage with a set of block-based APIs that are provided by the application to the USB library. The APIs in mass storage class allow the USB mass storage class to call an external set of functions that actually perform the operations on the physical storage media. The USB library’s mass storage class also provides an interface to inform the USB library when the media status has changed, in case the physical media can be ejected. This is important for devices like SD cards that can be removed before the device is connected or even while the device is running.