Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; SAPI 5.1
- ; GUIDS ---------------------------------------------------------------------------
- .data
- CLSID_SpVoice GUID {096749377h,03391h,011D2h,<09Eh,0E3h,000h,0C0h,04Fh,079h,073h,096h>}
- IID_ISpVoice GUID {06C44DF74h,072B9h,04992h,<0A1h,0ECh,0EFh,099h,06Eh,004h,022h,0D4h>}
- .const
- TEXT_ MACRO your_text:VARARG
- LOCAL text_string
- .data
- text_string db your_text,0
- .code
- EXITM <addr text_string>
- ENDM
- ;Com
- CoMethod1Proto typedef proto :DWORD
- CoMethod2Proto typedef proto :DWORD, :DWORD
- CoMethod3Proto typedef proto :DWORD, :DWORD, :DWORD
- CoMethod4Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD
- CoMethod5Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
- CoMethod6Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
- CoMethod7Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
- CoMethod8Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
- CoMethod9Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
- CoMethod10Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
- CoMethod11Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
- CoMethod12Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
- CoMethod13Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
- CoMethod14Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
- CoMethod15Proto typedef proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
- CoMethod1 typedef ptr CoMethod1Proto
- CoMethod2 typedef ptr CoMethod2Proto
- CoMethod3 typedef ptr CoMethod3Proto
- CoMethod4 typedef ptr CoMethod4Proto
- CoMethod5 typedef ptr CoMethod5Proto
- CoMethod6 typedef ptr CoMethod6Proto
- CoMethod7 typedef ptr CoMethod7Proto
- CoMethod8 typedef ptr CoMethod8Proto
- CoMethod9 typedef ptr CoMethod9Proto
- CoMethod10 typedef ptr CoMethod10Proto
- CoMethod11 typedef ptr CoMethod11Proto
- CoMethod12 typedef ptr CoMethod12Proto
- CoMethod13 typedef ptr CoMethod13Proto
- CoMethod14 typedef ptr CoMethod14Proto
- CoMethod15 typedef ptr CoMethod15Proto
- _vtIUnknown MACRO Name:REQ
- &Name&_QueryInterface CoMethod3 ?
- &Name&_AddRef CoMethod1 ?
- &Name&_Release CoMethod1 ?
- ENDM
- IUnknown struct
- _vtIUnknown IUnknown
- IUnknown ends
- coinvoke MACRO pInterface:REQ, Interface:REQ, Function:REQ, args:VARARG
- LOCAL istatement, arg
- FOR arg, <args> ;; run thru args to see if edx is lurking in there
- IFIDNI <&arg>, <edx>
- .ERR <edx is not allowed as a coinvoke parameter>
- ENDIF
- ENDM
- istatement CATSTR <invoke (Interface PTR[edx]).&Interface>,<_>,<&Function, pInterface>
- IFNB <args> ;; add the list of parameter arguments if any
- istatement CATSTR istatement, <, >, <&args>
- ENDIF
- mov edx, pInterface
- mov edx, [edx]
- istatement
- ENDM
- RELEASE_INTERFACE MACRO Interface:REQ
- .if &Interface != 0
- coinvoke Interface,IUnknown,Release
- mov Interface,0
- .endif
- ENDM
- ; INTERFACES ---------------------------------------------------------------------------
- _vtISpVoice MACRO Name:REQ
- ;; IUnknown Methods
- _vtIUnknown Name
- ;; ISpVoice Methods
- &Name&_SetNotifySink CoMethod1 ?
- &Name&_SetNotifyWindowMessage CoMethod5 ?
- &Name&_SetNotifyCallbackFunction CoMethod4 ?
- &Name&_SetNotifyCallbackInterface CoMethod4 ?
- &Name&_SetNotifyWin32Event CoMethod1 ?
- &Name&_WaitForNotifyEvent CoMethod2 ?
- &Name&_GetNotifyEventHandl CoMethod1 ?
- &Name&_SetInterest CoMethod3 ?
- &Name&_GetEvents CoMethod4 ?
- &Name&_GetInfo CoMethod2 ?
- &Name&_SetOutput CoMethod3 ?
- &Name&_GetOutputObjectToken CoMethod2 ?
- &Name&_GetOutputStream CoMethod2 ?
- &Name&_Pause CoMethod1 ?
- &Name&_Resume CoMethod1 ?
- &Name&_SetVoice CoMethod2 ?
- &Name&_GetVoice CoMethod2 ?
- &Name&_Speak CoMethod4 ?
- &Name&_SpeakStream CoMethod4 ?
- &Name&_GetStatus CoMethod3 ?
- &Name&_Skip CoMethod4 ?
- &Name&_SetPriority CoMethod2 ?
- &Name&_GetPriority CoMethod2 ?
- &Name&_SetAlertBoundary CoMethod2 ?
- &Name&_GetAlertBoundary CoMethod2 ?
- &Name&_SetRate CoMethod2 ?
- &Name&_GetRate CoMethod2 ?
- &Name&_SetVolume CoMethod2 ?
- &Name&_GetVolume CoMethod2 ?
- &Name&_WaitUntilDone CoMethod2 ?
- &Name&_SetSyncSpeakTimeout CoMethod2 ?
- &Name&_GetSyncSpeakTimeout CoMethod2 ?
- &Name&_SpeakCompleteEvent CoMethod1 ?
- &Name&_IsUISupported CoMethod5 ?
- &Name&_DisplayUI CoMethod6 ?
- ENDM
- ISpVoice struct dword
- _vtISpVoice ISpVoice
- ISpVoice ends
- SpVoice TYPEDEF PTR ISpVoice
- SPF_DEFAULT equ 0
- SPF_ASYNC equ 1
- SPF_PURGEBEFORESPEAK equ 2
- SPF_IS_FILENAME equ 4
- SPF_IS_XML equ 8
- SPF_IS_NOT_XML equ 16
- SPF_PERSIST_XML equ 32
- SPF_NLP_SPEAK_PUNC equ 64
- SPF_NLP_MASK equ SPF_NLP_SPEAK_PUNC
- 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
- SPF_UNUSED_FLAGS equ NOT SPF_VOICE_MASK
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement