Another special topic in the block device documentation is floppy disk controller arbitration. Two floppy disk controller arbitration services are available to developers of backup software.
Service | Description |
---|---|
VFBACKUP_Lock_NEC | This service is called by VxDs to obtain exclusive control of the system floppy controller. |
VFBACKUP_Unlock_NEC | This service is called by VxDs to release exclusive control of the system floppy controller. |
VFBACKUP_Lock_All_Ports | This service is called by VxDs to prevent ALL access to the system floppy controller |
Without using these services, real mode access gets detected by port access or DMA access from a VM. When the system floppy controller sees real mode access, the VM that attempts direct access is locked. If another VM is already locked on, the system floppy controller ignores the latest attempt to lock.
The services VFBACKUP_Lock_NEC and VFBACKUP_Unlock_NEC claim and release the system floppy controller for a given VM. Unlike the case where the system floppy controller detects port access and gives the floppy to a VM, when these services are used, there will not be a timeout, and the floppy can only be released when the lock fails, or a Terminate VM comes for the locking VM. Note that when a VM is locked on, the application causing the lock is responsible for dealing with the BIOS Motor Off command.
Do not attempt to use the VFBACKUP_Lock_Nec service before the system floppy controller driver is initialized. Note that if the system floppy controller driver is not loaded and a Windows backup application (such as Fastback.386 and others) is loaded, then the VFBACKUP system is unloaded and the VFBACKUP_Lock_Nec and VFBACKUP_Unlock_Nec service requests will fail. The way to check whether the VFBACKUP system is loaded is to use a VFBACKUP_GetVersion service request.