Inicializando um destino de E/S geral
A estrutura inicializa o destino de E/S local de um driver para um dispositivo quando o driver chama WdfDeviceCreate. Para recuperar um identificador para o destino de E/S local de um dispositivo, o driver chama WdfDeviceGetIoTarget.
A maioria dos drivers envia solicitações apenas para o destino de E/S local.
Para inicializar um destino de E/S remoto para um dispositivo, o driver deve:
Chame WdfIoTargetCreate para criar um objeto de destino de E/S.
Chame WdfIoTargetOpen para abrir um destino de E/S para que o driver possa enviar solicitações para ele.
Quando o driver chama WdfIoTargetOpen, ele normalmente identifica o destino de E/S remoto fornecendo uma cadeia de caracteres Unicode que representa um nome de objeto. Esse nome pode identificar um dispositivo, arquivo ou interface do dispositivo. A estrutura envia solicitações de E/S para a parte superior da pilha de driver que dá suporte ao nome do objeto.
Raramente, um driver pode identificar um destino de E/S remoto fornecendo um ponteiro para uma estrutura do WDM (Modelo de Driver do Windows) DEVICE_OBJECT. Esse ponteiro identifica um driver diferente na pilha do driver de chamada. Os drivers baseados em estrutura raramente usam essa técnica porque raramente têm acesso às estruturas de DEVICE_OBJECT de outros drivers.
O exemplo a seguir mostra como o driver de exemplo Ndisedge usa a técnica acima para criar e abrir um destino de E/S remoto:
status = WdfIoTargetCreate(Adapter->WdfDevice,
WDF_NO_OBJECT_ATTRIBUTES,
&Adapter->IoTarget);
if (!NT_SUCCESS(status)) {
DEBUGP(MP_ERROR, ("WdfIoTargetCreate failed 0x%x\n",
status));
return status;
}
WDF_IO_TARGET_OPEN_PARAMS_INIT_CREATE_BY_NAME(&openParams,
&fileName,
STANDARD_RIGHTS_ALL
);
status = WdfIoTargetOpen(Adapter->IoTarget,
&openParams);
if (!NT_SUCCESS(status)) {
DEBUGP(MP_ERROR, ("WdfIoTargetOpen failed 0x%x\n", status));
return status;
}