다음을 통해 공유


ITabletContextP::UseNamedSharedMemoryCommunications 메서드

태블릿 컨텍스트에 대한 공유 메모리 통신을 설정합니다.

구문

HRESULT UseNamedSharedMemoryCommunications(
  [in]  DWORD  pid,
  [in]  LPCSTR pszCallerSid,
  [in]  LPCSTR pszCallerIntegritySid,
  [out] DWORD  *pdwEventMoreDataId,
  [out] DWORD  *pdwEventClientReadyId,
  [out] DWORD  *pdwMutexAccessId,
  [out] DWORD  *pdwFileMappingId
);

매개 변수

pid [in]

공유 메모리에 액세스하는 클라이언트의 프로세스 ID입니다.

pszCallerSid [in]

함수 호출자의 보안 식별자입니다.

pszCallerIntegritySid [in]

호출 함수의 무결성을 확인할 수 있는 보안 식별자입니다.

pdwEventMoreDataId [out]

이벤트의 이름을 생성하는 데 사용되는 정수입니다. 이벤트는 더 많은 데이터가 있는지 여부를 나타냅니다.

pdwEventClientReadyId [out]

이벤트의 이름을 생성하는 데 사용되는 정수입니다. 이 이벤트는 클라이언트가 데이터를 받을 준비가 되었음을 나타냅니다. 이벤트는 새 데이터를 처리한 후 신호를 보냅니다.

pdwMutexAccessId [out]

공유 메모리의 액세스 식별자에 대한 포인터입니다.

pdwFileMappingId [out]

공유 메모리를 식별하는 정수입니다.

반환 값

메서드가 성공하면 S_OK를 반환하고, 그러지 않으면 HRESULT 오류 코드를 반환합니다.

설명

UseNamedSharedMemoryCommunications 메서드는 태블릿 PC 공유 메모리 프로토콜의 일부입니다. 관리자 권한이 없는 클라이언트는 태블릿 서비스에서 ACL(액세스 제어 목록)을 사용하여 공유 메모리 개체에 액세스할 수 있도록 SID(보안 식별자) 및 IL-SID(무결성 수준 보안 식별자)를 전달합니다. 클라이언트에 상승된 권한이 있는 경우 서비스에 이미 상승된 권한이 있는 경우 호출되는 API인 UseSharedMemoryCommunications을 사용해야 합니다.

SHAREDMEMORY_HEADER 구조체는 공유 메모리 헤더를 저장합니다.

SHAREDMEMORY_HEADER 구조는 파일 매핑에서 참조하는 데이터에서 캐스팅됩니다. 원시 패킷 데이터는 SHAREDMEMORY_HEADER 따릅니다. pdwEventClientReadyId에서 참조하는 이벤트가 발생하면 공유 메모리에서 원시 패킷 데이터를 읽을 수 있습니다.

다음 목록에서는 공유 메모리에 액세스하고 사용하기 위한 이벤트 시퀀스를 설명합니다.

  1. 클라이언트는 clientReady 이벤트를 발생합니다.
  2. 클라이언트는 moreData 이벤트를 기다립니다.
  3. 클라이언트는 뮤텍스를 획득합니다.
  4. 클라이언트는 헤더 뒤에 있는 공유 메모리 섹션에서 패킷 데이터를 읽습니다. 일련 번호는 패킷 데이터 뒤에 공유 메모리에 표시됩니다.
  5. 클라이언트는 dwEvent 값에 따라 데이터를 처리합니다.
  6. 클라이언트는 -1(0xFFFFFFFF)을 dwEvent에 씁니다.
  7. 클라이언트는 뮤텍스를 해제합니다.
  8. 클라이언트는 clientReady 이벤트를 발생합니다.

이벤트 이름은 이 메서드의 출력에 서식을 지정하여 만들어집니다. 다음 정의는 sprintf 또는 해당 정의와 함께 사용하여 이벤트 이름을 만들 수 있습니다.

#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")

각 정의에서 %d 섹션은 프로세스 ID로 대체되고 %u 섹션은 pdwEventMoreDataId 또는 pdwEventClientReadyId에서 반환된 정수로 바뀝니다.

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버
지원되는 버전 없음
라이브러리
Wisptis.exe

추가 정보

UseSharedMemoryCommunications

ITabletContextP