Hello all,
Here’s a problem we’ve had for a while that we simply cannot get to the
bottom of. Any help would be greatly appreciated.
We have an NT4 file system driver that creates a virtual file system for
one of our digital disk recorders. We’ve discovered a problem though:
When you attempt to delete a file under Win2K Server (or NT4 Server) you
get an “Invalid MS-DOS function” error message. It happens from both
Explorer and the Command Prompt. The same file deletion works fine under
Workstation.
I’ve traced the calls into the driver, and this is what I’ve discovered…
Under Workstation, our driver gets the following calls:
IRP_MJ_CREATE
IRP_MJ_QUERY_INFORMATION with
FileInformationClass = 35
IRP_MJ_SET_INFORMATION with
FileInformationClass = FileDispositionInformation (DeleteFile)
IRP_MJ_CLEANUP
IRP_MJ_CLOSE
Note that the IRP_MJ_SET_INFORMATION is where the deletion actually
occurs.
However, running under Server we get this:
IRP_MJ_CREATE
IRP_MJ_QUERY_INFORMATION with
FileInformationClass = 35
IRP_MJ_CLEANUP
IRP_MJ_CLOSE
So it appears that after doing a IRP_MJ_QUERY_INFORMATION, Server sees
something that it doesn’t like, and doesn’t issue the delete command.
However, we have no idea what this can be! We normally return
STATUS_NOT_IMPLEMENTED for FileInformationClass = 35 (since the NTIFS.H
file that we compile with only goes up to 34) but even after I changed it
to return successful data (as defined in NTDDK.H) it still didn’t work.
Anyway, the big question is, why would the OS happily continue with the
deletion under Workstation and not under Server? What is Server doing
differently that would make it decide not to delete the file? Any
ideas???
Thanks