Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


ƒублирование дескрипторов




–одительскому и дочернему процессам может требоватьс€ различный доступ к объекту, идентифицируемому дескриптором, который наследует дочерний процесс.  роме того, процессу вместо псевдодескриптора, получаемого с помощью функции GetModuleFileName или GetModuleFileNameEx, может потребоватьс€ реальный, наследуемый дескриптор, который мог бы использоватьс€ дочерним процессом. –одительский процесс может обеспечить это, создав копию дескриптора с желаемыми разрешени€ми доступа и свойствами наследовани€. ‘ункци€, позвол€юща€ создавать копии дескрипторов, имеет следующий вид:

BOOL DuplicateHandle(HANDLE hSourceProcessHandle, HANDLE hSourceHandle, HANDLE hTargetProcessHandle, LPHANDLE lphTargetHandle, DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwOptions)

ѕо завершении выполнени€ функции указатель lphTargetHandle будет указывать на копию исходного дескриптора, hSourceHandle. hSourceHandle €вл€етс€ дескриптором дублируемого объекта в процессе, указанном дескриптором hSourceProcessHandle, и должен иметь права доступа PROCESS_DUP_HANDLE; если указанного дескриптора в исходном процессе не существует, функци€ DuplicateHandle завершаетс€ ошибкой. Ќовый дескриптор, на который указывает указатель lphTargetHandle, €вл€етс€ действительным в целевом процессе, hTargetProcessHandle. ќбратите внимание на то, что в нашем рассмотрении фигурировали три процесса, включа€ вызывающий. „асто в роли вызывающего процесса выступает целевой или исходный процесс, и тогда соответствующий дескриптор получают с помощью функции GetCurrentProcess. «аметьте также, что процесс может создать дескриптор в другом процессе; если вы это делаете, то вам потребуетс€ механизм, с помощью которого можно было бы передать в другой процесс идентификационные данные нового дескриптора.

‘ункци€ DuplicateHandle может примен€тьс€ к дескрипторам любого типа.

≈сли действие параметра dwDesiredAccess не отмен€етс€ флагом DUPLICATE_SAME_ACCESS параметра dwOptions, то у него может быть много возможных значений (дл€ получени€ более подробных сведений обратитесь к библиотеке MSDN оперативного справочного руководства).

ѕараметр dwOptions может содержать любую комбинацию указанных ниже двух флагов.

Х DUPLICATE_CLOSE_SOURCE Ч вызывает закрытие исходного дескриптора.

Х DUPLICATE_SAME_ACCESS Ч вынуждает игнорировать параметр dwDesiredAccess.

Ќапоминание

ядро Windows поддерживает счетчики ссылок дл€ всех объектов; этот счетчик представл€ет количество различных дескрипторов, ссылающихс€ на данный объект. ¬ то же врем€, приложени€ не имеют доступа к этому счетчику. Ћюбой объект не может быть уничтожен до тех пор, пока не будет закрыт его последний дескриптор, а счетчик ссылок не примет нулевое значение. ”наследованные и продублированные дескрипторы считаютс€ отличными от исходных и также учитываютс€ в счетчике ссылок. Ќаследуемые дескрипторы используютс€ в программе 6.1 далее в этой главе. ¬ то же врем€, дескрипторы, переданные из одного процесса в другой посредством той или иной формы механизма IPC, не считаютс€ независимыми, и поэтому если один процесс закрывает такой дескриптор, то другие процессы использовать его не могут. ѕодобной методикой пользуютс€ редко, однако в упражнении 6.2 вам предлагаетс€ передать значение унаследованного дескриптора из одного процесса в другой, использу€ механизм IPC.

ƒалее вы узнаете о том, как определить, завершено ли выполнение процесса.





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2015-09-20; ћы поможем в написании ваших работ!; просмотров: 554 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

Ћюди избавились бы от половины своих непри€тностей, если бы договорились о значении слов. © –ене ƒекарт
==> читать все изречени€...

2256 - | 2063 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.01 с.