Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
[Aplica-se a KMDF e UMDF]
O método WdfDriverCreate cria um objeto de driver de estrutura para o driver de chamada.
Sintaxe
NTSTATUS WdfDriverCreate(
[in] PDRIVER_OBJECT DriverObject,
[in] PCUNICODE_STRING RegistryPath,
[in, optional] PWDF_OBJECT_ATTRIBUTES DriverAttributes,
[in] PWDF_DRIVER_CONFIG DriverConfig,
[out, optional] WDFDRIVER *Driver
);
Parâmetros
[in] DriverObject
Um ponteiro para uma estrutura de DRIVER_OBJECT que representa um objeto de driver WDM (Modelo de Driver do Windows). O driver recebe esse ponteiro como entrada para sua rotina de DriverEntry.
[in] RegistryPath
Um ponteiro para uma estrutura de UNICODE_STRING que contém a cadeia de caracteres de caminho do Registro que o driver recebeu como entrada para sua rotina de DriverEntry.
[in, optional] DriverAttributes
Um ponteiro para uma estrutura de WDF_OBJECT_ATTRIBUTES alocada pelo chamador. (O membro ParentObject da estrutura deve ser NULL .) Esse parâmetro é opcional e pode ser WDF_NO_OBJECT_ATTRIBUTES.
[in] DriverConfig
Um ponteiro para uma estrutura de WDF_DRIVER_CONFIG alocada por chamador.
[out, optional] Driver
Um ponteiro para um local que recebe um identificador para o novo objeto de driver da estrutura. Esse parâmetro é opcional e pode ser WDF_NO_HANDLE.
Valor de retorno
WdfDriverCreate retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método poderá retornar um dos seguintes valores:
| Código de retorno | Descrição |
|---|---|
|
O driver chamado WdfDriverCreate mais de uma vez. |
|
Um driver PnP (não Plug and Play) especificou uma função de retorno de chamada EvtDriverDeviceAdd. |
Para obter mais informações sobre valores retornados, consulte Erros de Criação de Objeto da Estrutura.
Esse método também pode retornar outros valores NTSTATUS .
Ocorre uma verificação de bugs do sistema se o parâmetro DriverObject, RegistryPathou DriverConfig estiver NULL.
Observações
Um driver que usa Kernel-Mode Driver Framework deve chamar WdfDriverCreate de dentro de sua rotina de DriverEntry, antes de chamar qualquer outra rotina de estrutura. Para obter mais informações sobre DriverEntry, consulte DriverEntry for Framework-based Drivers.
Antes que o driver chame WdfDriverCreate, o driver deve chamar WDF_DRIVER_CONFIG_INIT para inicializar sua estrutura de WDF_DRIVER_CONFIG.
O objeto de driver da estrutura é a parte superior da árvore de objetos da estrutura do driver e, portanto, não tem um objeto pai.
Se o driver fornecer EvtCleanupCallback ou EvtDestroyCallback funções de retorno de chamada para o objeto driver, observe que a estrutura chama essas funções de retorno de chamada em IRQL = PASSIVE_LEVEL.
Exemplos
O exemplo de código a seguir é uma rotina DriverEntry que inicializa uma estrutura de WDF_DRIVER_CONFIG e cria um objeto de driver de estrutura.
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
WDF_DRIVER_CONFIG config;
NTSTATUS status = STATUS_SUCCESS;
WDF_DRIVER_CONFIG_INIT(
&config,
MyEvtDeviceAdd
);
config.EvtDriverUnload = MyEvtDriverUnload;
status = WdfDriverCreate(
DriverObject,
RegistryPath,
WDF_NO_OBJECT_ATTRIBUTES,
&config,
WDF_NO_HANDLE
);
if (!NT_SUCCESS(status)) {
TraceEvents(
TRACE_LEVEL_ERROR,
DBG_PNP,
"WdfDriverCreate failed with status %!STATUS!",
status
);
}
return status;
}
Requisitos
| Requisito | Valor |
|---|---|
| da Plataforma de Destino | Universal |
| versão mínima do KMDF | 1.0 |
| versão mínima do UMDF | 2.0 |
| cabeçalho | wdfdriver.h (inclua Wdf.h) |
| Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
| IRQL | PASSIVE_LEVEL |
| regras de conformidade de DDI | ChangeQueueState(kmdf), DriverAttributeChanged(kmdf), DriverCreate(kmdf), KmdfIrql(kmd, KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), MiniportOnlyWdmDevice(kmdf) |