Preenchendo uma estrutura de NDIS_GUID
Uma estrutura NDIS_GUID é definida da seguinte maneira:
typedef struct _NDIS_GUID {
GUID Guid;
union {
NDIS_OID Oid;
NDIS_STATUS Status;
};
ULONG Size;
ULONG Flags;
} NDIS_GUID, *PNDIS_GUID;
Para obter um GUID para o membro Guid da estrutura, você pode executar o aplicativo Uuidgen.exe. Para obter mais informações sobre esse aplicativo, consulte Gerando UUIDs de interface.
O membro Oid ou Status é um ULONG que é um código OID. O NDIS 6.0 não mapeia indicações de status personalizadas para GUIDs WMI.
Se a estrutura NDIS_GUID mapear um OID que retorna uma matriz de itens de dados, o membro Size especificará o tamanho, em bytes, de cada item de dados na matriz. Se os dados não forem uma matriz, o membro Size especificará o tamanho dos dados. Se o tamanho dos itens de dados for variável ou se o OID não retornar dados, o membro Size deverá ser -1.
Um OR bit a bit dos seguintes valores para o membro Flags indica o tipo de dados associado ao GUID:
fNDIS_GUID_TO_OID
Quando esse sinalizador é definido, a estrutura NDIS_GUID mapeia um GUID para um OID.
fNDIS_GUID_TO_STATUS
Reservado para NDIS. Os drivers de miniporte não devem usar esse sinalizador.
fNDIS_GUID_ANSI_STRING
Quando esse sinalizador é definido, uma cadeia de caracteres ANSI terminada em nulo é fornecida para o GUID.
fNDIS_GUID_UNICODE_STRING
Quando esse sinalizador é definido, uma cadeia de caracteres Unicode é fornecida para o GUID.
fNDIS_GUID_ARRAY
Quando esse sinalizador é definido, uma matriz de itens de dados é fornecida para o GUID. O valor de Tamanho especificado indica o comprimento de cada item de dados na matriz.
fNDIS_GUID_ALLOW_READ
Quando esse sinalizador é definido, todos os usuários têm permissão para usar esse GUID para obter informações.
fNDIS_GUID_ALLOW_WRITE
Quando esse sinalizador é definido, todos os usuários têm permissão para usar esse GUID para definir informações.
Nota Por padrão, GUIDs WMI personalizados fornecidos por um driver de miniporto são acessíveis apenas para usuários com privilégios de administrador. Um usuário com privilégios de administrador sempre poderá ler ou gravar em um GUID personalizado se o driver de miniporto der suporte à operação de leitura ou gravação para esse GUID. Você pode definir os sinalizadores fNDIS_GUID_ALLOW_READ e fNDIS_GUID_ALLOW_WRITE para permitir que todos os usuários acessem um GUID personalizado.
Observe que, para todos os GUIDs personalizados registrados por um driver, o driver deve definir fNDIS_GUID_TO_OID. Os drivers de miniporte nunca devem definir fNDIS_GUID_TO_STATUS. Todos os outros sinalizadores podem ser combinados usando uma operação OR bit a bit.