ProcessModule.EntryPointAddress Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает адрес памяти для функции, которая выполняется при загрузке системы и запуске модуля.
public:
property IntPtr EntryPointAddress { IntPtr get(); };
public IntPtr EntryPointAddress { get; }
member this.EntryPointAddress : nativeint
Public ReadOnly Property EntryPointAddress As IntPtr
Значение свойства
nativeint
Точка входа модуля.
Примеры
В следующем примере кода создается новый процесс для приложения Notepad.exe. Код выполняет итерацию ProcessModuleCollection по классу, чтобы получить ProcessModule объект для каждого модуля в коллекции. EntryPointAddress Свойства ModuleName используются для отображения имени и адреса точки входа для каждого модуля.
using (Process myProcess = new Process())
{
// Get the process start information of notepad.
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("notepad.exe");
// Assign 'StartInfo' of notepad to 'StartInfo' of 'myProcess' object.
myProcess.StartInfo = myProcessStartInfo;
// Create a notepad.
myProcess.Start();
System.Threading.Thread.Sleep(1000);
ProcessModule myProcessModule;
// Get all the modules associated with 'myProcess'.
ProcessModuleCollection myProcessModuleCollection = myProcess.Modules;
Console.WriteLine("Entry point addresses of the modules "
+ "associated with 'notepad' are:");
// Display the 'EntryPointAddress' of each of the modules.
for (int i = 0; i < myProcessModuleCollection.Count; i++)
{
myProcessModule = myProcessModuleCollection[i];
Console.WriteLine(myProcessModule.ModuleName + " : "
+ myProcessModule.EntryPointAddress);
}
// Get the main module associated with 'myProcess'.
myProcessModule = myProcess.MainModule;
Console.WriteLine("The process's main module's EntryPointAddress is: "
+ myProcessModule.EntryPointAddress);
myProcess.CloseMainWindow();
}
Using myProcess As New Process()
' Get the process start information of notepad.
Dim myProcessStartInfo As New ProcessStartInfo("notepad.exe")
' Assign 'StartInfo' of notepad to 'StartInfo' of 'myProcess' object.
myProcess.StartInfo = myProcessStartInfo
' Create a notepad.
myProcess.Start()
System.Threading.Thread.Sleep(1000)
Dim myProcessModule As ProcessModule
' Get all the modules associated with 'myProcess'.
Dim myProcessModuleCollection As ProcessModuleCollection = myProcess.Modules
Console.WriteLine("Entry point addresses of the modules " +
"associated with 'notepad' are:")
' Display the 'EntryPointAddress' of each of the modules.
Dim i As Integer
For i = 0 To myProcessModuleCollection.Count - 1
myProcessModule = myProcessModuleCollection(i)
Console.WriteLine(myProcessModule.ModuleName + " : " +
myProcessModule.EntryPointAddress.ToString())
Next i
' Get the main module associated with 'myProcess'.
myProcessModule = myProcess.MainModule
Console.WriteLine("The process's main module's EntryPointAddress is: " +
myProcessModule.EntryPointAddress.ToString())
myProcess.CloseMainWindow()
End Using
Комментарии
Точка входа модуля — это расположение функции, вызываемой во время запуска процесса, запуска потока, завершения работы процесса и завершения работы потока. Хотя точка входа не является адресом функции DllMain, она должна быть достаточно закрыта для большинства целей.
Note
Из-за изменений в том, как Windows загружает сборки, EntryPointAddress всегда возвращает значение 0 на Windows 8 или Windows 8.1 и не следует полагаться на эти платформы.