Поделиться через


Заполнение структуры NDIS_GUID

Структура NDIS_GUID определяется следующим образом:

typedef struct _NDIS_GUID {
  GUID  Guid;
  union {
    NDIS_OID  Oid;
    NDIS_STATUS  Status;
  };
  ULONG  Size;
  ULONG  Flags;
} NDIS_GUID, *PNDIS_GUID;

Чтобы получить GUID для элемента Guid структуры, можно запустить приложение Uuidgen.exe. Дополнительные сведения об этом приложении см. в разделе Создание UUID интерфейса.

Элемент Oid или Status — это ULONG, представляющий собой код OID. NDIS 6.0 не сопоставляет настраиваемые индикаторы состояния с идентификаторами GUID WMI.

Если структура NDIS_GUID сопоставляет объект OID, возвращающий массив элементов данных, то элемент Size задает размер каждого элемента данных в массиве в байтах. Если данные не являются массивом, элемент Size указывает размер данных. Если размер элементов данных переменный или объект OID не возвращает данные, элемент Size должен иметь значение -1.

Побитовое ИЛИ следующих значений для элемента Flags указывает тип данных, связанных с GUID:

fNDIS_GUID_TO_OID
Если этот флаг установлен, структура NDIS_GUID сопоставляет GUID с идентификатором OID.

fNDIS_GUID_TO_STATUS
Зарезервировано для NDIS. Драйверы мини-портов не должны использовать этот флаг.

fNDIS_GUID_ANSI_STRING
Если этот флаг установлен, для GUID предоставляется строка ANSI, завершающаяся null.

fNDIS_GUID_UNICODE_STRING
Если этот флаг установлен, для GUID предоставляется строка Юникода.

fNDIS_GUID_ARRAY
Если этот флаг установлен, для GUID предоставляется массив элементов данных. Указанное значение Size указывает длину каждого элемента данных в массиве.

fNDIS_GUID_ALLOW_READ
Если этот флаг установлен, всем пользователям разрешено использовать этот GUID для получения сведений.

fNDIS_GUID_ALLOW_WRITE
Если этот флаг установлен, всем пользователям разрешено использовать этот GUID для задания сведений.

Примечание По умолчанию пользовательские идентификаторы GUID WMI, предоставляемые драйвером мини-порта, доступны только пользователям с правами администратора. Пользователь с правами администратора всегда может выполнять чтение или запись в пользовательский GUID, если драйвер минипорта поддерживает операции чтения или записи для этого GUID. Вы можете задать флаги fNDIS_GUID_ALLOW_READ и fNDIS_GUID_ALLOW_WRITE, чтобы разрешить всем пользователям доступ к пользовательскому GUID.

Обратите внимание, что для всех пользовательских идентификаторов GUID, регистрируемых драйвером, драйвер должен задать fNDIS_GUID_TO_OID. Драйверы мини-портов никогда не должны задавать fNDIS_GUID_TO_STATUS. Все остальные флаги можно объединить с помощью побитовой операции OR.