Compartilhar via


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.

  1. O cliente gera o evento clientReady.
  2. O cliente aguarda o evento moreData.
  3. O cliente adquire o mutex.
  4. 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.
  5. O cliente manipula dados dependendo do valor de dwEvent.
  6. O cliente grava -1 (0xFFFFFFFF) em dwEvent.
  7. O cliente libera o mutex.
  8. 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
Wisptis.exe

Confira também

UseSharedMemoryCommunications

ITabletContextP