Função WdfIoTargetOpen (wdfiotarget.h)
[Aplica-se a KMDF e UMDF]
O método WdfIoTargetOpen abre um destino de E/S remoto para que o driver possa enviar solicitações de E/S para ele.
Sintaxe
NTSTATUS WdfIoTargetOpen(
[in] WDFIOTARGET IoTarget,
[in] PWDF_IO_TARGET_OPEN_PARAMS OpenParams
);
Parâmetros
[in] IoTarget
Um identificador para um objeto de destino de E/S obtido de uma chamada anterior para WdfIoTargetCreate.
[in] OpenParams
Um ponteiro para uma estrutura de WDF_IO_TARGET_OPEN_PARAMS alocada pelo chamador.
Retornar valor
WdfIoTargetOpen retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método pode retornar um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
O destino de E/S especificado já está aberto. |
|
Os recursos do sistema disponíveis não foram suficientes para concluir a operação. |
|
O tamanho da estrutura de WDF_IO_TARGET_OPEN_PARAMS especificada pelo OpenParams estava incorreto. |
|
O membro TargetFileObject da estrutura WDF_IO_TARGET_OPEN_PARAMS do chamador especificou um objeto de arquivo inválido. |
|
Um parâmetro inválido foi detectado. |
|
O nome do dispositivo identificado no parâmetro OpenParams não pode ser encontrado. |
Esse método também pode retornar outros valores NTSTATUS.
Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.
Comentários
Os drivers podem abrir destinos de E/S remotos fornecendo uma cadeia de caracteres Unicode que representa um nome de objeto ou fornecendo um ponteiro para uma estrutura do WDM (Modelo de Driver do Windows) DEVICE_OBJECT. (Os drivers baseados em estrutura normalmente não têm ponteiros para estruturas de DEVICE_OBJECT de outros drivers.)
Para obter um nome de interface do dispositivo antes de chamar WdfIoTargetOpen, um driver UMDF deve chamar CM_Register_Notification para se registrar para a notificação de chegada e remoção da interface. Em seguida, ele pode abrir o destino remoto usando o nome simbólico da interface que recebe na rotina de retorno de chamada de notificação de interface. O driver deve continuar a escutar a notificação de remoção enquanto o identificador está aberto. Se o driver de destino falhar, o driver UMDF deverá fechar o identificador.
Se a interface já existir, um driver UMDF deverá chamar CM_Get_Device_Interface_List, possivelmente chamando CM_Get_Device_Interface_List_Size primeiro para determinar o tamanho do buffer necessário.
Se você quiser que o driver use seu destino de E/S local, o driver deverá chamar WdfDeviceGetIoTarget em vez de WdfIoTargetOpen.
Se uma chamada para WdfIoTargetOpen falhar, o driver deverá chamar WdfObjectDelete para excluir o objeto de destino de E/S.
Para obter mais informações sobre WdfIoTargetOpen, consulte Inicializando um destino de E/S geral.
Para obter mais informações sobre destinos de E/S, consulte Usando destinos de E/S.
Exemplos
O exemplo a seguir cria um objeto de destino de E/S, inicializa uma estrutura WDF_IO_TARGET_OPEN_PARAMS e abre um destino de E/S remoto especificando o nome simbólico do link de um dispositivo.
WDF_OBJECT_ATTRIBUTES ioTargetAttrib;
WDFIOTARGET ioTarget;
WDF_IO_TARGET_OPEN_PARAMS openParams;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(
&ioTargetAttrib,
TARGET_DEVICE_INFO
);
status = WdfIoTargetCreate(
device,
&ioTargetAttrib,
&ioTarget
);
if (!NT_SUCCESS(status)) {
return status;
}
WDF_IO_TARGET_OPEN_PARAMS_INIT_OPEN_BY_NAME(
&openParams,
SymbolicLink,
STANDARD_RIGHTS_ALL
);
status = WdfIoTargetOpen(
ioTarget,
&openParams
);
if (!NT_SUCCESS(status)) {
WdfObjectDelete(ioTarget);
return status;
}
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 | wdfiotarget.h (inclua Wdf.h) |
Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
Regras de conformidade da DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |