Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Подключает указанный профилировщик к указанному процессу.
Синтаксис
HRESULT AttachProfiler(
[in] DWORD dwProfileeProcessID,
[in] DWORD dwMillisecondsMax, // optional
[in] const CLSID * pClsidProfiler,
[in] LPCWSTR wszProfilerPath, // optional
[in] size_is(cbClientData)] void * pvClientData, // optional
[in] UINT cbClientData); // optional
Параметры
dwProfileeProcessID
[in] Идентификатор процесса, к которому следует подключить профилировщик. На 64-разрядном компьютере разрядность профилируемого процесса должна соответствовать разрядности инициирующего процесса, вызывающего метод AttachProfiler. Если учетная запись пользователя, в которой вызывается метод AttachProfiler, имеет права администратора, целевым процессом может быть любой процесс в системе. В противном случае целевой процесс должен принадлежать той же учетной записи пользователя.
dwMillisecondsMax
[in] Время в миллисекундах для завершения выполнения AttachProfiler. Инициирующий процесс должен передавать интервал времени, которого заведомо будет достаточно, чтобы конкретный профилировщик завершил свою инициализацию.
pClsidProfiler
[in] Указатель на идентификатор CLSID загружаемого профилировщика. Инициирующий процесс может повторно использовать эту память после возврата метода AttachProfiler.
wszProfilerPath
[in] Полный путь к загружаемому DLL-файлу профилировщика. Эта строка должна содержать не более 260 символов, включая символ конца строки null. Если в параметре wszProfilerPath задана пустая строка или значение null, среда CLR будет пытаться найти местоположение DLL-файла профилировщика путем поиска в реестре CLSID, на который указывает параметр pClsidProfiler.
pvClientData
[in] Указатель на данные, передаваемые профилировщику методом ICorProfilerCallback3::InitializeForAttach . Инициирующий процесс может повторно использовать эту память после возврата метода AttachProfiler. Если параметр pvClientData имеет значение null, параметр cbClientData должен иметь значение 0 (ноль).
cbClientData
[in] Размер в байтах данных, на которые указывает pvClientData.
Возвращаемое значение
Этот метод возвращает следующие значения HRESULT.
| HRESULT | Описание: |
|---|---|
| S_OK | Указанный профилировщик успешно подключен к целевому процессу. |
| CORPROF_E_PROFILER_ALREADY_ACTIVE | Уже существует активный профилировщик или профилировщик, подключенный к целевому процессу. |
| CORPROF_E_PROFILER_NOT_ATTACHABLE | Указанный профилировщик не поддерживает подключение. Инициирующий процесс может попытаться подключить другой профилировщик. |
| CORPROF_E_PROFILEE_INCOMPATIBLE_WITH_TRIGGER | Не удалось запросить подключение профилировщика, так как версия целевого процесса несовместима с текущим процессом, вызывающим метод AttachProfiler. |
| HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED) | Пользователь инициирующего процесса не имеет доступа к целевому процессу. |
| HRESULT_FROM_WIN32(ERROR_PRIVILEGE_NOT_HELD) | Пользователь инициирующего процесса не имеет привилегий, необходимых для подключения профилировщика к указанному целевому процессу. В журнале событий приложений могут содержаться дополнительные сведения. |
| CORPROF_E_IPC_FAILED | Произошла ошибка при взаимодействии с целевым процессом. Обычно это происходит при завершении работы целевого процесса. |
| HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) | Целевой процесс не существует, или в нем не запущена среда CLR, которая поддерживает подключение. Это может указывать, что среда CLR была выгружена после вызова метода перечисления среды выполнения. |
| HRESULT_FROM_WIN32(ERROR_TIMEOUT) | Время ожидания истекло, а загрузка профилировщика не началась. Можно повторить операцию подключения. Время ожидания истекает, когда метод завершения в целевом процессе выполняется дольше, чем задано в значении времени ожидания. |
| E_INVALIDARG | Как минимум один из следующих параметров имеет недопустимое значение. |
| E_FAIL | Произошел другой, не указанный сбой. |
| Другие коды ошибок | Если метод ICorProfilerCallback3::InitializeForAttach профилировщика возвращает HRESULT, указывающий на сбой, AttachProfiler возвращает тот же HRESULT. В этом случае E_NOTIMPL преобразуется в CORPROF_E_PROFILER_NOT_ATTACHABLE. |
Комментарии
Управление памятью
В соответствии с соглашениями COM объект, вызывающий метод AttachProfiler (например, код триггера, созданный разработчиком профилировщика), отвечает за выделение и освобождение памяти для данных, на которые указывает параметр pvClientData. Когда среда CLR выполняет вызов AttachProfiler, создается копия памяти, на которую указывает pvClientData, которая затем передается в целевой процесс. Когда среда CLR в целевом процессе получает собственную копию блока pvClientData, она передает этот блок в профилировщик с помощью метода InitializeForAttach, а затем освобождает свою копию блока pvClientData в целевом процессе.
Требования
Платформы: см. раздел Требования к системе.
Заголовок: CorProf.idl, CorProf.h
Библиотека: CorGuids.lib
версии платформа .NET Framework: доступно с 4