EVT_ACX_KEYWORDSPOTTER_ASSIGN_PATTERNS回呼函式 (acxelements.h)
EVT_ACX_KEYWORDSPOTTER_ASSIGN_PATTERNS回呼會指派關鍵詞識別器要使用的關鍵詞偵測模式。
語法
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
識別關鍵詞 Spotter 偵測模式的 GUID。
PatternSize
關鍵詞偵測模式的長度,以位元組為單位。
傳回值
如果呼叫成功,則傳 STATUS_SUCCESS
回 。 否則,它會傳回適當的錯誤碼。 如需詳細資訊,請參閱 使用NTSTATUS值。
備註
如需關鍵詞偵測的一般資訊,請參閱 語音啟用 和 多個語音助理。
範例
範例使用方式如下所示。
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 版本概觀。
規格需求
需求 | 值 |
---|---|
標頭 | acxelements.h |
IRQL | PASSIVE_LEVEL |