The latest version of the SCNSM driver and source code can be downloaded from the Soundcode website at soundcode.com.
Windows 3.x does not support dynamic allocation of fixed, contiguous memory pages. Win3.x allows such allocations only when the driver is loaded, at startup. Consequently, When SCNSM is loaded, a single, semaphore-locked page is allocated and used throughout that Windows session. If the page has already been allocated to a process, AllocPage fails with ERROR_LOCK_VIOLATION until the process holding the page frees it with FreePage.
16-bit DOS programs (V86 mode) are not supported on Windows 95/98.
A Device ID application has been submitted to Microsoft but has not yet been assigned. The current Device ID of 0x7135 is temporary and will change in the near future. It is recommended that this Device ID only be used for Win3.x applications. 16-bit Win95/98 applications should use the driver name SCNSM to obtain the driver entry point (see the Open function in the testpm/main.c example).
Thread-safety was not tested and should not be assumed.
Please report any bugs to support@soundcode.com. Please include your operating system version, SCNSM version, and a description complete enough to reproduce your problem. Also, if you make any changes to the source code, please report these as well. This will allow us to update the code base and make your additions available to everyone.
For Windows 3.x, at Init_Complete, allocate a configurable (registry or .ini file) set of pages and dole them out on a per VM basis. SCNSM currently allocates a single page.