Допустим в DllEntry я открываю создаю некий обьект и получаю его HANDLE. Можно ли сделать теперь этот хендл доступный для в контексте любого процесса находясь в режиме ядра? При этом процесс в контексте которой создали хендл может быть закрыт. В моем случаи хендл нужен для файла и секции. Интересует общий ответ ну и более конкретный именно по файлам/секции . И еще вопрос если смапить секцию(ZwMapViewOfSection) и закрыть хендл который вернула ZwCreateSection можно ли будет работать с памятью, и потом вызвать ZwUnmapViewOfSection ?
С некоторыми упрощениями, описатель это индекс в таблице конкретного процесса. 1. Есть механизм дублирования описателей, вызовом NtDuplicateObject. Естественно, что значение нового описателя в другом процессе может отличаться (будет выбран первый свободный индекс). 2. То, что хотите вы больше смахивает на механизм наследования описателя, но он применяется только к дочерним процессам. 3. Если вы работаете в ядре, то можно создать описатель на объект для процесса SYSTEM (Kernel-HANDLE). К такому описателю можно обращаться из ядра, но с условием, что в функцию указывается режим вызывающей нити (например, ObReferenceObjectByHandle) или любым способом PreviousMode == KenrelMode (использование сисимных нитей или work-queue items)