Что находится в mscorlib dll
Здесь я продемонстрирую возможность, которая по своей сути — самый настоящий хак. Вопрос, зачем это может понадобиться? На самом деле целей для этого может быть огромное множество. Итак наша задача — изменить код библиотеки mscorlib таким образом, чтобы все программы, которые ей пользуются, получили эти изменения. Не рантайм, конечно, а во время старта (для runtime необходимо проделать другие вещи, и тут надо оговориться что изменения эти не должны поломать текущие состояния библиотеки). Mscorlib я взял как пример, потому что она есть у всех на компьютере. Но можно хакать любую другую.
Все мы знаем, что для того, чтобы не было «ада dll», Microsoft помимо обычных версий и названия библиотек, дали возможность подписывать сборки ключом, public key которой гарантирует что конкретная сборка «пришла» от конкретного разработчика, а не от какого-то другого. Поэтому, если мы хотим по какой-то вполне добросовестной причине изменить код существующей библиотеки т.о., чтобы она загрузилась в чужой процесс и при этом ключик public key остался тем же, у нас этого не получится. Потому что мы не сможем ее подписать, у нас нет закрытого ключа.
Наша мини цель, чтобы программа вывела на консоль текст:
Введение
Лучшие практики для исправления проблем с mscorlib
Аккуратный и опрятный компьютер - это главное требование для избежания проблем с mscorlib. Для этого требуется регулярная проверка компьютера на вирусы, очистка жесткого диска, используя cleanmgr и sfc /scannow, удаление программ, которые больше не нужны, проверка программ, которые запускаются при старте Windows (используя msconfig) и активация Автоматическое обновление Windows. Всегда помните о создании периодических бэкапов, или в крайнем случае о создании точек восстановления.
Если у вас актуальные проблемы, попробуйте вспомнить, что вы делали в последнее время, или последнюю программу, которую вы устанавливали перед тем, как появилась впервые проблема. Используйте команду resmon, чтобы определить процесс, который вызывает проблемы. Даже если у вас серьезные проблемы с компьютером, прежде чем переустанавливать Windows, лучше попробуйте восстановить целостность установки ОС или для Windows 8 и более поздних версий Windows выполнить команду DISM.exe /Online /Cleanup-image /Restorehealth. Это позволит восстановить операционную систему без потери данных.
Следующие программы могут вам помочь для анализа процесса mscorlib.ni.dll на вашем компьютере: Security Task Manager отображает все запущенные задания Windows, включая встроенные скрытые процессы, такие как мониторинг клавиатуры и браузера или записей автозагрузки. Уникальная оценка рисков безопасности указывает на вероятность процесса быть потенциально опасным - шпионской программой, вирусом или трояном. Malwarebytes Anti-Malware определяет и удаляет бездействующие программы-шпионы, рекламное ПО, трояны, кейлоггеры, вредоносные программы и трекеры с вашего жесткого диска.
Комментарий пользователя
Пока нет комментариев пользователей. Почему бы не быть первым, кто добавить небольшой комментарий и одновременно поможет другим пользователям?
42 пользователей спрашивали про этот файл. Один пользователь оценил, как важный для Windows или установленной программы. Один пользователь оценил, как представляется нужным.
Как вы поступите с файлом mscorlib.dll?
(mscorlib.dll) отсутствует или не обнаружен.
0. Pay-for-Play
BCL располагается в GAC, откуда приложения загружают необходимые для работы зависимости.
Примеры компонентов, которые поставляются через NuGet:
Этот подход называется «pay-for-play»; другими словами, приложения загружают только ту функциональность, которая им необходима, но каждая такая функциональность содержится в отдельной сборке.
Информация о файле mscorlib.ni.dll
Описание: mscorlib.ni.dll не является необходимым для Windows. Mscorlib.ni.dll находится в подпапках C:\Windows. Известны следующие размеры файла для Windows 10/8/7/XP 13,179,660 байт (41% всех случаев), 11,492,352 байт и еще 4 варианта .
.dll file (Dynamic Link Library) это специальный тип программ Windows, который содержит функции, которые могут вызываться из других программ. Файл .dll can be injected to all running processes and can change or manipulate their behavior. Нет детального описания сервиса. Это не системный файл Windows. У процесса нет видимого окна. Может менять поведение других программ или манипулировать другими программами. Поэтому технический рейтинг надежности 66% опасности.
Важно: Некоторые вредоносные программы маскируют себя как mscorlib.ni.dll. Таким образом, вы должны проверить файл mscorlib.ni.dll на вашем ПК, чтобы убедиться, что это угроза. Мы рекомендуем Security Task Manager для проверки безопасности вашего компьютера.
Написание сервиса Windows
Опять же, я не буду вдаваться в особые подробности. Это обычный сервис. Единственная особенность заключается в том что он должен ожидать от драйвера команд и отвечать на них. Ожидать мы будем при помощи IoCompletionPort. Этот механизм требует (в общем понятно для чего), чтобы на ожидании завершения ввода/вывода по порту висело несколько потоков. Когда придут данные, одна из задач просыпается и может эти данные обработать. Мы в этой задаче будем отсылать список редиректов.
И, наконец, класс обслуживания потока:
Настройка происходит следующим не хитрым образом:
Это значит что любое обращение к сборке mscorlib.dll в GAC приведет к редиректу в папку «C:\temp\GAC32\mscorlib.dll» для 32-х разрядной системы. Для 64-х разрядной проделайте тоже самое, но для другой папки.
Модифицируем mscorlib.dll
Выводы по разработке драйвера
У нас есть драйвер, который оповещает внешний сервис о создании новых процессов в операционной системе. Сервис получая информацию о процессе принимает решение о том, включать на нем мониторинг или нет. Если да, передает также список правил редиректов на файловой системе.
MSCORLIB.DLL
Описание файла: mscorlib.dll Файл mscorlib.dll из Microsoft Corporation является частью Microsoft NET Framework. mscorlib.dll, расположенный в c: \Program Files \Microsoft Silverlight \4 .1 .10329 .0 \ с размером файла 1589248.00 байт, версия файла 4.1.10329.0, подпись A5C072F31A9754A7DC510B3002237E07.
Проверьте процессы, запущенные на вашем ПК, используя базу данных онлайн-безопасности. Можно использовать любой тип сканирования для проверки вашего ПК на вирусы, трояны, шпионские и другие вредоносные программы.
Path: C:/Windows/WinSxS/wow64_mscorlib_b77a5c561934e089_4.0.15806.0_none_4c8b3a5e6dce608e/
version: 4.8.4161.0 // size: 5679904 byte
Antivirus scan result for this process 6355a9cadb449fd5b9f7cb1824bdb83e
Path: C:/Windows/WinSxS/amd64_mscorlib_b77a5c561934e089_4.0.15806.0_none_22bcf344ac83cb71/
version: 4.8.4161.0 // size: 5439480 byte
Antivirus scan result for this process 0efe43ae58e8edc79fdd9733fcc59949
Path: C:/Windows/assembly/GAC_64/mscorlib/2.0.0.0__b77a5c561934e089/
version: 2.0.50727.9157 // size: 4575232 byte
Antivirus scan result for this process 533d3a477245eb7a5110264b2f226847
Path: C:/Windows/assembly/GAC_32/mscorlib/2.0.0.0__b77a5c561934e089/
version: 2.0.50727.9157 // size: 4558848 byte
Antivirus scan result for this process 49087ca45e30bb077cee6978b28098d0
Path: C:/Program Files/WindowsApps/Microsoft.YourPhone_1.21121.250.0_x64__8wekyb3d8bbwe/YourPhoneAppProxy/
version: 3.1.22 93bbacb3437dd // size: 57232 byte
Antivirus scan result for this process 470d8a49e80c6d94283db24888ede8cf
Path: C:/Windows/WinSxS/amd64_mscorlib_b77a5c561934e089_6.3.9600.21003_none_8440f7648a992827/
version: unknown // size: 47878 byte
Antivirus scan result for this process 456af10db1319af0fb23f359e51a2bb8
Path: C:/Windows/WinSxS/amd64_mscorlib_b77a5c561934e089_6.3.9600.20708_none_8440829a8a99ad5c/
version: unknown // size: 60993 byte
Antivirus scan result for this process 07f94e2787750098a22505def99546b6
Path: C:/Windows/WinSxS/amd64_mscorlib_b77a5c561934e089_6.3.9600.17226_none_9b1059f470f048a5/
version: unknown // size: 48464 byte
Antivirus scan result for this process c7c2288494e794d71b165ed58d44eb63
Path: C:/Windows/WinSxS/amd64_mscorlib_b77a5c561934e089_6.3.9600.16449_none_9b12140270eecbb1/
version: unknown // size: 61137 byte
Antivirus scan result for this process 75f31b71bbf869e6ae6a09dc10fee04f
Path: C:/Windows/WinSxS/amd64_mscorlib_b77a5c561934e089_4.0.9600.20681_none_2ee67d446c970795/
version: unknown // size: 551791 byte
Antivirus scan result for this process 508c3d1e1909654c987eb7fd8c0d9888
Path: C:/Windows/WinSxS/amd64_mscorlib_b77a5c561934e089_4.0.9600.17187_none_45b39dca52f03d38/
version: unknown // size: 551823 byte
Antivirus scan result for this process 6aa4d44d4978d918631241be6c2343c9
Path: C:/Windows/WinSxS/amd64_mscorlib_b77a5c561934e089_4.0.9600.17031_none_45af252c52f4246e/
version: unknown // size: 551563 byte
Antivirus scan result for this process 58e758e787d9bd2c30d530c93ab7b1c4
Path: C:/Windows/WinSxS/x86_mscorlib_b77a5c561934e089_6.3.9600.21003_none_cbee2e3b9f15512d/
version: unknown // size: 47709 byte
Antivirus scan result for this process 5f9e8607854f8e92ca581ad23452e0e4
1. FDD vs SCD
- Portable (Framework-dependent deployment — FDD)
- Standalone (Self-contained deployment — SCD)
В Standalone (SCD)-приложении все компоненты для выполнения (CoreCLR, CoreFX), а также сторонние библиотеки, то есть абсолютно все зависимости, поставляются вместе с самим приложением (чаще всего в одной папке).
Важно понимать, что Standalone-приложение привязано к определенной ОС и архитектуре (например, Windows 7 x64 или OSX 10.12 x64). Такой идентификатор называется Runtime identifier (RID). Для каждой ОС/архитектуры существует своя версия библиотеки Core CLR (и прочих нативных компонентов), поэтому для Standalone-приложений на этапе компиляции в свойстве RuntimeIdentifier нужно указывать параметры целевой системы (RID).
Файлы фреймворка(-ов) хранятся в папке C:\Program Files\dotnet\shared.
Можно установить несколько версий фреймворка:
Для выполнения Portable-приложения необходимо запустить хост-процесс dotnet.exe и передать ему в качестве аргумента путь к управляемой сборке.
«C:\Program Files\dotnet» добавляется к значению переменной среды PATH, благодаря чему Portable-приложения теперь могут запускаться из командной строки:
Этот файл является обязательным для Portable-приложений.
Уменьшение количества файлов объясняется тем, что в Core FX 1.0 отсутствовали многие библиотеки, поэтому они шли в составе приложения, как обычные зависимости. В Core FX 2.0 эти сборки были добавлены, поэтому они больше не поставляются с приложением, а берутся из папки фреймворка.
Наблюдается картина, противоположная Portable-приложениям — чем больше становится Core FX, тем больше файлов поставляется с приложением.
Рекомендации по выбору типа развертывания
Проверка результатов
Текст приложения прост до невозможности
Вывод программы:
Ver: 5.0.40930.0!
Заметка:
Изменять код системных библиотек необходимо аккуратно. Например, наш пример валит часть программного обеспечения, поскольку оно проверяет номер версии, на которой запускается. Хорошим примером может послужить создание логгера внутренних событий, чем я сейчас и занимаюсь
Mscorlib.ni.dll - это файл DLL в Windows. DLL - это аббревиатура от Dynamic Link Library (динамически подключаемая библиотека). DLL файлы необходимы программам или расширениям веб-браузера, потому что они содержат программный код, данные и ресурсы. Бесплатный форум с информацией о файлах может помочь вам разобраться является ли mscorlib.ni.dll вирусом, трояном, программой-шпионом, рекламой, которую вы можете удалить, или файл принадлежит системе Windows или приложению, которому можно доверять.
- Используйте программу Настройщик Windows, чтобы найти причину проблем, в том числе и медленной работы компьютера.
- Обновите программу mscorlib.ni.dll. Обновление можно найти на сайте производителя (ссылка приведена ниже).
- В следующих пунктах предоставлено описание работы mscorlib.ni.dll.
mscorlib сканер
Security Task Manager показывает все запущенные сервисы Windows, включая внедренные скрытые приложения (например, мониторинг клавиатуры или браузера, авто вход). Уникальный рейтинг надежности указывает на вероятность того, что процесс потенциально может быть вредоносной программой-шпионом, кейлоггером или трояном.
Бесплатный aнтивирус находит и удаляет неактивные программы-шпионы, рекламу, трояны, кейлоггеры, вредоносные и следящие программы с вашего жесткого диска. Идеальное дополнение к Security Task Manager.
Reimage бесплатное сканирование, очистка, восстановление и оптимизация вашей системы.
Есть пространство имен System.IO , оно содержится в mscorlib.dll и system.dll. Обе .dll подключаются автоматически при создании проекта.
Каким образом в директиве using System.IO указать что нужно использовать данное пространство имен из например mscorlib.dll? каким образом определяется из какой .dll использовать пространства имен?
(дело в том что в mscorlib.dll есть кое что чего нет в system.dll. ).
- Вопрос задан более трёх лет назад
- 382 просмотра
Не совсем понятно, зачем вам это. Когда вы пишете using System.IO в текущий скоуп добавляются сущности из всего System.IO, не важно из какой сборки (иными словами, со всех сборок сразу). В этом и смысл пространств имён в дотнете - они предствляют собой способ логического деления проекта и библиотек (в отличие от физического деления на сборки). Если вы не хотите подключать всё, подключите конкретный класс таким образом:
using StreamReader = System.IO.StreamReader;
" добавляются сущности из всего System.IO" -IntelliSense в VS 2013 не хочет показывать из mscorlib.dll.
Насколько я понял ссылки на mscorlib.dll добавляются при компиляции, т.к. AddReferense эту библиотеку нельзя. вообщем что нужно заработало, спасибо.
Нормальное поведение, что пространства имен из разных сборок объединяются в одно, по ссылке выше, это для того, если у вас есть совпадающие имена в одном пространстве, но разных сборках. Все равно подключаются обе, без system.dll очень тяжело чего то написать. Просто в mscorlib.dll нет управляемого кода, это фактически и есть CLR, в system просто вынесли более высокоуровневые вещи.
Текст объемный и рассчитан на:
Примеры процессов выполнения описаны для ОС Windows, но работают по тому же принципу и на других ОС (с учетом различных расширений исполняемых файлов и нативных библиотек).
5. Runtime Configuration Files
dotnet.exe ([AppName].exe) использует файл [AppName].deps.json для определения абсолютных путей всех зависимостей приложения при его запуске.
Структура [AppName].deps.json:
Секция targets определяет платформу и дерево зависимостей для нее в формате
[ID зависимости (пакета)]/[версия]: dependencies: < список зависимостей (пакетов) данного пакета >,
относительные пути к управляемым и нативным файлам данного пакета
>
Рассмотрим подробнее содержимое файла deps.json Standalone-приложения:
В свойстве dependencies перечислены зависимости (пакеты) конкретного пакета.
Свойство runtimeTargets используется в deps-файле Portable-приложения и определяет пути файлов библиотек для конкретного RID. Такие RID-specific библиотеки поставляются вместе с Portable-приложением в папке runtimes.
Свойства runtime и native содержат относительные пути управляемых (managed) и нативных библиотек соответственно. Свойство resources содержит относительные пути и локали локализованных сборок-ресурсов.
Пути относительны к NuGet package cache, а не deps-файлу.
Добавить сторонний deps-файл можно передав значение аргумента --additional-deps или переменную среды DOTNET_ADDITIONAL_DEPS.
Такая возможность доступна только для Portable приложений.
Когда dotnet.exe (MyApp.exe) определяет пути зависимостей приложения, для каждой отдельной библиотеки составляется список из runtime- и native-путей.
6.1. Запуск приложения
выполняется при помощи мультплексора (muxer) из командной строки (одинаково на любой ОС).
6.2. [corehost] Поиск и загрузка Framework Resolver (hostfxr.dll)
На этом этапе dotnet.exe идет в папку [own directory]/host/fxr/. Для Portable-приложений эта библиотека расположена в общей папке C:\Program Files\dotnet\host\fxr\[FXR version]\hostfxr.dll. Если версий будет несколько, dotnet.exe будет всегда использовать последнюю.
После загрузки hostfxr.dll (Framework Resolver) процесс запуска переходит в рамки этой библиотеки.
6.3. [hostfxr] Определение режима выполнения (standalone, muxer, split/FX)
Первая задача hostfxr — определить режим, в котором будет работать хост процесс и таким образом тип приложения — Portable (FDD) или Standalone (SCD). В Portable (FDD)-режиме он также определяет: это запускаемое приложение или команда SDK.
— если среди аргументов есть такой, значение которого оканчивается на .dll или .exe — процесс запуска продолжится в режиме выполнение указанного файла. Если такого аргумента нет, управление будет передано SDK. Для этого из папки [own directory]\sdk\[version] (если такая существует) будет запущен dotnet.dll (как Portable приложение), и этой сборке будут переданы аргументы текущего хост процесса.
Алгоритм проверки очень простой — если в папке, откуда был запущен мультиплексор [AppName].exe (в нашем случае dotnet.exe), отсутствует coreclr.dll или [AppName].dll, то приложение Portable. Если один из этих двух файлов существует, то далее идет проверка — приложение Portable (split/FX) или Standalone. Если существует [AppName].dll, то приложение Standalone, иначе — Portable (split/FX).
Запуск Portable-приложения может также осуществляться в так называемом Exec mode.
Для этого команда запуска первым аргументом должна содержать exec C:\> dotnet exec . .
При запуске в таком режиме можно явно указать пути к файлам конфигурации:
--depsfile
--runtimeconfig
которые будут использованы вместо файлов в папке приложения.
На текущем этапе hostfxr определяет (по данным файла конфигурации), является ли приложение Portable или Standalone.
При выборе версии учитывается параметр Roll Forward On No Candidate Fx, который указывает строгость соответствия заданной версии и имеющихся на машине.
6.5. [hostfxr] Поиск и загрузка hostpolicy.dll
На текущем этапе всё готово для определения путей runtime-компонентов. Этой задачей занимается библиотека hostpolicy.dll, которая называется Host library.
Если файл не был найден на предыдущем этапе, hostpolicy.dll будет найдено в папке фреймворка.
Как только опеределена hostpolicy.dll, hostfxr загружает эту библиотеку и передает ей управление.
6.6. [hostpolicy] Определение списка зависимостей
Библиотека hostpolicy.dll отвечает за определение абсолютных путей всех зависимостей приложения.
Прежде всего hostpolicy создаст компонент под названием Dependencies Resolver, который в свою очередь загрузит два deps-файла — файл фреймворка и файл приложения.
Сперва загружается список из deps-файл фреймворка, где будут определены такие зависимости, как CoreCLR и библиотеки CoreFX. Затем список из deps-файла приложения, в котором указаны сборки нашего приложения и их зависимости.
Для каждого deps-файла Dependency Resolver составляет список всех зависимостей для указанной runtimeTarget.
Для каждого пакета сначала составляется список файлов из всех секций runtimeTargets (RID specific зависимости), далее — список всех файлов из секций native и runtime. Такой объединенный список относительных путей всех зависимостей в условном формате
ID пакета — RID — тип asset'а (runtime, native) — пути к файлам называется Target assets.
После того, как были составлены эти два списка файлов зависимостей (RID и не RID), выполняется процесс под названием Reconciling libraries with targets (согласования). Он заключается в том, что для каждого пакета из секции libraries проверяется, существует ли RID specific-файлы, которые должны переопределить обычные.
6.7. [hostpolicy] Определение путей TPA, Core CLR и CLR Jit
Далее Dependency resolver составляет список абсолютных путей файлов управляемых сборок — зависимостей приложения. Этот список называется TPA (Trusted Platform Assemblies) и передается Core CLR для настройки AppDomain. Также составляется список абсолютных путей директорий, в которых находятся остальных файлы зависимостей (кроме coreclr, corejit).
Определение абсолютных путей управляемых сборок происходит путем поиска файлов в Probe paths (путей зондирования). По умолчанию их два — папка фреймворка и папка приложения, и они основаны на расположении deps-файлов. Также можно добавить дополнительные пути:
1) передав аргумент --additionalprobingpath, например
--additionalprobingpath %UserProfile%\\.nuget\\packages
В папке фреймворка и приложения наличие файла проверятся (при условии, что он был указан в соответствующем deps-файле) без учета относительного пути, в остальных директориях с учетом относительно пути, потому что эти директории рассматриваются как кеш NuGet-пакета.
- папка приложения;
- папка фреймворка
- Probe paths
После составления списка TPA, определяются пути CoreCLR и CLRJit.
При отсутствии deps-файла приложения, dotnet.exe вначале попытается найти эти библиотеки в [app directory]\lib\. При обычном выполнении пути берутся из папки фреймворка (отбросив относительный путь и взяв только имя файла).
Устанавливаются следующие настройки CoreCLR:
- TRUSTED_PLATFORM_ASSEMBLIES — список обсолютных путей всех управляемых библиотек приложения.
- NATIVE_DLL_SEARCH_DIRECTORIES — абсолютные пути директорий, где найдены нативные зависимости.
- PLATFORM_RESOURCE_ROOTS — абсолютные пути директорий, где найдены зависимости-ресурсы
- AppDomainCompatSwitch — константа «UseLatestBehaviorWhenTFMNotSpecified».
- APP_CONTEXT_BASE_DIRECTORY — папка приложения.
- APP_CONTEXT_DEPS_FILES — абсолютные пути deps-файлов приложения и фреймворка.
- FX_DEPS_FILE — абсолютный путь deps-файла фреймворка.
- PROBING_DIRECTORIES — дополнительные пути зондирования (если они были указаны).
Процесс запуска Standalone-приложения отличается от Portable только начальным этапом, а также местоположением компонентов, которые по умолчанию должны располагаться в папке приложения.
7.2. Процесс запуска
происходит так же, как у Portable-приложения, за исключением того, что существует только один deps-файл и все зависимости ищутся в папке приложения или по указанным --additionalprobepaths.
Asmwsoft PC Optimizer — это пакет утилит для Microsoft Windows, призванный содействовать управлению, обслуживанию, оптимизации, настройке компьютерной системы и устранению в ней неполадок.
Всего голосов ( 181 ), 115 говорят, что не будут удалять, а 66 говорят, что удалят его с компьютера.
Разработка драйвера
Для начала устанавливаем VirtualBox. Он нам понадобится чтобы отлаживать драйвер. Нам же не хочется перезапускаться каждый раз, когда наш драйвер будет обращаться не по тем адресам и вылетать с ошибкой (естественно, с BSOD'ом). На виртуалки накатываем образы Windows XP и Windows 7, x86 и x64 и снимаем снапшоты, чтобы было куда откатываться.
Далее устанавливаем на девелоперскую машину VisualDDK, WinDDK, и прочую инфраструктуру для разработки драйверов.
Далее пишем сам драйвер. Я не буду выкладывать полные листинги, а только важные их части. Оговорюсь только что пишем мы Minifilter Filesystem Driver.
Тут все просто. Вводим структуры для регистрации драйвера фильтра. Фильтр будет работать на всех volumes, и перехватывать операцию CreateFile (создание/открытие файла)
- драйвер регистрируется в системе
- делается нотификация, которая будет нас уведомлять о новых процессах в системе
- поднимается Communitation Port для общения с пользовательским уровнем (3 кольцо защиты, приложения Windows), где нас ожидает сервис Windows, который будет описан ниже
Выход из фильтра также прост:
Скажу только что DeregisterFilter занимается освобождением всех ресурсов. основываясь на выставленных флагах в DRIVER_DATA.Initialized (см. код выше)
Далее. Теперь нам необходимо знать что и куда перенаправлять. Какой файл и куда. Для этого я сделал небольшой протокольчик между kernel-mode и user-mode по communication port, оторый мы подняли в DriverEntry
Определяем набор команд:
Определяем структуру базы всех команд:
Определяем структуру, посылаемую сервису Windows для уведомления о новом процессе в системе:
Также вводим структуры для хранения данных в драйвере:
Теперь, когда все определено, необходимо при старте нового процесса (а мы уже его перехватываем) оповестить об этом сервис, который в качестве ответа отдаст нам набор правил редиректа файлов и папок в зависимости от этого процесса.
Я не буду включать код функций, очищающих память, т.к. это не так интересно.
При вызове функции ей передается создавший процесс, созданный и флаг, создан ли процесс либо он умирает. Т.е. функция оповещает нас и о создании и о смерти процесса.
Внутри ее, если процесс создается, мы оповещаем об этом сервис Windows, передавая PID процесса. По этому PID сервис находит у себя список правил редиректа и отдает их нам в качестве ответа:
Код, представленный ниже просто инициализирует внутренние структуры относительно тех данных, которые пришли от сервиса Windows:
И, последнее, функция поиска правила редиректа. Если правило найдено, возвращает STATUS_SUCCESS и видоизмененный путь:
Читайте также: