Método IWDFFileHandleTargetFactory::CreateFileHandleTarget (wudfddi.h)
[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui o UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum recurso novo está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Os drivers universais do Windows devem usar o UMDF 2. Para obter mais informações, consulte Introdução aoda UMDF .]
O método CreateFileHandleTarget cria um objeto de destino de E/S baseado em identificador de arquivo.
Sintaxe
HRESULT CreateFileHandleTarget(
[in] HANDLE hTarget,
[out] IWDFIoTarget **ppTarget
);
Parâmetros
[in] hTarget
Um identificador para o dispositivo de destino. O identificador deve ter sido aberto anteriormente com o sinalizador FILE_FLAG_OVERLAPPED. Por exemplo, FILE_FLAG_OVERLAPPED deve ter sido especificado no parâmetro
[out] ppTarget
Um ponteiro para um local que recebe um ponteiro para a interface IWDFIoTarget do objeto de destino de E/S.
Valor de retorno
CreateFileHandleTarget retorna um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
CreateFileHandleTarget criou com êxito um objeto de destino de E/S baseado em identificador de arquivo. |
|
CreateFileHandleTarget encontrou uma falha de alocação. |
CreateFileHandleTarget também pode retornar outros valores HRESULT definidos em Winerror.h.
Observações
Se o driver usar um destino de E/S baseado em identificador de arquivo, a seção DDInstall.WDF do arquivo INF do driver deverá definir a diretiva UmdfDispatcher para filehandle. Para obter mais informações sobre UmdfDispatcher, consulte Especificando diretivas do WDF.
Depois que o driver cria um objeto de destino de E/S baseado em identificador de arquivo, ele pode formatar solicitações de E/S e enviá-las para o destino de E/S. Normalmente, se o driver chamar
Quando o driver chama
O identificador Win32 que o driver passa para CreateFileHandleTarget deve permanecer válido durante o tempo de vida do objeto de destino de E/S baseado em identificador de arquivo. (A estrutura não usa uma referência nesse identificador de destino, portanto, o driver deve garantir que o identificador Win32 permaneça válido.)
Quando o driver terminar de usar a interface IWDFIoTarget
Para obter mais informações sobre destinos de E/S e CreateFileHandleTarget, consulte Inicializando um destino de E/S geral noUMDF.
Exemplos
O exemplo de código a seguir mostra como criar um destino de E/S baseado em identificador de arquivo para um pipe nomeado. Neste exemplo, m_FxDevice é o ponteiro de interface que IWDFDriver::CreateDevice.
HRESULT hr = S_OK;
CComPtr<IWDFFileHandleTargetFactory> pFileHandleTargetFactory;
//
// Create a pipe and get the handle.
//
m_WriteHandle = CreateNamedPipe(NP_NAME,
PIPE_ACCESS_DUPLEX|FILE_FLAG_OVERLAPPED,
PIPE_TYPE_MESSAGE|PIPE_READMODE_MESSAGE|PIPE_WAIT,
2,
MAX_TRANSFER_SIZE,
MAX_TRANSFER_SIZE,
1000,
NULL);
if (m_WriteHandle == INVALID_HANDLE_VALUE) {
DWORD err = GetLastError();
hr = HRESULT_FROM_WIN32(err);
}
//
// Obtain the IWDFFileHandleTargetFactory interface
// by calling IWDFDevice::QueryInterface.
//
if (SUCCEEDED(hr)) {
hr = m_FxDevice->QueryInterface(IID_PPV_ARGS(&pFileHandleTargetFactory));
}
//
// Create a file handle target.
//
if (SUCCEEDED(hr)) {
hr = pFileHandleTargetFactory->CreateFileHandleTarget(m_WriteHandle,
&m_WriteTarget);
}
Requisitos
Requisito | Valor |
---|---|
fim do suporte | Indisponível no UMDF 2.0 e posterior. |
da Plataforma de Destino |
Área de trabalho |
versão mínima do UMDF | 1.5 |
cabeçalho | wudfddi.h (inclua Wudfusb.h) |
de DLL |
WUDFx.dll |