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
キーワード スッター検出パターンを識別する 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 |