www.delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin-developers/2000/01/10/18:02:17

Message-Id: <200001102302.SAA16860@delorie.com>
Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-developers-subscribe AT sourceware DOT cygnus DOT com>
List-Archive: <http://sourceware.cygnus.com/ml/cygwin-developers/>
List-Post: <mailto:cygwin-developers AT sourceware DOT cygnus DOT com>
List-Help: <mailto:cygwin-developers-help AT sourceware DOT cygnus DOT com>, <http://sourceware.cygnus.com/ml/#faqs>
Sender: cygwin-developers-owner AT sourceware DOT cygnus DOT com
Delivered-To: mailing list cygwin-developers AT sourceware DOT cygnus DOT com
From: "Parker, Ron" <rdparker AT butlermfg DOT org>
To: DJ Delorie <dj AT delorie DOT com>, cygwin-developers AT sourceware DOT cygnus DOT com
Subject: RE: device names tidbit
Date: Mon, 10 Jan 2000 16:59:23 -0600
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2448.0)

This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_000_01BF5BBE.FA3E1630
Content-Type: text/plain;
	charset="iso-8859-1"

Their is another version of this syntax uses a '?' inplace of the '.'. For
example:
	DEL \\?\c:\somedir\aux

I seem to recall that this only works on NT.  I may be wrong, but I vaguely
recall working on a winsup patch that used this under NT.  (It was not a
complete solution, so I never submitted it.)  It is the same mechanism that
allows us to use "\\.\a:" for raw floppy access in CYGWIN under NT.

For those that care here is what is going on and why this works.  Forgive me
if you have seen it before, but I believe it provides a little more
background than the MS documentation that I was able to find when I was
working on my local patch a couple years ago. Most of the obscure and
limited documentation about this is in the Win32 DDK.  The rest is what I
have managed to determine by experimentation and my own research.

If you download and run the SysInternals' WinObj program it may make the
following explanation a little clearer.  This program lets you take a look
at the Object Manager Namespace in NT. It is available for download at
http://www.sysinternals.com/winobj.htm.

If you look in the "??" folder in WinObj you will find a number of symbolic
links that have been registered with the Object Manager.  These are used by
the Win32 subsystem and NTVDM to map DOS style device names to their
corresponding NT devices.  Additionally they use it to reject certain
filenames, like "aux", before they are passed to the Object Manager for
handling.  Using one of the "\\.\" and "\\?\" prefixs causes the filename to
be passed to the Object Manager in NT without this filename check occuring.
The nominal Posix subsystem in NT always passes its filenames to the Object
Manager without doing this "device name check". 

I don't remember whether or not the prefix is stripped before going into the
Object manager.  But when the Object Manager gets the filename, it checks
the beginning of the filename against the list of device names in its
symbolic link table.  On my machine C: maps to \Device\Harddisk0\Partition1.
WinObj shows this as a \Device\Harddisk0 folder with a Partition1 device in
it.  So using DJ's example of "\\.\c:\somedir\aux" the filename
"somedir\aux" is passed on to the device that is registered as
\Device\Harddisk0\Partition1 for further processing.  That is how the
filename eventually reaches the driver.

Just to put filename processing in graphical terms here are two examples of
how a filename is processed in NT.

Filename         Route taken through the OS
--------
------------------------------------------------------------
\\.\C:\dir\file  App->(NTVDM)->Win32 subsystem->Object Manager->Device
Driver
C:\dir\file      App->(NTVDM)->Win32 subsystem->
				Win32 filename check->Object Manager->Device
Driver
                        |
				+--> Possibly rejected at this point.

-----Original Message-----
From: DJ Delorie [mailto:dj AT delorie DOT com]
Sent: Friday, January 07, 2000 3:29 PM
To: cygwin-developers AT sourceware DOT cygnus DOT com
Subject: device names tidbit



I just ran across this in MSDN.  I wonder if we should use this trick
to be able to create/delete otherwise "reserved" names?

--

Another option is to use a syntax that bypasses the normal
reserve-word checks altogether. For example, you can possibly delete
any file with a command such as:

   DEL \\.\<drive letter>:\<path>\<file name>

For example: 

   DEL \\.\c:\somedir\aux

------_=_NextPart_000_01BF5BBE.FA3E1630
Content-Type: application/ms-tnef
Content-Transfer-Encoding: base64

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
BgAAAAAAwAAAAAAAAEYAAAAAVIUAAAEAAAAEAAAAOS4wAAMABIAIIAYAAAAAAMAAAAAAAABGAAAA
AAGFAAAAAAAACwAFgAggBgAAAAAAwAAAAAAAAEYAAAAADoUAAAAAAAADAAaACCAGAAAAAADAAAAA
AAAARgAAAAARhQAAAAAAAAMAB4AIIAYAAAAAAMAAAAAAAABGAAAAABiFAAAAAAAAHgAIgAggBgAA
AAAAwAAAAAAAAEYAAAAANoUAAAEAAAABAAAAAAAAAB4ACYAIIAYAAAAAAMAAAAAAAABGAAAAADeF
AAABAAAAAQAAAAAAAAAeAAqACCAGAAAAAADAAAAAAAAARgAAAAA4hQAAAQAAAAEAAAAAAAAACwAO
gAggBgAAAAAAwAAAAAAAAEYAAAAABoUAAAAAAAADACYAAAAAAAMANgAAAAAAHgAxQAEAAAARAAAA
UkRQQVJLRVJEMDZGQzQwMAAAAAADABpAAAAAAB4AMEABAAAAEQAAAFJEUEFSS0VSRDA2RkM0MDAA
AAAAAwAZQAAAAAADAIAQ/////wIB+T8BAAAAdAAAAAAAAADcp0DIwEIQGrS5CAArL+GCAQAAAAYA
AAAvTz1CVVRMRVIgTUFOVUZBQ1RVUklORyBDT01QQU5ZL09VPUJVSUxESU5HUy9DTj1SRUNJUElF
TlRTL0NOPVRPV0VSL0NOPVJEUEFSS0VSRDA2RkM0MDAAHgD4PwEAAAAMAAAAUGFya2VyLCBSb24A
HgA4QAEAAAARAAAAUkRQQVJLRVJEMDZGQzQwMAAAAAACAfs/AQAAAHQAAAAAAAAA3KdAyMBCEBq0
uQgAKy/hggEAAAAGAAAAL089QlVUTEVSIE1BTlVGQUNUVVJJTkcgQ09NUEFOWS9PVT1CVUlMRElO
R1MvQ049UkVDSVBJRU5UUy9DTj1UT1dFUi9DTj1SRFBBUktFUkQwNkZDNDAwAB4A+j8BAAAADAAA
AFBhcmtlciwgUm9uAB4AOUABAAAAEQAAAFJEUEFSS0VSRDA2RkM0MDAAAAAAQAAHMHDTalmzW78B
QAAIMDAWPvq+W78BHgA9AAEAAAAFAAAAUkU6IAAAAAAeAB0OAQAAABQAAABkZXZpY2UgbmFtZXMg
dGlkYml0AAsAKQAAAAAACwAjAAAAAAADAAYQkeKu/AMABxBrCgAAAwAQEAAAAAADABEQAAAAAB4A
CBABAAAAZQAAAFRIRUlSSVNBTk9USEVSVkVSU0lPTk9GVEhJU1NZTlRBWFVTRVNBP0lOUExBQ0VP
RlRIRUZPUkVYQU1QTEU6REVMP0M6U09NRURJUkFVWElTRUVNVE9SRUNBTExUSEFUVEhJU08AAAAA
+gE=

------_=_NextPart_000_01BF5BBE.FA3E1630--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019