Compartilhar via


CeAllocDuplicateBuffer

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Essa função abstrai o exigido trabalho Fazer Seguro cópias dos parâmetros API. Não o utilize para buffers diferente parâmetros API. Não esperados de reserva duplicada seja acessível depois retorna o chamar API.

Syntax

HRESULT CeAllocDuplicateBuffer(
   PVOID * ppDestDuplicate,
  PVOID pSrcMarshalled,
  DWORD cbSrc,
   DWORD ArgumentDescriptor
);

Parameters

  • ppDestDuplicate
    [out] Recebe um ponteiro para uma reserva heap recém-alocado.
  • pSrcMarshalled
    [no] Ponteiro para dados do chamador que já foi empacotados.
  • cbSrc
    [no] Tamanho da reserva do chamador, em bytes. Se ArgumentDescriptor é um WSTR ou ASTR, um tamanho de zero pode ser usado. Se o tamanho de uma seqüência de caracteres é não-zero, ele deve incluir um terminando NULL.
  • ArgumentDescriptor
    [no] Descritor explicando o tipo de parâmetro API a reserva é. De exemplo, ARG_I_WSTR ou ARG_O_PTR. ARG_DW não é um válido descritor para duplicação.

Return Value

  • E_ACCESSDENIED
    A reserva origem foi um inválido endereço, possivelmente um ponteiro que não foi empacotado.
  • E_INVALIDARG
    O pSrcMarshalled parâmetro foi NULL, ou o comprimento era zero.
  • E_OUTOFMEMORY
    Falha de alocação de memória.
  • S_OK
    A alocação e copiar teve êxito.

Remarks

Esta função copia dados da reserva de origem para a reserva heap, se necessário, aloca uma nova reserva heap devido a Em descritores ARG_I * ou ARG_IO * e retorna a nova reserva heap. Essa função aloca os recursos que devem ser liberados por um chamar subseqüente para CeFreeDuplicateBuffer. Qualquer exigido gravar-voltar para a reserva origem é gerenciado por CeFreeDuplicateBuffer, se necessário devido a Saída descritores ARG_IO * ou ARG_O *.

A duplicação impede assíncrono modificação da reserva, o chamador. Se a duplicação não for exigido para fins de segurança, não o utilize. Acessar apenas reserva do chamador como passada para o API.

Essa função não aloca qualquer memória se a chamar falhar ou se a reserva origem foi NULL. Se nenhuma memória é alocada, o ponteiro retornados em ppDestDuplicate é NULL.

Não uso CeAllocDuplicateBuffer Com uma reserva empacotada por CeOpenCallerBuffer. Em vez disso, ter CeOpenCallerBuffer Fazer a duplicação.

Você não precisará chamar CeAllocAsynchronousBuffer para usar a reserva retornada por CeAllocDuplicateBuffer de forma assíncrona. O duplicado reserva pode ser usada até que ele seja fechado por CeCloseCallerBuffer. CeAllocAsynchronousBuffer Não trabalho de buffers que tenham sido duplicados por CeAllocDuplicateBuffer.

Essa função é protegida por __try/__except para que ele faz não para lançar uma exceção ao acessar a entrada ponteiro pSrcMarshalled.

Requirements

Header pkfuncs.h
Library coredll.lib
Windows Embedded CE Windows Embedded CE 6.0 and later

See Also

Reference

Kernel Buffer Marshaling Functions
DuplicatedBuffer_t
CeFreeDuplicateBuffer
CeOpenCallerBuffer
CeAllocAsynchronousBuffer

Other Resources

Kernel Migration