Compartilhar via


Função D3DKMTShareObjects (d3dkmthk.h)

D3DKMTShareObjects compartilha objetos de recurso que foram criados com as funções D3KMDTCreateAllocation, D3KMDTCreateAllocation2D3DKMTCreateKeyedMutex2 e D3DKMTCreateSynchronizationObject2 .

Sintaxe

NTSTATUS D3DKMTShareObjects(
  [in]  UINT                cObjects,
  [in]  const D3DKMT_HANDLE *hObjects,
  [in]  POBJECT_ATTRIBUTES  pObjectAttributes,
  [in]  DWORD               dwDesiredAccess,
  [out] HANDLE              *phSharedNtHandle
);

Parâmetros

[in] cObjects

O número de objetos de recurso fornecidos no parâmetro hObjects . Esse valor deve ser menor ou igual a D3DKMT_MAX_OBJECTS_PER_HANDLE.

[in] hObjects

Um ponteiro para uma matriz de identificadores locais do modo kernel que especificam os objetos de recurso a serem compartilhados. Para obter mais informações, consulte Comentários.

[in] pObjectAttributes

Um ponteiro para uma estrutura OBJECT_ATTRIBUTES que especifica atributos dos objetos de recurso.

[in] dwDesiredAccess

Especifica o acesso de leitura e gravação para o recurso.

Para objetos de sincronização de GPU, dwDesiredAccess pode ser uma combinação dos campos de bit a seguir (definidos em d3dukmdt.h).

Valor Significado
STANDARD_RIGHTS_READ O processo que abre o objeto de sincronização pode ler o estado do objeto de sincronização. Esse sinalizador deve ser especificado ou o objeto ficará inacessível.
D3DDDI_SYNC_OBJECT_WAIT O processo que abre o objeto de sincronização pode emitir operações de espera para o objeto de sincronização.
D3DDDI_SYNC_OBJECT_SIGNAL O processo que abre o objeto de sincronização pode emitir operações de sinal para o objeto de sincronização.
D3DDDI_SYNC_OBJECT_ALL_ACCESS O processo que abre o objeto de sincronização pode emitir qualquer operação para o objeto de sincronização.

Para recursos compartilhados, o acesso desejado pode ser especificado como uma combinação dos seguintes sinalizadores (definidos em d3dkmthk.h):

Valor Significado
STANDARD_RIGHTS_READ O processo que abre o recurso pode ter acesso de leitura. Esse sinalizador deve ser especificado ou o objeto ficará inacessível.
SHARED_ALLOCATION_WRITE O processo que abre o recurso pode ter acesso de gravação. Se esse sinalizador de acesso não for especificado, o recurso será aberto como somente leitura.
SHARED_ALLOCATION_ALL_ACCESS O processo que abre o recurso pode ter todo o acesso ao objeto .

[out] phSharedNtHandle

Um ponteiro para um identificador NT compartilhado que especifica os objetos de recurso.

Esse parâmetro será NULL se o valor do sinalizador NtSecuritySharing não estiver definido. Para obter mais informações, consulte Comentários.

Retornar valor

O método retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método pode retornar um código de erro NTSTATUS apropriado.

Comentários

Os objetos a serem compartilhados usando D3DKMTShareObjects devem primeiro ser criados com o valor do sinalizador NtSecuritySharing definido. Esse valor de sinalizador está disponível nas estruturas D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGS e D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS .

Essa função deve especificar identificadores por meio do parâmetro hObjects apenas para as seguintes combinações de tipos de matriz de objeto de entrada:

  • uma alocação
  • uma alocação, um mutex com chave e um objeto de sincronização
  • um objeto de sincronização

O sistema operacional rejeitará qualquer outra combinação de identificador de entrada.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8
Servidor mínimo com suporte Windows Server 2012
Plataforma de Destino Universal
Cabeçalho d3dkmthk.h (inclua D3dkmthk.h)
Biblioteca Gdi32.lib
DLL Gdi32.dll

Confira também

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTCreateAllocation

D3DKMTCreateAllocation2

D3DKMTCreateKeyedMutex2

D3DKMTCreateSynchronizationObject2

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS