Método ITabletContextP::UseNamedSharedMemoryCommunications
Configura a comunicação de memória compartilhada para o contexto do tablet.
Sintaxe
HRESULT UseNamedSharedMemoryCommunications(
[in] DWORD pid,
[in] LPCSTR pszCallerSid,
[in] LPCSTR pszCallerIntegritySid,
[out] DWORD *pdwEventMoreDataId,
[out] DWORD *pdwEventClientReadyId,
[out] DWORD *pdwMutexAccessId,
[out] DWORD *pdwFileMappingId
);
Parâmetros
-
pid [in]
-
A ID do processo do cliente que acessa a memória compartilhada.
-
pszCallerSid [in]
-
O identificador de segurança do chamador de função.
-
pszCallerIntegritySid [in]
-
O identificador de segurança que pode verificar a integridade da função de chamada.
-
pdwEventMoreDataId [out]
-
Um inteiro usado para construir o nome de um evento. O evento indica se há mais dados.
-
pdwEventClientReadyId [out]
-
Um inteiro usado para construir o nome de um evento. O evento sinaliza que o cliente está pronto para receber dados. O evento é sinalizado após o processamento de novos dados.
-
pdwMutexAccessId [out]
-
Um ponteiro para o identificador de acesso da memória compartilhada.
-
pdwFileMappingId [out]
-
Um inteiro que identifica a memória compartilhada.
Valor retornado
Se esse método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT .
Comentários
O método UseNamedSharedMemoryCommunications faz parte do protocolo de memória compartilhada tablet PC. Um cliente sem privilégios elevados passa um SID (identificador de segurança) e um IL-SID (identificador de segurança em nível de integridade) para que o serviço tablet possa usar acl (listas de controle de acesso) para acessar os objetos de memória compartilhada. Se o cliente tiver privilégios elevados, ele deverá usar UseSharedMemoryCommunications, que é a API que será chamada se o serviço já tiver um privilégio elevado.
A estrutura SHAREDMEMORY_HEADER armazena o cabeçalho de memória compartilhada.
A estrutura SHAREDMEMORY_HEADER é convertida dos dados referenciados pelo mapeamento de arquivo. Os dados brutos do pacote seguem o SHAREDMEMORY_HEADER. Os dados brutos do pacote podem ser lidos da memória compartilhada quando o evento referenciado por pdwEventClientReadyId é gerado.
A lista a seguir descreve a sequência de eventos para acessar e usar memória compartilhada.
- O cliente gera o evento clientReady.
- O cliente aguarda o evento moreData.
- O cliente adquire o mutex.
- O cliente lê dados de pacote da seção de memória compartilhada que segue o cabeçalho . Os números de série aparecem na memória compartilhada após os dados do pacote.
- O cliente manipula dados dependendo do valor de dwEvent.
- O cliente grava -1 (0xFFFFFFFF) em dwEvent.
- O cliente libera o mutex.
- O cliente gera o evento clientReady.
Os nomes de evento são criados formatando a saída desse método. As definições a seguir podem ser usadas em conjunto com sprintf ou seu equivalente para criar os nomes de evento.
#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")
Em cada definição, a seção %d é substituída pela ID do processo e a seção %u é substituída pelo inteiro retornado em pdwEventMoreDataId ou pdwEventClientReadyId.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows Vista [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte |
Nenhum compatível |
Biblioteca |
|