Home Up Contents Search
Win95 IFS FAQ

NDIS FAQ IM Driver FAQ TDI FAQ Packet Filtering Win95 IFS FAQ Other Resources Consultants

 

Answers to IFS/FSD/NP-Related Questions

The 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.

undercon.gif (286 bytes)This FAQ, like most others, is always under construction...

Table of Contents

Windows 95 IFS/FSD/NP Questions

  1. What are some books that describe Windows 9X file systems?
  2. Where can I find sources for sample Windows 95 FSD's?
  3. Where can I find free sources for a Windows 95 FSD?
  4. Can I block in my FSD or redirector and call ring-3 executables to perform functions?
  5. How do I implement a Windows 95 Network Provider?
  6. How does a Windows 95 Network Provider communicate with it's companion FSD?

 

Windows NT Questions

  1. What are some books that describe Windows NT file systems?
  2. Who offers NT IFS/FSD development kits?
  3. Other Windows NT/Windows 2000 File System Driver Resources

 

MS-DOS IFS/FSD Questions

  1. MS_DOS File System Redirector Sample

 

Windows 95 IFS/FSD/NP Questions

How 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:

1.) The Win95 DDK Device Driver Programmer's Reference includes the topic "Network Provider SPI" in the "Network Drivers" section. This section provides the description of the functions which the NP must implement. Other topics, such as the Multiple Provider Router (MPR) description must be understood in order to understand how a NP fits into the overall architecture.

2.) The Win95 DDK includes the header NETSPI.H, which provides the entry point prototypes for a network provider DLL.

3.) The DDK Network Provider Test Tool (NPST), the Multiple Provider Router Test Tool (MPRT) and their associated documentation are useful.

Back to Top

What are some books that describe Windows 9X file systems?

Inside The Windows 95 File System, by Stan Mitchell Buy it from Amazon.com...
Systems Programming for Windows 95, by Walter Oney Buy it from Amazon.com...
 
Back to Top

Where can I find sources for sample Windows 95 FSD's?

PCAUSA offers it's Sample Network for Windows 95 toolkit to support development of Windows 95 file system redirectors.
The VtoolsD VxD toolkit from NuMega/Compuware leave-site.gif (117 bytes) includes the REGFSD example. It makes the Windows 95 registry look like a mounted read-only filesystem.
Both of the aforementioned books include sample code on disk, including simple FSD samples which are useful.
Back to Top

Where 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:

http://www.yipton.demon.co.uk

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 Top

How 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:

a) Open IFSMgr by using CreateFile. CreateFile will return a handle to IFSMGR that can be used with DeviceIoControl().

hIfsMgr = CreateFile("\\\\.\\IFSMGR", 0,0,0,CREATE_NEW,

FILE_FLAG_DELETE_ON_CLOSE, 0);

b) Fill in the appropriate fields of the win32apireq structure, and pass it to IFSMgr using DeviceIoControl.

DeviceIoControl(hIfsMgr, IFS_IOCTL_21, (LPVOID)&InApiReq,

sizeof(win32apireq), (LPVOID)&OutApiReq, sizeof(win32apireq),

&cbBytesReturned, NULL);

c) When finished with IFSMgr, close its device handle. Net Providers can create this handle when they are loaded and keep it open for the life of the Net Provider. This handle should be closed prior to the Net Provider's termination.

CloseHandle(hIfsMgr);

 

Back to Top

Can 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.

Hang When Calling Ring-3 From FSD

 

Back to Top

When 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 Questions

Who offers NT IFS/FSD development kits?

PCAUSA does not offer any products for Windows NT file system development. However, PCAUSA's Advanced TDI 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:

Windows NT IFS Kit (Microsoft)
NT Core Services, Inc.
Open Systems Resources, Inc.

Mark Russinovich and Bryce Cogswell have an extremely useful site which includes utilities and source code associated with NT file systems:

System Internals

In addition, Microsoft has a list of consultants who specialize in NT file system development:

Microsoft List Of File System Consultants

 

 

What are some books that describe Windows NT file systems?

Windows NT File System Internals, by Rajeev Nagar Buy it from Amazon.com...
Back to Top

 

Other Windows NT/Windows 2000 File System Driver Resources

A collection of information of interrest to people building file system and file system filter drivers for Windows NT and Windows 2000 under GNU General Public License as published by the Free Software Foundation. Maintained by Bo Branten.
Read-write Linux Ext2 filesystem driver for NT4/W2K. Maintained by Andrey Shedel.

 

MS-DOS IFS/FSD Questions

Where 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.

Download CPHANTOM.ZIP

 

Back to Top
 
Courtesy book purchase links...
 
 

PCAUSA Home · Privacy Statement · Products · Ordering · Support · Utilities · Resources
Rawether for Windows and WinDis 32 are trademarks of Printing Communications Assoc., Inc. (PCAUSA)
Microsoft, MS, Windows, Windows 95, Windows 98, Windows Millennium, Windows 2000, and Win32 are registered trademarks and Visual C++ and Windows NT are trademarks of the Microsoft Corporation.
Send mail to webmaster@pcausa.com with questions or comments about this web site.
Copyright © 1996-2001 Printing Communications Assoc., Inc. (PCAUSA)
Last modified: October 24, 2000