Metodo ITabletContextP::UseNamedSharedMemoryCommunications
Configura la comunicazione di memoria condivisa per il contesto del tablet.
Sintassi
HRESULT UseNamedSharedMemoryCommunications(
[in] DWORD pid,
[in] LPCSTR pszCallerSid,
[in] LPCSTR pszCallerIntegritySid,
[out] DWORD *pdwEventMoreDataId,
[out] DWORD *pdwEventClientReadyId,
[out] DWORD *pdwMutexAccessId,
[out] DWORD *pdwFileMappingId
);
Parametri
-
pid [in]
-
ID del processo del client che accede alla memoria condivisa.
-
pszCallerSid [in]
-
Identificatore di sicurezza del chiamante di funzione.
-
pszCallerIntegritySid [in]
-
Identificatore di sicurezza in grado di verificare l'integrità della funzione chiamante.
-
pdwEventMoreDataId [out]
-
Intero utilizzato per costruire il nome di un evento. L'evento indica se sono presenti più dati.
-
pdwEventClientReadyId [out]
-
Intero utilizzato per costruire il nome di un evento. L'evento segnala che il client è pronto per ricevere i dati. L'evento viene segnalato dopo l'elaborazione di nuovi dati.
-
pdwMutexAccessId [out]
-
Puntatore all'identificatore di accesso della memoria condivisa.
-
pdwFileMappingId [out]
-
Intero che identifica la memoria condivisa.
Valore restituito
Se questo metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .
Commenti
Il metodo UseNamedSharedMemoryCommunications fa parte del protocollo di memoria condivisa tablet PC. Un client senza privilegi elevati passa un ID di sicurezza (SID) e un identificatore di sicurezza a livello di integrità (IL-SID) in modo che il servizio Tablet possa usare gli elenchi di controllo di accesso (ACL) per accedere agli oggetti di memoria condivisa. Se il client ha privilegi elevati, deve usare UseSharedMemoryCommunications, ovvero l'API chiamata se il servizio dispone già di privilegi elevati.
La struttura SHAREDMEMORY_HEADER archivia l'intestazione di memoria condivisa.
La struttura SHAREDMEMORY_HEADER viene eseguito il cast dai dati a cui fa riferimento il mapping del file. I dati dei pacchetti non elaborati seguono il SHAREDMEMORY_HEADER. I dati dei pacchetti non elaborati possono essere letti dalla memoria condivisa quando viene generato l'evento a cui fa riferimento pdwEventClientReadyId .
Nell'elenco seguente viene descritta la sequenza di eventi per l'accesso e l'uso della memoria condivisa.
- Il client genera l'evento clientReady.
- Il client attende l'evento moreData.
- Il client acquisisce il mutex.
- Il client legge i dati dei pacchetti dalla sezione della memoria condivisa che segue l'intestazione. I numeri di serie vengono visualizzati nella memoria condivisa dopo i dati del pacchetto.
- Il client gestisce i dati a seconda del valore di dwEvent.
- Il client scrive -1 (0xFFFFFFFF) in dwEvent.
- Il client rilascia il mutex.
- Il client genera l'evento clientReady.
I nomi degli eventi vengono creati formattando l'output di questo metodo. Le definizioni seguenti possono essere usate insieme a sprintf o al relativo equivalente per creare i nomi degli eventi.
#define WISPTIS_SM_MORE_DATA_EVENT_NAME _T("wisptis-1-%d-%u")
#define WISPTIS_SM_CLIENT_DONE_EVENT_NAME _T("wisptis-2-%d-%u")
#define WISPTIS_SM_SECTION_NAME _T("wisptis-3-%d-%u")
#define WISPTIS_SM_THREAD_EVENT_NAME _T("wisptis-4-%u")
In ogni definizione la sezione %d viene sostituita con l'ID processo e la sezione %u viene sostituita con l'intero restituito in pdwEventMoreDataId o pdwEventClientReadyId.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows Vista [solo app desktop] |
Server minimo supportato |
Nessuno supportato |
Libreria |
|