EVT_ACX_KEYWORDSPOTTER_ASSIGN_PATTERNS回调函数 (acxelements.h)
EVT_ACX_KEYWORDSPOTTER_ASSIGN_PATTERNS回调为关键字 (keyword) 检测器使用的关键字 (keyword) 检测分配检测模式。
语法
EVT_ACX_KEYWORDSPOTTER_ASSIGN_PATTERNS EvtAcxKeywordspotterAssignPatterns;
NTSTATUS EvtAcxKeywordspotterAssignPatterns(
ACXKEYWORDSPOTTER KeywordSpotter,
GUID *EventId,
PVOID Pattern,
ULONG PatternSize
)
{...}
参数
KeywordSpotter
一个已初始化的现有 ACXKEYWORDSPOTTER 对象。 有关 ACX 对象的详细信息,请参阅 ACX 对象的摘要。 另请参阅 AcxKeywordSpotterCreate 函数。
EventId
指向表示 EventId 的 GUID 的指针。
Pattern
标识关键字 (keyword) 检测模式的 GUID。
PatternSize
关键字 (keyword) 检测模式的长度(以字节为单位)。
返回值
STATUS_SUCCESS
如果调用成功,则返回 。 否则,它将返回相应的错误代码。 有关详细信息,请参阅 使用 NTSTATUS 值。
注解
有关关键字 (keyword) 检测的常规信息,请参阅语音激活和多语音助理。
示例
示例用法如下所示。
EVT_ACX_KEYWORDSPOTTER_ASSIGN_PATTERNS CodecC_EvtAcxKeywordSpotterAssignPatterns;
NTSTATUS
NTAPI
CodecC_EvtAcxKeywordSpotterAssignPatterns(
_In_ ACXKEYWORDSPOTTER KeywordSpotter,
_In_ GUID * EventId,
_In_ PVOID Pattern,
_In_ ULONG PatternSize
)
{
KSMULTIPLE_ITEM * itemsHeader = nullptr;
SOUNDDETECTOR_PATTERNHEADER * patternHeader;
CONTOSO_KEYWORDCONFIGURATION * pattern;
ULONG cbRemaining = 0;
PCODEC_KEYWORDSPOTTER_CONTEXT keywordSpotterCtx;
CKeywordDetector * keywordDetector = NULL;
PAGED_CODE();
keywordSpotterCtx = GetCodecKeywordSpotterContext(KeywordSpotter);
keywordDetector = (CKeywordDetector*)keywordSpotterCtx->KeywordDetector;
cbRemaining = PatternSize;
// The SYSVADPROPERTY_ITEM for this property ensures the value size is at
// least sizeof KSMULTIPLE_ITEM.
if (cbRemaining < sizeof(KSMULTIPLE_ITEM))
{
return STATUS_INVALID_PARAMETER;
}
itemsHeader = (KSMULTIPLE_ITEM*)Pattern;
// Verify property value is large enough to include the items
if (itemsHeader->Size > cbRemaining)
{
return STATUS_INVALID_PARAMETER;
}
// No items so clear the configuration.
if (itemsHeader->Count == 0)
{
keywordDetector->ResetDetector(*EventId);
return STATUS_SUCCESS;
}
// This sample supports only 1 pattern type.
if (itemsHeader->Count > 1)
{
return STATUS_NOT_SUPPORTED;
}
// Bytes remaining after the items header
cbRemaining = itemsHeader->Size - sizeof(*itemsHeader);
// Verify the property value is large enough to include the pattern header.
if (cbRemaining < sizeof(SOUNDDETECTOR_PATTERNHEADER))
{
return STATUS_INVALID_PARAMETER;
}
patternHeader = (SOUNDDETECTOR_PATTERNHEADER*)(itemsHeader + 1);
// Verify the pattern type is supported.
if (patternHeader->PatternType != CONTOSO_KEYWORDCONFIGURATION_IDENTIFIER2)
{
return STATUS_NOT_SUPPORTED;
}
// Verify the property value is large enough for the pattern.
if (cbRemaining < patternHeader->Size)
{
return STATUS_INVALID_PARAMETER;
}
// Verify the pattern is large enough.
if (patternHeader->Size != sizeof(CONTOSO_KEYWORDCONFIGURATION))
{
return STATUS_INVALID_PARAMETER;
}
pattern = (CONTOSO_KEYWORDCONFIGURATION*)(patternHeader);
return keywordDetector->DownloadDetectorData(*EventId, pattern->ContosoDetectorConfigurationData);
}
ACX 要求
最低 ACX 版本: 1.0
有关 ACX 版本的详细信息,请参阅 ACX 版本概述。
要求
要求 | 值 |
---|---|
Header | acxelements.h |
IRQL | PASSIVE_LEVEL |