Функция GetProcessReference (shlwapi.h)

Извлекает объект для конкретного процесса, предоставленный SetProcessReference, с увеличением числа ссылок для поддержания процесса в активном состоянии.

Синтаксис

LWSTDAPI GetProcessReference(
  [out] IUnknown **punk
);

Параметры

[out] punk

Адрес указателя, который при успешном возврате этой функции указывает на объект, предоставленный процессу методом SetProcessReference. Ваше приложение отвечает за освобождение этого ресурса, когда он больше не нужен.

Указатель на свободный поток IUnknown. Компоненты могут использовать этот интерфейс (через SHGetInstanceExplorer), чтобы предотвратить прекращение хост-процесса. Это значение может иметь значение NULL, и в этом случае ссылка на процесс больше не становится доступной для компонентов.

Возвращаемое значение

None

Remarks

Существует ряд компонентов, таких как обработчики расширений оболочки, которые реализуются как библиотеки DLL и выполняются в хост-процессе, например Windows Обозреватель (Explorer.exe) или Windows Internet Обозреватель (Iexplore.exe). Как правило, когда пользователь закрывает хост-процесс, компонент также немедленно завершает работу. Такое внезапное завершение может создать проблемы для некоторых компонентов. Например, если компонент использует фоновый поток для загрузки данных или выполнения функций пользовательского интерфейса, ему может потребоваться дополнительное время для безопасного завершения работы.

GetProcessReference позволяет компонентам, выполняющимся в хост-процессе, хранить ссылку на хост-процесс. GetProcessReference увеличивает количество ссылок узла и возвращает указатель на интерфейс IUnknown узла. Удерживая ссылку, компонент может предотвратить преждевременное завершение ведущего процесса. После завершения необходимой обработки компонент должен вызвать (*punk)->Release , чтобы освободить ссылку узла и разрешить завершение процесса.

Примечание Если getProcessReference выполнен успешно, компонент должен освободить ссылку узла, когда она больше не нужна. В противном случае все ресурсы, связанные с процессом, останутся в памяти. Интерфейс IUnknown , на который указывает *punk , можно использовать только для выпуска этой ссылки. Компоненты не могут использовать (*punk)->QueryInterface для запроса других указателей интерфейса.
 
GetProcessReference выполняется успешно, только если он вызывается из приложения, которое ранее вызывало SetProcessReference для задания ссылки на процесс.

Требования

Требование Значение
Минимальная версия клиента Windows 8 [только классические приложения]
Минимальная версия сервера Windows Server 2012 [только классические приложения]
Целевая платформа Windows
Header shlwapi.h
Библиотека Shlwapi.lib
DLL Api-ms-win-shcore-thread-L1-1-0.dll

См. также раздел

SHGetInstanceExplorer

SetProcessReference

Наборы API Windows