NdisFOidRequest
От: Аноним  
Дата: 09.04.13 12:45
Оценка:
Доброго времени суток.

Есть фильтрующий драйвер ndis 6.0. Хочу получить информацию о сетевой карточке. Для этого сам посылаю OID запрос с кодом OID_GEN_VENDOR_DESCRIPTION, но возвращаемое значение всегда (даже если код OID_GEN_SUPPORTED_LIST) равно 0xC0000001 (STATUS_UNSUCCESSFUL).

Листинг:

VOID TestOid(NDIS_HANDLE filter_handle)
{
    PNDIS_OID_REQUEST req;
    
    NDIS_STATUS status = NdisFilterAllocateMemory(&req, sizeof(NDIS_OID_REQUEST));
    if (status != NDIS_STATUS_SUCCESS)
    {
        Print(("TestOid: mem alloc failed\n"));
        return;
    }
    NdisZeroMemory(req, sizeof(NDIS_OID_REQUEST));

    req->Header.Type = NDIS_OBJECT_TYPE_OID_REQUEST;
    req->Header.Revision = NDIS_OID_REQUEST_REVISION_1;
    req->Header.Size = NDIS_SIZEOF_OID_REQUEST_REVISION_1;

    req->RequestType = NdisRequestQueryInformation;
    req->RequestHandle = filter_handle;
    
    req->DATA.QUERY_INFORMATION.Oid = OID_GEN_VENDOR_DESCRIPTION;
   
    status = NdisFOidRequest(filter_handle, req);
    Print(("TestOid status: s 0x%x\n", status));

    NdisFreeMemory(req, sizeof(NDIS_OID_REQUEST), 0);
}


P.S. даже при попытке узнать необходимый размер размер буфера, все равно STATUS_UNSUCCESSFULL.
P.P.S. данная ф-ция вызывается при обработке собственного IOCTL запроса, дабы фильтр находился в Running state в момент отправки запроса.

Если есть соображения — буду признателен.
ndis filter oid
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.