Доброго времени суток.
Есть фильтрующий драйвер 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 в момент отправки запроса.
Если есть соображения — буду признателен.