Método IWDFIoTarget2::FormatRequestForFlush (wudfddi.h)
[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum novo recurso está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Drivers universais do Windows devem usar UMDF 2. Para obter mais informações, consulte Introdução com UMDF.]
O método FormatRequestForFlush cria uma solicitação de E/S para uma operação de liberação, mas não envia a solicitação para um destino de E/S.
Sintaxe
HRESULT FormatRequestForFlush(
[in] IWDFIoRequest *pRequest,
[in, optional] IWDFFile *pFile
);
Parâmetros
[in] pRequest
Um ponteiro para a interface IWDFIoRequest do objeto de solicitação que representa a solicitação de E/S.
[in, optional] pFile
Um ponteiro para a interface IWDFFile do objeto de arquivo associado à solicitação de E/S. Esse parâmetro é opcional e pode ser NULL, mas é necessário para o destino de E/S padrão.
Retornar valor
FormatRequestForFlush retornará S_OK se a operação for bem-sucedida. Caso contrário, o método poderá retornar um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
A estrutura não pôde alocar memória. |
Esse método pode retornar um dos outros valores que Winerror.h contém.
Comentários
Alguns drivers devem liberar buffers armazenados em cache que existem em um driver inferior ou no dispositivo. Por exemplo, drivers que existem em uma pilha de driver para um dispositivo serial ou um dispositivo de armazenamento podem dar suporte a essa operação.
Use o método FormatRequestForFlush , seguido pelo método IWDFIoRequest::Send , para enviar solicitações de liberação de forma síncrona ou assíncrona.
Exemplos
O exemplo de código a seguir faz parte de uma função de retorno de chamada IQueueCallbackDefaultIoHandler::OnDefaultIoHandler . Se a função de retorno de chamada receber uma solicitação de liberação, ela enviará a solicitação para o destino de E/S padrão do dispositivo.
void
CMyQueue::OnDefaultIoHandler(
IWDFIoQueue* pQueue,
IWDFIoRequest* pRequest
)
{
HRESULT hr;
IWDFDevice *pDevice;
IWDFIoTarget *pTarget;
IWDFFile *pFile;
//
// Obtain the device, default I/O target, and file object.
//
pQueue->GetDevice(&pDevice);
pDevice->GetDefaultIoTarget(&pTarget);
pRequest->GetFileObject(&pFile);
if (WdfRequestFlushBuffers==pRequest->GetType())
{
//
// Declare an IWDFIoTarget2 interface pointer and obtain the
// IWDFIoTarget2 interface from the IWDFIoTarget interface.
//
CComQIPtr<IWDFIoTarget2> target2(pTarget);
//
// Format a flush request and send it to the I/O target.
//
hr = target2->FormatRequestForFlush(pRequest,
pFile);
if (SUCCEEDED(hr))
{
hr = pRequest->Send(pTarget,
WDF_REQUEST_SEND_OPTION_SYNCHRONOUS,
0);
}
}
...
//
// Release objects.
//
SAFE_RELEASE(pDevice);
SAFE_RELEASE(pTarget);
SAFE_RELEASE(pFile);
}
Requisitos
Requisito | Valor |
---|---|
Fim do suporte | Indisponível no UMDF 2.0 e posterior. |
Plataforma de Destino | Área de Trabalho |
Versão mínima do UMDF | 1,9 |
Cabeçalho | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |