Ndis

Тема в разделе "WASM.NT.KERNEL", создана пользователем drem1lin, 26 авг 2010.

  1. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    У меня есть базовый адрес NDIS и RVA до NdisMiniportList, что бы сделать пробежку по всем минипортам мне надо адрес NDIS с RVA преобразовать к типу NDIS_MINIPORT_BLOCK. Но код приведенный ниже не удается скомпилировать
    Код (Text):
    1. error C2037: left of 'SymbolicLinkName' specifies undefined struct/union '_NDIS_MINIPORT_BLOCK'
    и я не могу понять с чем это связано.. почему NDIS_MINIPORT_BLOCK и РNDIS_MINIPORT_BLOCK работают а _NDIS_MINIPORT_BLOCK пишет неопределен? и главное, я же к коде его не использую? точнее использую косвенно.. Залезал в NDIS.h, там над структурой _NDIS_MINIPORT_BLOCK стоит
    Код (Text):
    1. #if NDIS_LEGACY_MINIPORT
    я так понимаю это как то связано именно с ним..
    Код (Text):
    1. PNDIS_MINIPORT_BLOCK* NDISmpBlock;
    2.  
    3.     hNDIS = GetModuleHandle("ndis.sys");
    4.     if(hNDIS==NULL)
    5.     {
    6.         DbgPrint("TestDriver: GetModuleHandle==NULL...\n");
    7.         return STATUS_SUCCESS;
    8.     }
    9.     DbgPrint("TestDriver: GetModuleHandle: 0x%x\n", hNDIS);
    10.     NDISRVA = RVATOVA(hNDIS,NDISRVA);
    11.     DbgPrint("TestDriver: NdisMiniportList: 0x%x\n",NDISRVA);
    12.     __try
    13.     {
    14.         NDISmpBlock = (PNDIS_MINIPORT_BLOCK*)NDISRVA;
    15.         DbgPrint("TestDriver: MiniPort SymbolicLinkName: %ws\n", NDISmpBlock->SymbolicLinkName);
    16.     }
    17.     __except(EXCEPTION_EXECUTE_HANDLER) {
    18.         DbgPrint("TestDriver: Exception raised...\n");
    19.     }
     
  2. lhc645

    lhc645 New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    106
    Чтобы структура была определена нужно написать перед включением ndis.h

    #define NDIS_WRAPPER 1

    Если вы посмотрите как определяется NDIS_LEGACY_MINIPORT

    Код (Text):
    1.  
    2. #if ((defined(NDIS_MINIPORT_DRIVER) && (NDIS_MINIPORT_MAJOR_VERSION < 6)) || NDIS_WRAPPER)
    3. #define NDIS_LEGACY_MINIPORT    1
    И еще нужно писать
    (*NDISmpBlock)->SymbolicLinkName.Buffer
    вместо
    NDISmpBlock->SymbolicLinkName
     
  3. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    спасибо за ответ, но в jabber мы этот вопрос уже закрыли. тему можно закрыть