Compartilhar via


Macro EngAllocPrivateUserMem (winddi.h)

A função EngAllocPrivateUserMem aloca um bloco de memória do usuário do espaço de endereço de um processo especificado e insere uma marca fornecida pelo chamador antes da alocação.

Sintaxe

void EngAllocPrivateUserMem(
  [in]  psl,
  [in]  cj,
  [in]  tag
);

Parâmetros

[in] psl

Ponteiro para a estrutura DD_SURFACE_LOCAL que representa a superfície do Microsoft DirectDraw à qual associar a memória alocada.

[in] cj

Especifica o número de bytes de memória a serem alocados.

[in] tag

Especifica uma marca de pool de 4 bytes que identifica exclusivamente o driver que faz a alocação de memória. Para obter mais informações sobre marcas de pool, consulte ExAllocatePoolWithTag.

Retornar valor

Nenhum

Comentários

Um driver DirectDraw pode exigir um "scratch pad" de memória do usuário no lugar da memória de vídeo verdadeira. Embora essa prática seja desencorajada devido às suas implicações de desempenho, ocasionalmente é necessário. Essa memória de rascunho geralmente é alocada apenas por um curto período de tempo. Depois que a memória for alocada, ela será usada para as operações gráficas pretendidas e desalocada.

Um problema surgirá se a instância do driver for destruída antes que a superfície seja desbloqueada. Um caso específico ocorre quando o sistema alterna para uma área de trabalho protegida como resultado de um usuário pressionando CTRL+ALT+DEL. Nessa situação, a opção de modo é executada em um contexto de processo do sistema. Se o driver tiver bloqueios de superfície pendentes, como quando a opção de modo ocorrer antes de a superfície ser desbloqueada, o driver será necessário para destruir essa superfície em um contexto de processo diferente. O driver não pode chamar EngFreeUserMem para desalocar a memória zero, pois esse ponto de entrada falhará se for chamado em um contexto diferente daquele usado quando a memória foi alocada.

EngAllocPrivateUserMem e EngFreePrivateUserMem são fornecidos para resolver esse problema. Essas duas funções são idênticas a EngAllocUserMem e EngFreeUserMem, exceto que elas fazem o trabalho extra necessário para liberar a memória alocada em um contexto de processo diferente. As informações de contexto do processo são armazenadas com o objeto DirectDraw que possui o objeto de superfície DirectDraw ao qual o psl aponta.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows 2000 e versões posteriores dos sistemas operacionais Windows.
Plataforma de Destino Universal
Cabeçalho winddi.h (inclua Winddi.h)
Biblioteca Win32k.lib
DLL Win32k.sys

Confira também

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL

EngAllocUserMem

EngFreePrivateUserMem

EngFreeUserMem