Condividi tramite


Funzione D3DKMTShareObjects (d3dkmthk.h)

D3DKMTShareObjects condivide gli oggetti risorsa creati con le funzioni D3KMDTCreateAllocation, D3KMDTCreateAllocation2D3DKMTCreateKeyedMutex2 e D3DKMTCreateSynchronizationObject2 .

Sintassi

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

Parametri

[in] cObjects

Numero di oggetti risorsa forniti nel parametro hObjects . Questo valore deve essere minore o uguale a D3DKMT_MAX_OBJECTS_PER_HANDLE.

[in] hObjects

Puntatore a una matrice di handle in modalità kernel locale che specificano gli oggetti risorsa da condividere. Per altre informazioni, vedere Osservazioni.

[in] pObjectAttributes

Puntatore a una struttura OBJECT_ATTRIBUTES che specifica gli attributi degli oggetti risorsa.

[in] dwDesiredAccess

Specifica l'accesso in lettura e scrittura per la risorsa.

Per gli oggetti di sincronizzazione GPU, dwDesiredAccess può essere una combinazione dei campi di bit seguenti (definiti in d3dukmdt.h).

Valore Significato
STANDARD_RIGHTS_READ Il processo che apre l'oggetto sync può leggere lo stato dell'oggetto sync. Questo flag deve essere specificato oppure l'oggetto non sarà accessibile.
D3DDDI_SYNC_OBJECT_WAIT Il processo che apre l'oggetto di sincronizzazione può eseguire operazioni di attesa per l'oggetto di sincronizzazione.
D3DDDI_SYNC_OBJECT_SIGNAL Il processo che apre l'oggetto di sincronizzazione può eseguire operazioni di segnalazione per l'oggetto di sincronizzazione.
D3DDDI_SYNC_OBJECT_ALL_ACCESS Il processo che apre l'oggetto di sincronizzazione può eseguire qualsiasi operazione per l'oggetto di sincronizzazione.

Per le risorse condivise, l'accesso desiderato può essere specificato come combinazione dei flag seguenti (definiti in d3dkmthk.h):

Valore Significato
STANDARD_RIGHTS_READ Il processo che apre la risorsa può avere accesso in lettura. Questo flag deve essere specificato oppure l'oggetto non sarà accessibile.
SHARED_ALLOCATION_WRITE Il processo che apre la risorsa può avere accesso in scrittura. Se questo flag di accesso non viene specificato, la risorsa verrà aperta come di sola lettura.
SHARED_ALLOCATION_ALL_ACCESS Il processo che apre la risorsa può avere tutti l'accesso all'oggetto .

[out] phSharedNtHandle

Puntatore a un handle NT condiviso che specifica gli oggetti risorsa.

Questo parametro sarà NULL se il valore del flag NtSecuritySharing non è impostato. Per altre informazioni, vedere Osservazioni.

Valore restituito

Il metodo restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, questo metodo potrebbe restituire un codice di errore NTSTATUS appropriato.

Commenti

Gli oggetti da condividere con D3DKMTShareObjects devono prima essere creati con il valore del flag NtSecuritySharing impostato. Questo valore del flag è disponibile nelle strutture D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGS e D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS .

Questa funzione deve specificare handle tramite il parametro hObjects solo per le combinazioni seguenti di tipi di matrice di oggetti di input:

  • un'allocazione
  • un'allocazione, un mutex con chiave e un oggetto di sincronizzazione
  • un oggetto di sincronizzazione

Il sistema operativo rifiuterà qualsiasi altra combinazione di handle di input.

Requisiti

Requisito Valore
Client minimo supportato Windows 8
Server minimo supportato Windows Server 2012
Piattaforma di destinazione Universale
Intestazione d3dkmthk.h (include D3dkmthk.h)
Libreria Gdi32.lib
DLL Gdi32.dll

Vedi anche

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTCreateAllocation

D3DKMTCreateAllocation2

D3DKMTCreateKeyedMutex2

D3DKMTCreateSynchronizationObject2

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS