Заполнение структуры 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.