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 |