FAQ for being a good IIS citizen (or how to write win95 friendly apps). Forward suggestions to JohnsonA Q: What entry points are supported on win95? A: Check the file win95.exp. It lists entry points for nashville for kernel32.dll, advapi32.dll, netapi32.dll, mpr.dll, ole32.dll, and ntdll.dll Among the notable entry points that are not supported, DuplicateTokenEx InterlockedCompareExchange InterlockedExchangeAdd ReadDirectoryChangesW CompletionPorts wsprintfW all the rtl apis all the nt system apis like (NtLoadLibrary) all the net apis all the lsa apis all the MS specific winsock functions like TransmitFile, AcceptEx, etc Entry points that are supported for Memphis winsock2 apis DCOM apis Q: What happens if I use an entry point that win95 does not export? A: Win95 will return error 31 (General error) during startup. Q: Are there behaviour differences among the supported APIs? A: Yes, definitely. Here's a list: - CreateFile Win95 does not support async file I/O. So FILE_FLAG_OVERLAPPED is not supported. It also does not support opening directories, so FILE_FLAG_BACKUP_SEMANTICS will not work. Among the share mode flags, FILE_SHARE_DELETE is not supported. Also, no templates. - CreateThread Win95 does not allow you to pass NULL for the pdwId parameter - Registry APIs Win95 does not support the UNICODE version of registry APIs - The following returns ERROR_CALL_NOT_IMPLEMENTED on win95 ImpersonateLoggedOnUser MoveFileEx Q: What do I do if I need to use a non-supported API? A: You will need to do a dynamic load on the dll and get the entry point address using GetProcAddress. There are also 2 special dlls in IIS lonsint.dll and lonsiw95.dll (lonsi is library of non-standard interfaces). lonsint.dll gets loaded when running on NT, and lonsiw95.dll gets loaded on win95 systems. If you have specific problems, come talk to me (johnsona).