Advertisement
Xylitol

sapi51.inc

Feb 25th, 2017
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; SAPI 5.1
  2. ; GUIDS ---------------------------------------------------------------------------
  3.  
  4. .data
  5. CLSID_SpVoice  GUID {096749377h,03391h,011D2h,<09Eh,0E3h,000h,0C0h,04Fh,079h,073h,096h>}
  6. IID_ISpVoice   GUID {06C44DF74h,072B9h,04992h,<0A1h,0ECh,0EFh,099h,06Eh,004h,022h,0D4h>}
  7. .const
  8.  
  9.  
  10. TEXT_ MACRO your_text:VARARG
  11.    LOCAL text_string
  12.    .data
  13.     text_string db your_text,0
  14.    .code
  15.    EXITM <addr text_string>
  16. ENDM
  17.  
  18. ;Com
  19.  
  20. CoMethod1Proto  typedef proto :DWORD
  21. CoMethod2Proto  typedef proto :DWORD, :DWORD
  22. CoMethod3Proto  typedef proto :DWORD, :DWORD, :DWORD
  23. CoMethod4Proto  typedef proto :DWORD, :DWORD, :DWORD, :DWORD
  24. CoMethod5Proto  typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
  25. CoMethod6Proto  typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
  26. CoMethod7Proto  typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
  27. CoMethod8Proto  typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
  28. CoMethod9Proto  typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
  29. CoMethod10Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
  30. CoMethod11Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
  31. CoMethod12Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
  32. CoMethod13Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
  33. CoMethod14Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
  34. CoMethod15Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
  35.  
  36. CoMethod1   typedef ptr CoMethod1Proto
  37. CoMethod2   typedef ptr CoMethod2Proto
  38. CoMethod3   typedef ptr CoMethod3Proto
  39. CoMethod4   typedef ptr CoMethod4Proto
  40. CoMethod5   typedef ptr CoMethod5Proto
  41. CoMethod6   typedef ptr CoMethod6Proto
  42. CoMethod7   typedef ptr CoMethod7Proto
  43. CoMethod8   typedef ptr CoMethod8Proto
  44. CoMethod9   typedef ptr CoMethod9Proto
  45. CoMethod10  typedef ptr CoMethod10Proto
  46. CoMethod11  typedef ptr CoMethod11Proto
  47. CoMethod12  typedef ptr CoMethod12Proto
  48. CoMethod13  typedef ptr CoMethod13Proto
  49. CoMethod14  typedef ptr CoMethod14Proto
  50. CoMethod15  typedef ptr CoMethod15Proto
  51.  
  52. _vtIUnknown MACRO Name:REQ
  53.     &Name&_QueryInterface   CoMethod3   ?
  54.     &Name&_AddRef       CoMethod1   ?
  55.     &Name&_Release      CoMethod1   ?
  56. ENDM
  57.  
  58. IUnknown struct
  59.     _vtIUnknown IUnknown
  60. IUnknown ends
  61.  
  62.  
  63. coinvoke MACRO pInterface:REQ, Interface:REQ, Function:REQ, args:VARARG
  64.     LOCAL istatement, arg
  65.     FOR arg, <args>     ;; run thru args to see if edx is lurking in there
  66.         IFIDNI <&arg>, <edx>
  67.             .ERR <edx is not allowed as a coinvoke parameter>
  68.         ENDIF
  69.     ENDM
  70.     istatement CATSTR <invoke (Interface PTR[edx]).&Interface>,<_>,<&Function, pInterface>
  71.     IFNB <args>     ;; add the list of parameter arguments if any
  72.         istatement CATSTR istatement, <, >, <&args>
  73.     ENDIF
  74.     mov edx, pInterface
  75.     mov edx, [edx]
  76.     istatement
  77. ENDM
  78.  
  79.  
  80. RELEASE_INTERFACE MACRO Interface:REQ
  81.     .if &Interface != 0
  82.         coinvoke Interface,IUnknown,Release
  83.         mov Interface,0
  84.     .endif
  85. ENDM
  86.  
  87.  
  88.  
  89. ; INTERFACES ---------------------------------------------------------------------------
  90.  
  91. _vtISpVoice MACRO Name:REQ
  92.  
  93.    ;; IUnknown Methods
  94.    _vtIUnknown Name
  95.  
  96.    ;; ISpVoice Methods
  97.    &Name&_SetNotifySink                CoMethod1      ?
  98.    &Name&_SetNotifyWindowMessage       CoMethod5      ?
  99.    &Name&_SetNotifyCallbackFunction    CoMethod4      ?
  100.    &Name&_SetNotifyCallbackInterface   CoMethod4      ?
  101.    &Name&_SetNotifyWin32Event          CoMethod1      ?
  102.    &Name&_WaitForNotifyEvent           CoMethod2      ?
  103.    &Name&_GetNotifyEventHandl          CoMethod1      ?
  104.    &Name&_SetInterest                  CoMethod3      ?
  105.    &Name&_GetEvents                    CoMethod4      ?
  106.    &Name&_GetInfo                      CoMethod2      ?
  107.    &Name&_SetOutput                    CoMethod3      ?
  108.    &Name&_GetOutputObjectToken         CoMethod2      ?
  109.    &Name&_GetOutputStream              CoMethod2      ?
  110.    &Name&_Pause                        CoMethod1      ?
  111.    &Name&_Resume                       CoMethod1      ?
  112.    &Name&_SetVoice                     CoMethod2      ?
  113.    &Name&_GetVoice                     CoMethod2      ?
  114.    &Name&_Speak                        CoMethod4      ?
  115.    &Name&_SpeakStream                  CoMethod4      ?
  116.    &Name&_GetStatus                    CoMethod3      ?
  117.    &Name&_Skip                         CoMethod4      ?
  118.    &Name&_SetPriority                  CoMethod2      ?
  119.    &Name&_GetPriority                  CoMethod2      ?
  120.    &Name&_SetAlertBoundary             CoMethod2      ?
  121.    &Name&_GetAlertBoundary             CoMethod2      ?
  122.    &Name&_SetRate                      CoMethod2      ?
  123.    &Name&_GetRate                      CoMethod2      ?
  124.    &Name&_SetVolume                    CoMethod2      ?
  125.    &Name&_GetVolume                    CoMethod2      ?
  126.    &Name&_WaitUntilDone                CoMethod2      ?
  127.    &Name&_SetSyncSpeakTimeout          CoMethod2      ?
  128.    &Name&_GetSyncSpeakTimeout          CoMethod2      ?
  129.    &Name&_SpeakCompleteEvent           CoMethod1      ?
  130.    &Name&_IsUISupported                CoMethod5      ?
  131.    &Name&_DisplayUI                    CoMethod6      ?
  132. ENDM
  133. ISpVoice struct dword
  134.    _vtISpVoice ISpVoice    
  135. ISpVoice ends
  136.  
  137. SpVoice    TYPEDEF PTR ISpVoice
  138.  
  139.  
  140. SPF_DEFAULT            equ 0
  141. SPF_ASYNC              equ 1
  142. SPF_PURGEBEFORESPEAK   equ 2
  143. SPF_IS_FILENAME        equ 4
  144. SPF_IS_XML             equ 8
  145. SPF_IS_NOT_XML         equ 16
  146. SPF_PERSIST_XML        equ 32
  147. SPF_NLP_SPEAK_PUNC     equ 64
  148. SPF_NLP_MASK           equ SPF_NLP_SPEAK_PUNC
  149. SPF_VOICE_MASK         equ SPF_ASYNC or SPF_PURGEBEFORESPEAK or SPF_IS_FILENAME or SPF_IS_XML or SPF_IS_NOT_XML or SPF_NLP_MASK or SPF_PERSIST_XML
  150. SPF_UNUSED_FLAGS       equ NOT SPF_VOICE_MASK
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement