Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results

Home NTFSD
Before Posting...
Please check out the Community Guidelines in the Announcements and Administration Category.

More Info on Driver Writing and Debugging


The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.


Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/


FileAttributeTagInformation

OSR_Community_UserOSR_Community_User Member Posts: 110,217
Hello,

I believe this question could only be answered by someone at Microsoft. The
definition of enumerated type _FILE_INFORMATION_CLASS is different in W2K
versions of ntifs.h and ntddk.h. For instance, FileAttributeTagInformation
is defined as an enumerated constant of enumerated type
_FILE_INFORMATION_CLASS only in ntddk.h. It is NOT defined as an enumerated
constant in ntifs.h. *However*, in versions of ntifs.h & ntddk.h for W2K
beta 3, this enumerated type is defined in exactly the same way in both
header files. Apparently, ntifs.h was changed for final version of W2K.

Due to this, my driver no longer compiles with final version of ntifs.h
because the routine that handles IRP_MJ_QUERY_INFORMATION needs to case on
FileAttributeTagInformation which is flagged as an undeclared identifier.
Does this
mean I need to include ntddk.h insead of ntifs.h to use
FileAttributeTagInformation class? This seems strange. I would
expect both ntddk.h and ntifs.h to define _FILE_INFORMATION_CLASS in exactly
the same way. Unless someone could explain.


Thanks
Qasim

Comments

  • OSR_Community_UserOSR_Community_User Member Posts: 110,217
    Actually, ntifs.h is correct in the release. I am guessing that you
    didn't read the IFSKit errata (found at
    http://www.microsoft.com/DDK/IFSkit/errata.htm) This errata states:

    In the Windows 2000 IFS Kit installer (setup.exe), when choosing which
    component groups to install, if you select "Windows 2000 IFS Kit," do
    not select "Windows NT 4.0 IFS Kit." If you select both versions, the
    Windows NT 4.0 IFS Kit is installed on top of the Windows 2000 IFS Kit,
    causing the Windows 2000 versions of files such as ntifs.h to be
    replaced with the Windows NT 4.0 versions.

    I tried out this scenario and indeed I got the NT 4.0 ntifs.h which does
    not contain the enum's you wanted.

    If you will uninstall the IFSKit and reinstall it without selecting the
    4.0 IFSKit option, I believe you will get a proper Windows 2000 ntifs.h
    file.


    Neal Christiansen

    PS Everyone should periodically check this errata for problem updates.


    -----Original Message-----
    From: Qasim Zuhair [mailto:[email protected]]
    Sent: Monday, May 01, 2000 9:53 PM
    To: File Systems Developers
    Subject: [ntfsd] FileAttributeTagInformation




    Hello,

    I believe this question could only be answered by someone at Microsoft.
    The
    definition of enumerated type _FILE_INFORMATION_CLASS is different in
    W2K
    versions of ntifs.h and ntddk.h. For instance,
    FileAttributeTagInformation
    is defined as an enumerated constant of enumerated type
    _FILE_INFORMATION_CLASS only in ntddk.h. It is NOT defined as an
    enumerated
    constant in ntifs.h. *However*, in versions of ntifs.h & ntddk.h for W2K
    beta 3, this enumerated type is defined in exactly the same way in both
    header files. Apparently, ntifs.h was changed for final version of W2K.

    Due to this, my driver no longer compiles with final version of ntifs.h
    because the routine that handles IRP_MJ_QUERY_INFORMATION needs to case
    on
    FileAttributeTagInformation which is flagged as an undeclared
    identifier.
    Does this
    mean I need to include ntddk.h insead of ntifs.h to use
    FileAttributeTagInformation class? This seems strange. I would
    expect both ntddk.h and ntifs.h to define _FILE_INFORMATION_CLASS in
    exactly
    the same way. Unless someone could explain.


    Thanks
    Qasim


    ---
    You are currently subscribed to ntfsd as: [email protected]
    To unsubscribe send a blank email to $subst('Email.Unsub')
  • OSR_Community_UserOSR_Community_User Member Posts: 110,217
    Hello,

    You are correct. The problem was that I ended up selecting both "Windows
    2000 IFS Kit" and "Windows NT 4.0 IFS Kit" assuming that their files would
    be installed in different locations. However, as I realized it later and as
    you have stated it below, Windows NT 4.0 IFS Kit gets installed over Windows
    2000 IFS Kit. I reinstalled the kit
    selecting only Windows 2000 kit, and the problem went away.

    It is probably already being planned for the next release of Windows 2000
    kit but I think that installer should offer these choices as mutually
    exlusive choices rather
    than as check boxes. Otherwise, it appears as if it is possible to install
    both.

    Thanks for the help!

    Qasim



    -----Original Message-----
    From: Neal Christiansen [mailto:[email protected]]
    Sent: Friday, May 05, 2000 4:51 PM
    To: File Systems Developers
    Subject: [ntfsd] RE: FileAttributeTagInformation



    Actually, ntifs.h is correct in the release. I am guessing that you didn't
    read the IFSKit errata (found at
    http://www.microsoft.com/DDK/IFSkit/errata.htm
    <http://www.microsoft.com/DDK/IFSkit/errata.htm&gt; ) This errata states:

    In the Windows 2000 IFS Kit installer (setup.exe), when choosing which
    component groups to install, if you select "Windows 2000 IFS Kit," do not
    select "Windows NT 4.0 IFS Kit." If you select both versions, the Windows NT
    4.0 IFS Kit is installed on top of the Windows 2000 IFS Kit, causing the
    Windows 2000 versions of files such as ntifs.h to be replaced with the
    Windows NT 4.0 versions.

    I tried out this scenario and indeed I got the NT 4.0 ntifs.h which does not
    contain the enum's you wanted.

    If you will uninstall the IFSKit and reinstall it without selecting the 4.0
    IFSKit option, I believe you will get a proper Windows 2000 ntifs.h file.


    Neal Christiansen

    PS Everyone should periodically check this errata for problem updates.


    -----Original Message-----
    From: Qasim Zuhair [ mailto:[email protected]
    <mailto:[email protected]> ]
    Sent: Monday, May 01, 2000 9:53 PM
    To: File Systems Developers
    Subject: [ntfsd] FileAttributeTagInformation




    Hello,

    I believe this question could only be answered by someone at Microsoft. The
    definition of enumerated type _FILE_INFORMATION_CLASS is different in W2K
    versions of ntifs.h and ntddk.h. For instance, FileAttributeTagInformation
    is defined as an enumerated constant of enumerated type
    _FILE_INFORMATION_CLASS only in ntddk.h. It is NOT defined as an enumerated
    constant in ntifs.h. *However*, in versions of ntifs.h & ntddk.h for W2K
    beta 3, this enumerated type is defined in exactly the same way in both
    header files. Apparently, ntifs.h was changed for final version of W2K.

    Due to this, my driver no longer compiles with final version of ntifs.h
    because the routine that handles IRP_MJ_QUERY_INFORMATION needs to case on
    FileAttributeTagInformation which is flagged as an undeclared identifier.
    Does this
    mean I need to include ntddk.h insead of ntifs.h to use
    FileAttributeTagInformation class? This seems strange. I would
    expect both ntddk.h and ntifs.h to define _FILE_INFORMATION_CLASS in exactly

    the same way. Unless someone could explain.


    Thanks
    Qasim


    ---
    You are currently subscribed to ntfsd as: [email protected]
    To unsubscribe send a blank email to $subst('Email.Unsub')
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Upcoming OSR Seminars
OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!
Writing WDF Drivers 7 Dec 2020 LIVE ONLINE
Internals & Software Drivers 25 Jan 2021 LIVE ONLINE
Developing Minifilters 8 March 2021 LIVE ONLINE