Método IWDFDriver::CreatePreallocatedWdfMemory (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 CreatePreallocatedWdfMemory cria um objeto de memória de estrutura para o buffer especificado.
Sintaxe
HRESULT CreatePreallocatedWdfMemory(
[in] BYTE *pBuff,
[in] SIZE_T BufferSize,
[in, optional] IUnknown *pCallbackInterface,
[in, optional] IWDFObject *pParentObject,
[out] IWDFMemory **ppWdfMemory
);
Parâmetros
[in] pBuff
Um ponteiro para um buffer de dados fornecido pelo driver para o objeto de memória.
[in] BufferSize
O tamanho, em bytes, dos dados para os quais pBuff aponta.
[in, optional] pCallbackInterface
Um ponteiro para a interface IUnknown que a estrutura usa para determinar as funções de retorno de chamada de evento relacionadas ao objeto que o driver assina no objeto de memória recém-criado. Esse parâmetro é opcional. O driver poderá passar NULL se o driver não exigir notificação. A interface IUnknown é usada para limpeza e descarte de objetos. Se o driver passar um ponteiro válido, a estrutura chamará QueryInterface na interface IUnknown para a interface IObjectCleanup . Se a estrutura obtiver a interface IObjectCleanup do driver, a estrutura poderá chamar posteriormente o método IObjectCleanup::OnCleanup do driver para notificar o driver de que o objeto de memória está limpo.
[in, optional] pParentObject
Um ponteiro para a interface IWDFObject para o objeto pai do objeto de memória criado. Se NULL, o objeto driver se tornará o pai padrão.
[out] ppWdfMemory
Um ponteiro para um buffer que recebe um ponteiro para a interface IWDFMemory para o objeto de memória WDF recém-criado.
Retornar valor
CreatePreallocatedWdfMemory retornará S_OK se a operação for bem-sucedida. Caso contrário, esse método retornará um dos códigos de erro definidos em Winerror.h.
Comentários
O método CreatePreallocatedWdfMemory cria um objeto de memória de estrutura para um buffer que o driver alocou ou obteve anteriormente.
Um driver UMDF poderá chamar CreatePreallocatedWdfMemory se precisar criar um objeto de memória que represente um buffer de memória pré-existente. Por exemplo, o driver pode receber uma estrutura definida pelo driver dentro de um buffer para uma solicitação de E/S que contém um código de controle de E/S interno. O driver pode chamar CreatePreallocatedWdfMemory para criar um objeto de memória para que o driver possa passar a estrutura para um destino de E/S.
Depois que um driver UMDF chama CreatePreallocatedWdfMemory, o driver pode chamar IWDFMemory::SetBuffer para atribuir um buffer diferente ao objeto de memória criado por CreatePreallocatedWdfMemory .
Quando o objeto de memória da estrutura que CreatePreallocatedWdfMemory criou é excluído, a estrutura não desaloca o buffer pré-existente. Da mesma forma, uma chamada para IWDFMemory::SetBuffer não desaloca o buffer atribuído anteriormente.
Exemplos
O exemplo de código a seguir mostra como criar um objeto de memória para um buffer.
//
// Allocate a request.
hr = wdfDevice->CreateRequest(NULL, NULL, &request);
// Allocate a buffer and wrap it in a memory object.
// Make the memory object a child of the request.
// When the request object is deleted, the memory object
// is also deleted.
if (SUCCEEDED(hr))
{
buffer = new BYTE[m_HidDescriptor->wReportLength];
if (buffer == NULL)
{
hr = E_OUTOFMEMORY;
}
}
if (SUCCEEDED(hr))
{
CComPtr<IWDFDriver> driver;
wdfDevice->GetDriver(&driver);
hr = driver->CreatePreallocatedWdfMemory(
buffer,
m_HidDescriptor->wReportLength,
NULL,
request,
&memory
);
}
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.5 |
Cabeçalho | wudfddi.h (inclua Wudfddi.h) |
DLL | WUDFx.dll |