Microsoft KB Archive/141146

{|
 * width="100%"|

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

 * }

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

Issue type :

Technology : kbAudDeveloper kbWinDDKSearch kbWin32sSearch kbWin32DDKSearch kbWin32DDKNT400 kbWin32DDKNTSearch