Propriedades KS

Uma Propriedade representa uma funcionalidade ou uma configuração de estado de controle que pertence a um objeto de streaming de kernel, como um filtro ou PIN. Os clientes de um minidriver de streaming de kernel podem enviar solicitações de propriedade Get e Set (KSPROPERTY_TYPE_GET e KSPROPERTY_TYPE_SET) para os filtros e Pins que a minidriver instanciou. Um grupo de propriedades relacionadas é conhecido como um conjunto de propriedades.

Para obter ou definir propriedades individuais, os clientes de modo de usuário chamam a função DeviceIoControl do Win32 com o parâmetro dwIoControlCode definido como IOCTL_KS_PROPERTY. DeviceIoControl é descrito na documentação do SDK do Microsoft Windows. Os clientes do modo kernel devem chamar KsSynchronousDeviceControl.

O buffer de entrada é uma estrutura KSPROPERTY ou um wrapper que contém uma estrutura KSPROPERTY e outras informações relevantes para a solicitação. Em resposta a essa chamada, o sistema operacional despacha um IRP para o driver de classe.

Quando o driver de classe recebe o IRP resultante, ele chama KsPropertyHandler. O driver de classe inclui como um parâmetro de chamada o endereço da estrutura KSPROPERTY que identifica as especificidades da solicitação de propriedade. A solicitação de propriedade é manipulada automaticamente no nível de driver de classe ou por um manipulador fornecido pelo minidriver. Consulte conjuntos de propriedades de streaming de kernel para obter informações de referência, incluindo quais conjuntos de propriedades são manipulados pelo driver de classe e que exigem manipuladores fornecidos pelo minidriver. Um minidriver pode substituir ou aumentar o manipulador de driver de classe fornecendo retornos de chamada para uma propriedade que é, por padrão, manipulada pelo driver de classe.

Se o minidriver tiver fornecido manipuladores para essa propriedade, KsPropertyHandler , por sua vez, transformará a solicitação para o retorno de chamada fornecido pelo minidriver apropriado.

Um minidriver fornece ponteiros para suas propriedades de suporte de retornos de chamada em uma estrutura do tipo KSPROPERTY_ITEM. Um minidriver agrupa uma matriz de estruturas de KSPROPERTY_ITEM relacionadas em uma estrutura de KSPROPERTY_SET . Modelos de driver de classe diferentes têm métodos um pouco diferentes para o minidriver tornar os dados do conjunto de propriedades disponíveis para o driver de classe. Você pode encontrar informações específicas do driver de classe seguindo os links no kernel streaming.

O minidriver também fornece um ponteiro para uma estrutura de KSPROPERTY_VALUES em uma estrutura de KSPROPERTY_ITEM. A estrutura de KSPROPERTY_VALUES, por sua vez, contém uma matriz de estruturas de KSPROPERTY_MEMBERSLIST . É aí que o minidriver especifica o tamanho e o tipo de valores aceitáveis para a propriedade. Cada estrutura de KSPROPERTY_MEMBERSLIST contém um membro de cabeçalho: consulte KSPROPERTY_MEMBERSHEADER para obter informações sobre como especificar intervalos ou valores válidos para uma propriedade que seu minidriver dá suporte. você também pode encontrar uma implementação desse mecanismo no exemplo de Testcap no Microsoft Windows Driver Kit (WDK).

Para relatar o tamanho e o tipo de valores aceitáveis para uma propriedade, o driver de classe retorna uma estrutura de KSPROPERTY_DESCRIPTION em resposta a uma solicitação de KSPROPERTY_TYPE_BASICSUPPORT do cliente.

O driver de classe pode acrescentar uma lista de estruturas de KSPROPERTY_MEMBERSHEADER à estrutura de KSPROPERTY_DESCRIPTION.