A character FSD accesses character devices. It registers a set of device names with the IFS manager. Anytime there is a file system request on these device names, the IFS routes it to the character FSD to handle. On its first access, a character FSD can choose to mount a device or reject it. Once a device is mounted, the FSD will be called on all requests to that device name. The FSD can communicate with the actual device either directly or through a stack of character device drivers provided as part of the IO subsystem. This provides a very elegant and efficient way to access character devices. Character FSDs register with the IFS manager using the IFSMgr_RegisterCFSD service and get called on the FS_MountVolume entry point to be mounted on a character device. Once mounted, all requests are routed through the interface established as a result of the mount operation.
Both the mount and connection operations return a resource handle that is used by the IFS manager to identify the disk volume, character device or network resource for file operations. This resource handle may simply be a pointer to the FSD specific data structures used to manage the specific resource.