Share via


CeFreeAsynchronousBuffer

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Essa função libera os recursos que foram alocados por CeAllocAsynchronousBuffer. Ele executa qualquer exigido gravar-voltar para a reserva origem devido a Saída descritores ARG_IO * ou ARG_O *.

Para obter mais informações sobre como argumento descritores Consulte MarshalledBuffer_t.

Syntax

HRESULT CeFreeAsynchronousBuffer(
  PVOID pDestAsyncMarshalled,
  PVOID pSrcSyncMarshalled,
  DWORD cbSrc,
  DWORD ArgumentDescriptor
);

Parameters

  • pDestAsyncMarshalled
    [no] Ponteiro para a reserva que foi alocada por CeAllocAsynchronousBuffer.
  • pSrcSyncMarshalled
    [no] Ponteiro de origem que foi passado para CeAllocAsynchronousBuffer.
  • cbSrc
    [no] Tamanho do buffer que foi passado para CeAllocAsynchronousBuffer.
  • ArgumentDescriptor
    [no] Descritor que foi passado para CeAllocAsynchronousBuffer.

    Se você estiver execução dentro de processo kernel e você estiver usando um microprocessador ARM com um praticamente marcados armazenar em cache, você pode transmitir MARSHAL_FORCE_ALIAS como o ArgumentDescriptor. Em todos os outras CPUs, dentro de processo kernel, CeAllocAsynchronousBuffer Sempre cria um alias para a memória com VirtualCopy. Nas CPUs ARM que usam um praticamente marcados armazenar em cache, dentro de processo kernel, CeAllocAsynchronousBuffer Cria um duplicado copiar da memória no heap Por padrão. Em grandes buffers, criando o duplicado heap pode afetar desempenho. Para evitar duplicação, transmitir o sinalizador MARSHAL_FORCE_ALIAS para causar CeAllocAsynchronousBuffer Para criar um alias em vez disso. No entanto, a criação de memória de alias em ARM CPUs que usam um praticamente marcados causas armazenar em cache de origem e destino memória para serem acessados como uncached, até que o alias é destruída por CeFreeAsynchronousBuffer. Isso significa que o acessa memória se tornar mais lenta na origem e destino.

    Não use o sinalizador MARSHAL_FORCE_ALIAS a menos que você esteja usando buffers maiores 16 KB.

    Em todas as CPUs, Dentro usuário-modo processos, CeAllocAsynchronousBuffer Sempre cria um duplicado da memória, regardless of se o sinalizador MARSHAL_FORCE_ALIAS é passado. Não é possível para forçar a criação de um alias do modo usuário.

    Se você transmitir MARSHAL_FORCE_ALIAS para CeAllocAsynchronousBuffer, você deve também transmiti-lo quando você chamar CeFlushAsynchronousBuffer e CeFreeAsynchronousBuffer. Não passa pode causar o sistema fique sem resposta ou vazamentos recurso.

Return Value

  • E_FAIL
    Gravação necessária-voltar não pôde ser executada. Se esse erro ocorrer, os recursos ainda são liberados e o ponteiro empacotado é não mais acessível.
  • S_OK
    A alocação e duplicação, se necessário, com êxito.

Remarks

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

Usar as macros teve êxito e falha para testar a valor de retorno desta função.

Requirements

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

See Also

Reference

Kernel Buffer Marshaling Functions
MarshalledBuffer_t
AsynchronousBuffer_t
CeAllocAsynchronousBuffer
CeFlushAsynchronousBuffer

Other Resources

Kernel Migration