none
wisptis.exe documentation RRS feed

  • Question

  • Is there a documentation for COM wisptis.exe ?
    Monday, October 12, 2009 8:13 PM

All replies

  • Yes, please check the Tablet PC section here:

    http://msdn.microsoft.com/en-us/library/aa367719(VS.85).aspx

    There will be some updates coming online later this week.  Also, developers typically should not be coding directly against WISPTIS.exe.

    Regards,
    Gus

    Monday, October 12, 2009 8:52 PM
    Moderator
  • I have already seen this documentation. But I could not find interface definitions in the header files mentioned (msinkaut.h). I have imported the com library using tlbimp and use it in C#. After creating a context my event sink gets in range and out of range events. One time it gets cursor down event, but then wisptis crashes.

    Here is my initialization code:
    TabletManagerS managerSClass = new TabletManagerS();
    managerSClass.GetDefaultTablet(out tablet);
    ITablet tablet;
    tagRECT inputRect;
    tablet.GetMaxInputRect(out inputRect);
    string name;
    tablet.GetName(out name);
    
    //int contextSize = Marshal.SizeOf(typeof(_TABLET_CONTEXT_SETTINGS));
    //IntPtr contextSettingsPtr = Marshal.AllocHGlobal(contextSize);
    _TABLET_CONTEXT_SETTINGS contextSettings = new _TABLET_CONTEXT_SETTINGS();
    //Marshal.StructureToPtr(contextSettings, contextSettingsPtr, true);
    
    //tablet.GetDefaultContextSettings(contextSettingsPtr);
    
    //contextSettings = (_TABLET_CONTEXT_SETTINGS)Marshal.PtrToStructure(contextSettingsPtr, typeof(_TABLET_CONTEXT_SETTINGS));
    //Marshal.FreeHGlobal(contextSettingsPtr);
    
    _RemotableHandle handle = new _RemotableHandle();
    handle.fContext = (int) Handle;
    ITabletContext context;
    uint tabletId = 0;
    IntPtr packetInfo = IntPtr.Zero;
    TabletEventSink sink = new TabletEventSink(managerSClass);
    tablet.CreateContext(ref handle, ref inputRect, (uint)TC.TCXO_ALL, ref contextSettings, _CONTEXT_ENABLE_TYPE.CONTEXT_ENABLE, out context, ref tabletId, packetInfo, sink);
    
    ITabletEventSink implementation uses Trace to output information.

    Is there any samples showing how to use WISPTIS? I have found that this is the only way I could get events for all windows, not only my own.
    Tuesday, October 13, 2009 5:01 AM
  • You should probably be using the IInkTablet3 interface.  The other interfaces should be documnted online.
    Tuesday, October 13, 2009 9:48 PM
    Moderator
  • Does IInkTablet3 allows me to collect ink outside my window (system wide)?
    Wednesday, October 14, 2009 5:13 AM
  • There is no documentation for ITabletContext. Only interface definition.
    Also you have mentioned that documentation will be updated this week. But I can't find no updates.
    Saturday, October 17, 2009 1:54 PM
  • What is the meaning of pdwBtnDnMask and pdwBtnUpMask?
    Sunday, October 18, 2009 1:38 PM
  • This was the update.  We added interface definitions for many of the WISPTIS.exe interfaces.  You shouldn't need to use the ITabletContext interface, but you do need it as part of the definition of the ITabletContextP interface.  Again, if you are coding against the Wisptis.exe, you are getting into the territory of really limited support.

    -Gus
    Monday, October 19, 2009 4:24 PM
    Moderator
  • Limited support didn't stopped me to develop multitouch hid driver for Windows 7 (http://multitouchvista.codeplex.com).
    My program receives now system-wide contacts without blocking them for other programs. My problem now is that after some time my implementation of ITabletEventSink don't receive "Packets" event. Only CursorInRange and CursorOutOfRange. Is there anything I have to do besides creating context?
    Monday, October 19, 2009 6:43 PM
  • >Limited support didn't stopped me to develop multitouch hid driver for Windows 7
    That's awesome, the multitouchvista project is very impressive!

    Check the remarks section of the UseNamedSharedMemoryCommunications method.  There's a shared memory protocol for access to event data.  Perhaps you are missing a step in the protocol.

    -Gus
    Tuesday, October 20, 2009 4:53 PM
    Moderator
  • Thanks for the Tip. I was not using shared memory communication. Do you know if it is possible to use it in c#?
    Thursday, October 22, 2009 7:39 PM
  • You should be able to do this in C#. However, it's pretty much untouched territory and it is not a well supported scenario even in unmanaged development.  At any rate, if you want to do it, you should still be able to use interop and access the methods, handles, and so on, necessary to get the resources for accessing the shared memory.  The gist of it is that events get raised when data fills a file handle which then needs to be parsed from the file, once the data is parsed from the file, you raise another event and then the data gets set again and so forth.

    Friday, October 23, 2009 5:45 PM
    Moderator
  • One more potential approach could be to try and get the raw HID data.  This approach would really not take advantage of anything we are doing in Windows 7, however, and would be difficult to develop.
    Saturday, October 24, 2009 12:39 AM
    Moderator
  • Do you know what is it and how to get it?

    pszCallerSid
    [in]
           The security identifier of the function caller.
    pszCallerIntegritySid [in] 
           The security identifier that can verify the integrity of the calling function.

    I also have problem with managed version of my program. In native version I can call the function CreateContext with dwOptions = TCXO_NON_INTEGRATED. In managed version I get this exception:

    System.Runtime.InteropServices.COMException was caught
      Message="Exception from HRESULT: 0x80040218"
      Source="WISPTISLib"
      ErrorCode=-2147220968
      StackTrace:
           at WISPTISLib.ITablet.CreateContext(_RemotableHandle& hWnd, tagRECT& prcInput, UInt32 dwOptions, _TABLET_CONTEXT_SETTINGS& pTCS, CONTEXT_ENABLE_TYPE cet, ITabletContext& ppCtx, UInt32& pTcid, IntPtr ppPD, ITabletEventSink pSink)
           at MultitouchInputVisualizer.Form1.OnLoad(EventArgs e) in C:\Users\Daniel\Documents\Visual Studio 2008\Projects\MultitouchInputVisualizer\Form1.cs:line 71
      InnerException:

    Do you know what does this HRESULT mean? All parameters are the same as in native version. WISPTISLib was generated from IDL that is used in native version (midl /win32 wisptis.idl and then tlbimp wisptis.tlb).

    Saturday, October 24, 2009 12:44 PM
  • What is the meaning of dwEvent values in SHAREDMEMORY_HEADER?
    Sunday, October 25, 2009 3:57 PM
  • >0x80040218
    I think it means that you don't have a valid window handle passed into the create context method.

    Gus
    Tuesday, October 27, 2009 6:33 PM
    Moderator
  • >In reference to dwEvent....

    These are event names that are formed using macros.  They are explained in this documentation here.  The following macros are given as examples for how the names could be formed:

    #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")
    Tuesday, October 27, 2009 6:38 PM
    Moderator
  • I'm using UseSharedMemoryCommunications method. It works. I could not get UseNamedSharedMemoryCommunications to work.
    Can you tell me what dwEvent means? What are the meaning of values?
    Tuesday, October 27, 2009 7:53 PM
  • I think I covered dwEvent in the last post I made.  It is an event name used to identify the events for the shared memory event.  The value should indicate the event name in some format.

    -Gus

    Tuesday, October 27, 2009 10:29 PM
    Moderator
  • I get following values:

    707, 709, 711, 714, 711, 714, 710, 708

    It can't be WISPTIS_SM_....  It must be something else. Do you have an idea?

    Wednesday, October 28, 2009 6:01 AM
  • Got it:
    public const int PenEventPenInRange = 707;
    public const int PenEventPenOutOfRange = 708;
    public const int PenEventPenDown = 709;
    public const int PenEventPenUp = 710;
    public const int PenEventPackets = 711;
    public const int PenEventSystem = 714; 
    
    Friday, October 30, 2009 8:18 PM
  • Please excuse my rudeness, but its in regards to wisptis.exe.  Is is the case that it has been updated recently and that such an update would have been pushed out to win7-64bit machines?

    My security-audit log -- all 20MB of it is full in 3 days with security audit failures due to wisptis.exe:

    A privileged service was called.

    Subject:
        Security ID:        athenae\law
        Account Name:        law
        Account Domain:        athenae
        Logon ID:        0x5b25c

    Service:
        Server:    Security
        Service Name:    -

    Process:
        Process ID:    0xb78
        Process Name:    C:\Windows\System32\wisptis.exe

    Service Request Information:
        Privileges:        SeTcbPrivilege
    -----
    System
    - Provider
    [ Name ] Microsoft-Windows-Security-Auditing
    [ Guid ] {54849625-5478-4994-A5BA-3E3B0328C30D}
    EventID 4673
    Version 0
    Level 0
    Task 13056
    Opcode 0
    Keywords 0x8010000000000000
    - TimeCreated
    [ SystemTime ] 2009-12-08T04:13:57.032607300Z
    EventRecordID 317359
    Correlation
    - Execution
    [ ProcessID ] 516
    [ ThreadID ] 532
    Channel Security
    Computer ATHENAE.BLISS
    Security
    - EventData
    SubjectUserSid S-1-5-21-3264078187-2996553904-512904244-1003
    SubjectUserName law
    SubjectDomainName athenae
    SubjectLogonId 0x5b25c
    ObjectServer Security
    Service -
    PrivilegeList SeTcbPrivilege
    ProcessId 0xb78
    ProcessName C:\Windows\System32\wisptis.exe

    ============================================================
    It's filling up entire log and I'm not even using pen input!  (I have pen-input capability, but am not using it).

    Is it normal behavior for this process to generate so many security audit failures?

    (I explicity turn on failure auditing, as it's a good inidicator of something violating 'policy'...

    Tuesday, December 8, 2009 4:37 AM
  • Since Vista, WISPTIS.exe has run as a priviledged process by design; this is probably triggering your audit logs.  This process shouldn't be new in Windows 7 and should have shipped with Windows.

    So long as you have pen-input enabled, the service will run.  This is why the service is typically filtered out of logs.  If you want to stop the service, go to your Administrative Tools (in the Control Panel), select Services, then disable the "Tablet PC Input Service".  You can even prevent this service from running at start up if it concerns you.  When you stop the service, WISPTIS.exe will stop running which will stop your audit logs from growing every time the service polls, but you will not have pen input until the service is restarted.

    -Gus
    Tuesday, December 8, 2009 6:41 PM
    Moderator
  • Hi there gclassy I am trying to mimic the behavious of multidigimon.exe. So far I am able to do everything except 'signal' wisptis.exe to read the new settings from the registry. Could I use the COM library to force wisptis.exe to read the new settings form the registry?
    Thursday, May 6, 2010 9:08 PM