A software update is available that fixes multiple issues in the Filesys module (Filesys.lib) in Windows Embedded Compact 7.
Issue 1
The file system API cannot be returned when the File System Disk Manager (FSDMGR) PNP thread maintains a lock.
In Windows Embedded Compact 7, the FSDMGR maintains a lock to synchronize access. When the FSDMGR PNP thread mount request for a device is not returned for any reason, this blocks other operations on the FSDMGR because these operations need access to the lock that is held by the PNP thread. Therefore, when an application calls the OpenStore, the OpenPartition, or the MountPartition API to mount another PNP device, the file system API cannot be returned.
Issue 2
A thread cannot mount a removable device by using the MountPartition API.
Consider the following scenario:
Issue 3
A deadlock may occur if a thread calls DismountStore or DismountPartition.
Consider the following scenario:
Issue 1
The file system API cannot be returned when the File System Disk Manager (FSDMGR) PNP thread maintains a lock.
In Windows Embedded Compact 7, the FSDMGR maintains a lock to synchronize access. When the FSDMGR PNP thread mount request for a device is not returned for any reason, this blocks other operations on the FSDMGR because these operations need access to the lock that is held by the PNP thread. Therefore, when an application calls the OpenStore, the OpenPartition, or the MountPartition API to mount another PNP device, the file system API cannot be returned.
Issue 2
A thread cannot mount a removable device by using the MountPartition API.
Consider the following scenario:
- You run a Windows Embedded Compact 7-based image that contains the Storage Manager components on a target device.
- The PNP thread tries to mount a store. For example, you mount a USB device to the Windows Embedded Compact 7-based device.
- The PNP thread stops for a long time because of an error in the USB device.
- Another thread uses the MountPartition API to mount a removable device. For example, you mount an SD card or a PC card.
Issue 3
A deadlock may occur if a thread calls DismountStore or DismountPartition.
Consider the following scenario:
- You run a Windows Embedded Compact 7-based image that contains the Storage Manager components on a target device.
- A thread calls the DismountStore function or the DismountPartition function. For example, this happens when you unmount an external storage device from the Windows Embedded Compact 7-based device.
- Another thread calls the CeResyncFilesys function or the PNPThread function. For example, this happens when you remount the external storage device to the Windows Embedded Compact 7-based device.