ntddk.inc использование безымянных структур (вопрос по си)

Тема в разделе "WASM.WIN32", создана пользователем letopisec, 12 авг 2004.

  1. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    в ntddk.inc
    Код (Text):
    1.  
    2.     union {
    3.  
    4.         struct {
    5.  
    6.             union {
    7.  
    8.                 //
    9.                 // DeviceQueueEntry - The device queue entry field is used to
    10.                 // queue the IRP to the device driver device queue.
    11.                 //
    12.  
    13.                 KDEVICE_QUEUE_ENTRY DeviceQueueEntry;
    14.  
    15.                 struct {
    16.  
    17.                     //
    18.                     // The following are available to the driver to use in
    19.                     // whatever manner is desired, while the driver owns the
    20.                     // packet.
    21.                     //
    22.  
    23.                     PVOID DriverContext[4];
    24.  
    25.                 } ;
    26.  
    27.             } ;
    28.  
    29.          ...
    30.  
    31.         } Tail;
    32.     } IRP;
    33.  
    34.  




    Как обратится например к PVOID DriverContext[2]?

    Ведь экземпляр структуры в которой определён

    PVOID DriverContxet[4] - безымянный.



    Ничего не могу понять.



    Спасибо.
     
  2. rsrc

    rsrc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2004
    Сообщения:
    24
    Адрес:
    Russia
    Примерно так:

    ULONG u = *(ULONG*)IRP.Tail.DriverContext[2]
     
  3. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    Выдаётся ошибка:



    'DriverContext' is not a member of struct



    смотрел Four-F'овский ntddk.inc, там тоже бызымянные(естессно) структуры и объединения но в асм.



    может кто знает (а ведь наверняка) как обращатся к членам



    таких структур? Искал по инету - ничего не нашёл.



    ПОМОГИТЕ плз.



    заранее благодарю!
     
  4. eel

    eel New Member

    Публикаций:
    0
    Регистрация:
    2 авг 2004
    Сообщения:
    3
    rsrc

    Не совсем.



    IRP irp;

    rp.Tail.Overlay.DriverContext[0] = (void*)0x00EE1B01;
     
  5. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    Всем спасибо!



    eel



    Да я был неточен. Действительно union - Tail, struct -Overlay.



    А проблема была в том, что для проверки (можно ли так обращатся) исползовал BC311.

    Другой компиллер - и всй исчезло ;)
     
  6. VOOrDOOluck

    VOOrDOOluck New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2004
    Сообщения:
    51
    Адрес:
    Ukraine
    letopisec

    опоздал Ж:)