Função WdfFdoInitAllocAndQueryProperty (wdffdo.h)

[Aplica-se a KMDF e UMDF]

O método WdfFdoInitAllocAndQueryProperty aloca um buffer e recupera uma propriedade de dispositivo especificada.

Sintaxe

NTSTATUS WdfFdoInitAllocAndQueryProperty(
  [in]           PWDFDEVICE_INIT          DeviceInit,
  [in]           DEVICE_REGISTRY_PROPERTY DeviceProperty,
  [in]           POOL_TYPE                PoolType,
  [in, optional] PWDF_OBJECT_ATTRIBUTES   PropertyMemoryAttributes,
  [out]          WDFMEMORY                *PropertyMemory
);

Parâmetros

[in] DeviceInit

Um ponteiro para uma estrutura WDFDEVICE_INIT que o driver obteve de sua função de retorno de chamada EvtDriverDeviceAdd .

[in] DeviceProperty

Um valor de enumerador do tipo DEVICE_REGISTRY_PROPERTY que identifica a propriedade do dispositivo a ser recuperada.

[in] PoolType

Um valor de enumerador tipo POOL_TYPE que especifica o tipo de memória a ser alocado.

[in, optional] PropertyMemoryAttributes

Um ponteiro para uma estrutura de WDF_OBJECT_ATTRIBUTES alocada pelo chamador que descreve atributos de objeto para o objeto de memória que WdfFdoInitAllocAndQueryProperty alocará. Esse parâmetro é opcional e pode ser WDF_NO_OBJECT_ATTRIBUTES.

[out] PropertyMemory

Um ponteiro para um local do tipo WDFMEMORY que recebe um identificador para um objeto de memória de estrutura.

Retornar valor

Se a operação for bem-sucedida, o método retornará STATUS_SUCCESS. Os valores retornados adicionais incluem:

Código de retorno Descrição
STATUS_INVALID_PARAMETER ou STATUS_INVALID_PARAMETER_2
O valor DeviceProperty especificado é inválido.
STATUS_INVALID_DEVICE_REQUEST
A estrutura WDFDEVICE_INIT não foi obtida da função de retorno de chamada EvtDriverDeviceAdd do driver.
 

O método também pode retornar outros valores NTSTATUS.

Comentários

O driver deve chamar WdfFdoInitAllocAndQueryProperty antes de chamar WdfDeviceCreate. Para obter mais informações sobre como chamar WdfDeviceCreate, consulte Criando um objeto de dispositivo framework.

Depois de chamar WdfDeviceCreate, um driver pode obter informações de propriedade do dispositivo chamando WdfDeviceAllocAndQueryProperty.

Para obter mais informações sobre o método WdfFdoInitAllocAndQueryProperty , consulte Criando objetos de dispositivo em um driver de função.

Como alternativa, você pode usar WdfFdoInitAllocAndQueryPropertyEx para acessar as propriedades do dispositivo expostas por meio do Modelo de Propriedade Unificada.

Exemplos

O exemplo de código a seguir chama WdfFdoInitAllocAndQueryProperty para obter um identificador para um objeto de memória de estrutura que contém o nome da classe de instalação de um dispositivo. Em seguida, o exemplo chama WdfMemoryGetBuffer para obter um ponteiro para o buffer que contém a cadeia de caracteres Unicode do nome da classe de instalação.

NTSTATUS  status = STATUS_SUCCESS;
PVOID  pMemoryBuffer = NULL;
WDFMEMORY  memory = NULL;

status = WdfFdoInitAllocAndQueryProperty(
                                         DeviceInit,
                                         DevicePropertyClassName, 
                                         NonPagedPool,
                                         WDF_NO_OBJECT_ATTRIBUTES,
                                         &memory
                                         );
if(NT_SUCCESS(status)){
 pMemoryBuffer = WdfMemoryGetBuffer(
                                    memory,
                                    NULL
                                    );
}

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Versão mínima do UMDF 2,0
Cabeçalho wdffdo.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
Regras de conformidade de DDI DeviceInitAPI(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Confira também

WdfDeviceAllocAndQueryProperty

WdfFdoInitQueryProperty