|
Answers to IFS/FSD/NP-Related QuestionsThe information on this page is intended primarily for network software developers who are working on lower-level file system device drivers for Windows 95 and Windows NT. This FAQ, like most others, is always under construction... Table of ContentsWindows 95 IFS/FSD/NP Questions
Windows 95 IFS/FSD/NP QuestionsHow do I implement a Windows 95 Network Provider?A Network Provider (NP) is "simply" a 32-bit DLL, which you must implement from available information. Understand that the NP is really implementing the Win32 WNet API - indirectly through the MPR. So, Understanding the WNet API using SDK examples, etc. is useful. Also, the most important NP client is actually the Win95 Network Browser... The available information about NP's, which is sparse, includes:
Back to TopWhat are some books that describe Windows 9X file systems?
Back to TopWhere can I find sources for sample Windows 95 FSD's?
Back to TopWhere can I find free sources for a Windows 95 FSD?Peter van Sebille <peter@yipton.demon.co.uk> provides source and binaries for a Win95 FSD for Linux's second extended file system at his home page: He says "sources may not be great, but will be definitely helpful." As of July 1, 1997 he warns that it is consider it beta software. As of August 27, 1998 Peter reports that he no longer actively supports fsdext2. (Note: This link seems to be intermittently inaccessible...) Back to TopHow does a Windows 95 Network Provider communicate with it's companion FSD?Typically when implementing the NPAddConnection() function in a Net Provider, a developer will wish to establish a connection with the corresponding IFSMgr File System Driver (FSD) redirector. There is no obvious method to to this however. How does a NP communicate with it's companion FSD to add or delete connections? When a Net Provider wishes to establish a redirection for a network resource, IFSMgr provides a DeviceIoControl interface that can be used for this purpose. The IFSMgr DeviceIoControl interface is really just a method for submitting int 21h DOS function calls to IFSMgr. The relevant int 21h calls that a Net Provider typically wants to make in this case are Int 21h, function 5F03h (Make Network Connection), and Int 21h, function 5F04h (Delete Network Connection). These calls are documented in the 'MS-DOS Programmer's Reference'. The main issue that needs to be addressed here is how to package these Int 21h calls. The structures needed to do this are defined in IFS.H, which is included in the Windows 95 DDK.. The Win32 DeviceIoControl() function requires a handle to a device, a control code, an input and output buffers, among other things. For IFSMGR calls, the input and output buffers are going to be win32apireq structures, as defined in IFS.H. The register fields of this structure (ar_eax, etc.), are loaded with the appropriate register based parameters as defined for the Int 21h, functions 5303h and 5304h. Please refer to the MS-DOS Programmer's Reference for the details of these calls. The ar_proid field will contain the provider ID returned to your FSD redirector when it called IFSMgr_RegisterNet. Net Providers can retrieve this ID directly from the FSD by implementing a private DeviceIoControl interface between the Net Provider and the FSD redirector. Here is are basic idea of what you'll need to do to call IFSMGR's DeviceIoControl interface:
Back to TopCan I block in my FSD or redirector and call ring-3 executables to perform functions?Many developers have tried this and encounter problems. For example, it would seem practical to use Winsock to transport your redirector's data. This file includes some articles from comp.os.ms-windows.programmer.vxd and Dan Norton's DDK-L, including some helpful Microsoft responses, which sheds some light on this problem.
Back to TopWhen the IFS Manager calls a FSD's FS_Read or FS_Write entry point, is it necessary for the FSD to use _LinPageLock to lock the ir_data pointer of the ioreq?The October, 1995 DDK documentation doesn't give a clue. However, consensus is that the IFS Manager does a linear page lock on memory associated with the ioreq as well as on memory pointed to by the ir_data field. So far this has proven true in practice. Back to Top
Windows NT IFS/FSD/NP QuestionsWho offers NT IFS/FSD development kits?PCAUSA does not offer any products for Windows NT file system development. However, PCAUSA's TDI Client Samples for Windows NT may be useful to developers who intend to use TCP/IP transport from their kernel-mode FSD. The following links are to commercial sites that provide technology and consulting services specifically related to development of Installable Files Systems (IFS) and File System Drivers (FSD) on the Windows NT platform:
Mark Russinovich and Bryce Cogswell have an extremely useful site which includes utilities and source code associated with NT file systems:
In addition, Microsoft has a list of consultants who specialize in NT file system development:
What are some books that describe Windows NT file systems?
Back to Top
MS-DOS IFS/FSD QuestionsWhere can I find a MS-DOS file system redirector sample?The CPHANTOM project is a 'C' language skeleton for a MS-DOS Int 2F file system redirector. The example is inspired by the Pascal language PHANTOM redirector example provided in the book Undocumented DOS by Andrew Schulman, Raymond J. Michels, Jim Kyle, Tim Paterson, David Maxey and Ralf Brown, published by Addison Wesely, 1990. CPHANTOM is provided as a Borland C++ 4.5 project. The PCA CPHANTOM redirector was designed to illustrate a few more functions than the original PHANTOM example. In particular, it implements a simple multi-level directory tree with a few "canned" files with various file attributes. Interestingly, CPHANTOM works (with a few bugs...) under Windows 95 if it's loaded before WIN.EXE is executed. Back to Top |
WinDis 32 is a trademark of Printing Communications Assoc., Inc.
|