Я хочу связать запросы на сканирование, относящиеся к определенному сценарию; Поскольку в процессе выполнения скрипта мы получаем несколько блоков скриптов, нам необходимо их связать.
Я реализовал COM-компонент «IAntimalwareProvider». Я получаю «IAmsiStream» в качестве формата ввода для метода «scan», который сам имеет «GetAttribute» в качестве метода.
Теперь я хочу вызвать метод, чтобы получить атрибут «AMSI_ATTRIBUTE_SESSION». Мне не понятно, как вызвать этот метод для получения информации. Обычно система предоставляет уникальный идентификатор для связи вызовов, но из объяснений на следующей странице кажется, что мы должны вернуть значение …!
Я получаю 0x80070057, E_INVALIDARG, вызывающий метод для «AMSI_ATTRIBUTE_SESSION».
примечание: в качестве примечания у меня нет проблем с вызовом IAmsiStream :: GetAttribute для получения информации о других атрибутах. проблема конкретно связана с «AMSI_ATTRIBUTE_SESSION».
https://msdn.microsoft.com/en-us/library/windows/desktop/dn889590(v=vs.85).aspx
HRESULT hRes = stream->GetAttribute(attribute, 0, NULL, &readSize);
if (hRes != S_OK)
{
itoa(hRes, (char *)buffer, 0x10);
MessageBoxA(NULL, (LPCSTR)buffer, "HRESULT", MB_OK);
// The output is 0x80070057 always
memset(buffer, 0, 0x10);
itoa(readSize, (char *)buffer, 0x10);
MessageBoxA(NULL, (LPCSTR)buffer, "ReadSize", MB_OK);
// The output is 0 always
}
Задача ещё не решена.
Других решений пока нет …