Windows 如何使用函数GetStorageFileName将培训文件添加到注册表?

Windows 如何使用函数GetStorageFileName将培训文件添加到注册表?,windows,speech-recognition,sapi,Windows,Speech Recognition,Sapi,我使用的是sapi 5.4,我可以保留音频用于培训,但如果要将其添加到本文中给出的注册表项中,我无法理解ISpObjectToken::GetStorageFileName要使用的参数。有人能帮我解决这个问题吗?不是世界上最好的API。幸运的是,我有一些工作示例来帮助改进文档 clsidCaller 如果需要与对象标记关联的文件名,请设置此选项。对于培训,这应该是CLSID\u NULL。(如果您正在更新与引擎相关的数据,则它将是引擎的CLSID。) pszValue名称 用于存储文件名的注册表

我使用的是sapi 5.4,我可以保留音频用于培训,但如果要将其添加到本文中给出的注册表项中,我无法理解ISpObjectToken::GetStorageFileName要使用的参数。有人能帮我解决这个问题吗?

不是世界上最好的API。幸运的是,我有一些工作示例来帮助改进文档

clsidCaller

如果需要与对象标记关联的文件名,请设置此选项。对于培训,这应该是
CLSID\u NULL
。(如果您正在更新与引擎相关的数据,则它将是引擎的CLSID。)

pszValue名称

用于存储文件名的注册表子项的名称。对于培训,这应该是
L“TrainingAudio-”
,其中locale应该是发动机的4位区域设置ID

pszFileNameSpecifier

要创建的文件的名称

如果以“X:\”或“\”开头,则假定为完整路径

否则,假定它与nFolder参数中给定的特殊文件夹ID相关

如果pszFileNameSpecifier以“\”结尾,或为空,则将创建一个唯一的文件名

如果名称包含%d,则将%d替换为一个数字,以提供唯一的文件名

对于培训,您应该指定类似于
L“TrainingAudio\\TR\u%d.wav”的内容。

文件夹

标识要检索其路径的文件夹的CSIDL值。用户可以通过将文件夹的CSIDL与CSIDL_FLAG_CREATE相结合来强制创建文件夹。如果pszFileNameSpecifier为NULL或“\”,则如果用户希望强制创建文件,则nFolder必须具有指定的CSIDL文件夹以及CSIDL_FLAG_CREATE

对于培训,这应该是
CSIDL\u LOCAL\u APPDATA\CSIDL\u FLAG\u CREATE

ppszFilePath


指向接收文件路径信息的以null结尾的字符串的指针的地址。完成后,使用CoTaskMemFree释放字符串。

我只想指出,对于任何使用c语言编程的人来说,CSIDL_LOCAL_APPDATA=28,CSIDL_FLAG_CREATE=32768。