Método IWDFIoTarget2::FormatRequestForSetInformation (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. Os drivers universais do Windows devem usar o UMDF 2. Para obter mais informações, consulte Introdução com UMDF.]
O método FormatRequestForSetInformation formata uma solicitação de E/S para definir informações sobre um arquivo, mas não envia a solicitação para um destino de E/S.
Sintaxe
HRESULT FormatRequestForSetInformation(
[in] IWDFIoRequest *pRequest,
[in] WDF_FILE_INFORMATION_CLASS InformationClass,
[in, optional] IWDFFile *pFile,
[in, optional] IWDFMemory *pInformationMemory,
[in, optional] PWDFMEMORY_OFFSET pInformationMemoryOffset
);
Parâmetros
[in] pRequest
Um ponteiro para a interface IWDFIoRequest do objeto de solicitação que representa a solicitação de E/S.
[in] InformationClass
Um valor do tipo WDF_FILE_INFORMATION_CLASS que especifica o tipo de informação a ser definido.
[in, optional] pFile
Um ponteiro para a interface IWDFFile do objeto de arquivo associado à solicitação de E/S. Esse parâmetro é necessário para destinos de E/S locais e remotos e é opcional (pode ser NULL) para destinos de E/S do identificador de arquivo.
[in, optional] pInformationMemory
Um ponteiro para a interface IWDFMemory de um objeto de memória. Esse objeto representa o buffer de entrada, que contém informações de arquivo fornecidas pelo driver especificadas pelo parâmetro InformationClass . Esse parâmetro é opcional e pode ser NULL.
[in, optional] pInformationMemoryOffset
Um ponteiro para uma estrutura de WDFMEMORY_OFFSET que fornece valores opcionais de deslocamento e comprimento de bytes. A estrutura usa esses valores para determinar o endereço inicial e o comprimento, dentro do buffer de entrada, para a transferência de dados. Se esse ponteiro for NULL, a transferência de dados começará no início do buffer de entrada e o tamanho da transferência será o tamanho do buffer.
Retornar valor
FormatRequestForSetInformation retornará S_OK se a operação for bem-sucedida. Caso contrário, o método poderá retornar o seguinte valor:
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
Use o método FormatRequestForSetInformation , seguido pelo método IWDFIoRequest::Send , para enviar solicitações de forma síncrona ou assíncrona para um destino de E/S.
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 informações definida, 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;
IWDFMemory *pInMemory;
WDF_FILE_INFORMATION_CLASS infoClass;
//
// Obtain the device, default I/O target, and file object.
//
pQueue->GetDevice(&pDevice);
pDevice->GetDefaultIoTarget(&pTarget);
pRequest->GetFileObject(&pFile);
if (WdfRequestQueryInformation==pRequest->GetType())
{
//
// Declare an IWDFIoRequest2 interface pointer and obtain the
// IWDFIoRequest2 interface from the IWDFIoRequest interface.
//
CComQIPtr<IWDFIoRequest2> r2 = pRequest;
//
// Declare an IWDFIoTarget2 interface pointer and obtain the
// IWDFIoTarget2 interface from the IWDFIoTarget interface.
//
CComQIPtr<IWDFIoTarget2> target2(pTarget);
//
// Get the I/O request's input buffer.
//
hr = pWdfRequest2->RetrieveInputMemory(&pInMemory);
if (!SUCCEEDED(hr)) goto Error;
//
// Get the I/O request's parameters.
//
hr = pWdfRequest2->GetSetInformationParameters(&infoClass,
NULL);
if (!SUCCEEDED(hr)) goto Error;
//
// Format a query information request and send it to the I/O target.
//
hr = target2->FormatRequestForSetInformation(pRequest,
infoClass,
pFile,
pInMemory,
NULL);
if (!SUCCEEDED(hr)) goto Error;
hr = pRequest->Send(pTarget,
WDF_REQUEST_SEND_OPTION_SYNCHRONOUS,
0);
}
...
Error;
//
// Release objects.
//
SAFE_RELEASE(pDevice);
SAFE_RELEASE(pTarget);
SAFE_RELEASE(pFile);
SAFE_RELEASE(pOutMemory);
}
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 (inclua Wudfddi.h) |
DLL | WUDFx.dll |