On Nov 14 13:46, Kai Tietz wrote:
> 2012/11/14 Corinna Vinschen <vinsc...@redhat.com>:
> > Hi,
> >
> > just reading the WDK docs, I found that the structures called
> > FILE_ID_BOTH_DIRECTORY_INFORMATION and FILE_ID_FULL_DIRECTORY_INFORMATION
> > in winternl.h are actually called FILE_ID_BOTH_DIR_INFORMATION and
> > FILE_ID_FULL_DIR_INFORMATION.
> >
> > That has been fixed for the non-ID variants by allowing both names
> > (with and without "ECTORY"), but it's missing for the ID variants.
> >
> > Along the same lines, the non-typdef'ed name of the structures also uses
> > the short form in the WDK docs(*), struct _FILE_FULL_DIR_INFORMATION,
> > not struct _FILE_FULL_DIRECTORY_INFORMATION, etc.
> >
> > Shouldn't that be fixed in winternl.h as well?
> >
> >
> > Corinna
> >
> >
> > (*) 
> > http://msdn.microsoft.com/en-us/library/windows/hardware/ff540289%28v=vs.85%29.aspx
> >     
> > http://msdn.microsoft.com/en-us/library/windows/hardware/ff540310%28v=vs.85%29.aspx
> >     
> > http://msdn.microsoft.com/en-us/library/windows/hardware/ff540235%28v=vs.85%29.aspx
> >     
> > http://msdn.microsoft.com/en-us/library/windows/hardware/ff540303%28v=vs.85%29.aspx
> 
> 
> I would vote to fix that in winternl.h header, too.  by this we avoid
> future clashes.

Ok, I propose the following patch.  I moved the old definitions into
their own, distinct typedef block to be able to mark them with a
comment.  Feel free to change the comment any way you like.


Corinna


        * winternl.h (struct _FILE_FULL_DIR_INFORMATION): Rename from
        _FILE_FULL_DIRECTORY_INFORMATION per WDK documentation.
        (struct _FILE_ID_FULL_DIR_INFORMATION): Rename from
        _FILE_ID_FULL_DIRECTORY_INFORMATION.
        (struct _FILE_BOTH_DIR_INFORMATION): Rename from
        _FILE_BOTH_DIRECTORY_INFORMATION.
        (struct _FILE_ID_BOTH_DIR_INFORMATION): Rename from
        _FILE_ID_BOTH_DIRECTORY_INFORMATION.
        (FILE_FULL_DIRECTORY_INFORMATION, PFILE_FULL_DIRECTORY_INFORMATION,
        FILE_ID_FULL_DIRECTORY_INFORMATION, PFILE_ID_FULL_DIRECTORY_INFORMATION,
        FILE_BOTH_DIRECTORY_INFORMATION, PFILE_BOTH_DIRECTORY_INFORMATION,
        FILE_ID_BOTH_DIRECTORY_INFORMATION,
        PFILE_ID_BOTH_DIRECTORY_INFORMATION): Explicitely typedef in a new
        block.  Add comment to describe as being outdated.


Index: winternl.h
===================================================================
--- winternl.h  (revision 5452)
+++ winternl.h  (working copy)
@@ -267,7 +267,7 @@
     WCHAR FileName[ANYSIZE_ARRAY];
   } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
 
-  typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
+  typedef struct _FILE_FULL_DIR_INFORMATION {
     ULONG NextEntryOffset;
     ULONG FileIndex;
     LARGE_INTEGER CreationTime;
@@ -280,9 +280,9 @@
     ULONG FileNameLength;
     ULONG EaSize;
     WCHAR FileName[ANYSIZE_ARRAY];
-  } FILE_FULL_DIRECTORY_INFORMATION, 
*PFILE_FULL_DIRECTORY_INFORMATION,FILE_FULL_DIR_INFORMATION, 
*PFILE_FULL_DIR_INFORMATION;
+  } FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
 
-  typedef struct _FILE_ID_FULL_DIRECTORY_INFORMATION {
+  typedef struct _FILE_ID_FULL_DIR_INFORMATION {
     ULONG NextEntryOffset;
     ULONG FileIndex;
     LARGE_INTEGER CreationTime;
@@ -296,9 +296,9 @@
     ULONG EaSize;
     LARGE_INTEGER FileId;
     WCHAR FileName[ANYSIZE_ARRAY];
-  } FILE_ID_FULL_DIRECTORY_INFORMATION, *PFILE_ID_FULL_DIRECTORY_INFORMATION;
+  } FILE_ID_FULL_DIR_INFORMATION, *PFILE_ID_FULL_DIR_INFORMATION;
 
-  typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
+  typedef struct _FILE_BOTH_DIR_INFORMATION {
     ULONG NextEntryOffset;
         ULONG FileIndex;
     LARGE_INTEGER CreationTime;
@@ -313,9 +313,9 @@
     CHAR ShortNameLength;
     WCHAR ShortName[12];
     WCHAR FileName[ANYSIZE_ARRAY];
-  } FILE_BOTH_DIRECTORY_INFORMATION, 
*PFILE_BOTH_DIRECTORY_INFORMATION,FILE_BOTH_DIR_INFORMATION, 
*PFILE_BOTH_DIR_INFORMATION;
+  } FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
 
-  typedef struct _FILE_ID_BOTH_DIRECTORY_INFORMATION {
+  typedef struct _FILE_ID_BOTH_DIR_INFORMATION {
     ULONG NextEntryOffset;
     ULONG FileIndex;
     LARGE_INTEGER CreationTime;
@@ -331,8 +331,19 @@
     WCHAR ShortName[12];
     LARGE_INTEGER FileId;
     WCHAR FileName[ANYSIZE_ARRAY];
-  } FILE_ID_BOTH_DIRECTORY_INFORMATION, *PFILE_ID_BOTH_DIRECTORY_INFORMATION;
+  } FILE_ID_BOTH_DIR_INFORMATION, *PFILE_ID_BOTH_DIR_INFORMATION;
 
+  /* Old names of dir info structures as descibed in Nebbitt's Native API
+     Reference.  Keep for backward compatibility. */
+  typedef struct _FILE_FULL_DIR_INFORMATION
+    FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION;
+  typedef struct _FILE_ID_FULL_DIR_INFORMATION
+    FILE_ID_FULL_DIRECTORY_INFORMATION, *PFILE_ID_FULL_DIRECTORY_INFORMATION;
+  typedef struct _FILE_BOTH_DIR_INFORMATION
+    FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION;
+  typedef struct _FILE_ID_BOTH_DIR_INFORMATION
+    FILE_ID_BOTH_DIRECTORY_INFORMATION, *PFILE_ID_BOTH_DIRECTORY_INFORMATION;
+
   typedef struct _FILE_BASIC_INFORMATION {
     LARGE_INTEGER CreationTime;
     LARGE_INTEGER LastAccessTime;

------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to