Long Dir/File Names Not Supported by CreateFile to Open VxDs

ID: Q141146


The information in this article applies to:
  • Microsoft Win32 Device Driver Kit (DDK) for Windows NT, version 4.0


SUMMARY

To dynamically load your VxD in Windows 95, you can use CreateFile as documented in the Win32 SDK; follow this structure:


   Guides
      Programmer's Guide to Windows 95
         Using Windows 95 Features
            Device I/O Control
               Input and Output Control in Applications
                  Opening the VxD. 

This section of the Win32 SDK states:

CreateFile checks for a file name extension to determine whether VxDName specifies a file. If a file name extension (such as .vxd) is present, the function looks for the file in the standard search path.
You can specify the path to the dynamically loadable VxD explicitly. For example, a 32-bit application can load a VxD named Driver.vxd in the C:\Mydir directory by using the following call. Note that The CREATE_NEW flag is not necessary.

    hCVxD = CreateFile("\\\\.\\C:\\MYDIR\\DRIVER.VXD", 0,0,0,
                        CREATE_NEW, FILE_FLAG_DELETE_ON_CLOSE, 0); 

In your CreateFile call, you can only use directory names and file names that have eight or fewer characters with extensions of three or fewer characters. Long names prevent the VxD from loading.

You can make use of long directory names by using the search path instead of explicitly specifying the path in the CreateFile call. You may include long directory names in your Autoexec.bat "PATH=" statement, restarting the computer to make the new path effective.


MORE INFORMATION

The Win32 SDK also states:

If VxDName has no file name extension, CreateFile checks the registry to
see if the name is also a value name under the KnownVxDs key in
HKLM\System\CurrentControlSet\Control\SessionManager. If it is a value
name, CreateFile uses the current value associated with the name as the
full path of the VxD file. This method is useful for specifying VxDs
that are not in the standard search path. In the following example,
CreateFile searches the registry for the MYVXDPATH value.

hDevice = CreateFile("\\\\.\\MYVXDPATH", 0, 0, NULL, 0,
FILE_FLAG_DELETE_ON_CLOSE, NULL);
Again, the restriction on long names applies. MYVXDPATH cannot contain long names; if it does, the VxD will not load.

Additional query words: 4.00 Windows 95 kbinf

Keywords : kbnokeyword kbDDK
Version : 4.00
Platform : WINDOWS
Issue type :


Last Reviewed: March 4, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.