Compartilhar via


CeFlushAsynchronousBuffer

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Essa função libera os dados alterados entre origem e destino reserva alocados pelo CeAllocAsynchronousBuffer.

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

Syntax

HRESULT CeFlushAsynchronousBuffer(
   PVOID pDestAsyncMarshalled,
   PVOID pSrcSyncMarshalled,
   PVOID pSrcUnmarshalled,
  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.
  • pSrcUnmarshalled
    [no] Ponteiro de origem que foi passado para CeOpenCallerBuffer, ou NULL se a reserva foi um parâmetro API que nunca veio chamar um modo kernel para CeOpenCallerBuffer.
  • cbSrc
    [no] Tamanho do buffer que foi passado para CeAllocAsynchronousBuffer.
  • ArgumentDescriptor
    [no] Descritor que foi passado para CeAllocAsynchronousBuffer. Se o descritor for ARG_O_PTR, grava essa função voltar dados a partir de assíncrono reserva na reserva de origem. Se o descritor for ARG_IO_PTR, grava essa função voltar dados a partir de assíncrono reserva para a reserva origem sem leitura de reserva de origem. Outro descritor valores causar a função falha com ERROR_NOT_SUPPORTED.

    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, CeAllocAsynchronousBuffer Sempre cria um alias para a memória com VirtualCopy dentro de processo kernel. 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 afetam 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
    Necessário ler ou gravação-voltar não pôde ser executada.
  • ERROR_NOT_SUPPORTED
    Valor passado como ArgumentDescriptor Não com suporte.
  • S_OK
    A ler ou Gravação bem-sucedida.

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
CeOpenCallerBuffer
CeAllocAsynchronousBuffer
CeFreeAsynchronousBuffer

Other Resources

Kernel Migration