com.sun.jna.platform.win32.Tlhelp32 Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jna-platform Show documentation
Show all versions of jna-platform Show documentation
Java Native Access Platform
/*
* The contents of this file is dual-licensed under 2
* alternative Open Source/Free licenses: LGPL 2.1 or later and
* Apache License 2.0. (starting with JNA version 4.0.0).
*
* You can freely decide which license you want to apply to
* the project.
*
* You may obtain a copy of the LGPL License at:
*
* http://www.gnu.org/licenses/licenses.html
*
* A copy is also included in the downloadable source code package
* containing JNA, in file "LGPL2.1".
*
* You may obtain a copy of the Apache License at:
*
* http://www.apache.org/licenses/
*
* A copy is also included in the downloadable source code package
* containing JNA, in file "AL2.0".
*/
package com.sun.jna.platform.win32;
import java.util.List;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import com.sun.jna.platform.win32.WinDef.DWORD;
import com.sun.jna.platform.win32.WinDef.HMODULE;
/**
* Interface for the Tlhelp32.h header file.
*/
public interface Tlhelp32 {
/**
* Includes all heaps of the process specified in th32ProcessID in the snapshot. To enumerate the heaps, see
* Heap32ListFirst.
*/
WinDef.DWORD TH32CS_SNAPHEAPLIST = new WinDef.DWORD(0x00000001);
/**
* Includes all processes in the system in the snapshot. To enumerate the processes, see Process32First.
*/
WinDef.DWORD TH32CS_SNAPPROCESS = new WinDef.DWORD(0x00000002);
/**
* Includes all threads in the system in the snapshot. To enumerate the threads, see Thread32First.
*/
WinDef.DWORD TH32CS_SNAPTHREAD = new WinDef.DWORD(0x00000004);
/**
*
* Used with Kernel32.CreateToolhelp32Snapshot
* Includes all modules of the process specified in th32ProcessID in the
* snapshot.
* To enumerate the modules, see Module32First.
* If the function fails with ERROR_BAD_LENGTH, retry the function until it
* succeeds.
* 64-bit Windows: Using this flag in a 32-bit process includes the 32-bit
* modules of the process specified in th32ProcessID, while using it in a
* 64-bit process includes the 64-bit modules.
* To include the 32-bit modules of the process specified in th32ProcessID
* from a 64-bit process, use the TH32CS_SNAPMODULE32 flag.
*
* @see MSDN
*/
WinDef.DWORD TH32CS_SNAPMODULE = new WinDef.DWORD(0x00000008);
/**
* Includes all 32-bit modules of the process specified in th32ProcessID in the snapshot when called from a 64-bit
* process. This flag can be combined with TH32CS_SNAPMODULE or TH32CS_SNAPALL. If the function fails with
* ERROR_BAD_LENGTH, retry the function until it succeeds.
*/
WinDef.DWORD TH32CS_SNAPMODULE32 = new WinDef.DWORD(0x00000010);
/**
* Includes all processes and threads in the system, plus the heaps and modules of the process specified in th32ProcessID.
*/
WinDef.DWORD TH32CS_SNAPALL = new WinDef.DWORD((TH32CS_SNAPHEAPLIST.intValue() |
TH32CS_SNAPPROCESS.intValue() | TH32CS_SNAPTHREAD.intValue() | TH32CS_SNAPMODULE.intValue()));
/**
* Indicates that the snapshot handle is to be inheritable.
*/
WinDef.DWORD TH32CS_INHERIT = new WinDef.DWORD(0x80000000);
int MAX_MODULE_NAME32 = 255;
/**
* Describes an entry from a list of the processes residing in the system address space when a snapshot was taken.
*/
public static class PROCESSENTRY32 extends Structure {
public static class ByReference extends PROCESSENTRY32 implements Structure.ByReference {
public ByReference() {
}
public ByReference(Pointer memory) {
super(memory);
}
}
public static final List FIELDS = createFieldsOrder(
"dwSize", "cntUsage", "th32ProcessID", "th32DefaultHeapID", "th32ModuleID",
"cntThreads", "th32ParentProcessID", "pcPriClassBase", "dwFlags", "szExeFile");
/**
* The size of the structure, in bytes. Before calling the Process32First function, set this member to
* sizeof(PROCESSENTRY32). If you do not initialize dwSize, Process32First fails.
*/
public WinDef.DWORD dwSize;
/**
* This member is no longer used and is always set to zero.
*/
public WinDef.DWORD cntUsage;
/**
* The process identifier.
*/
public WinDef.DWORD th32ProcessID;
/**
* This member is no longer used and is always set to zero.
*/
public BaseTSD.ULONG_PTR th32DefaultHeapID;
/**
* This member is no longer used and is always set to zero.
*/
public WinDef.DWORD th32ModuleID;
/**
* The number of execution threads started by the process.
*/
public WinDef.DWORD cntThreads;
/**
* The identifier of the process that created this process (its parent process).
*/
public WinDef.DWORD th32ParentProcessID;
/**
* The base priority of any threads created by this process.
*/
public WinDef.LONG pcPriClassBase;
/**
* This member is no longer used, and is always set to zero.
*/
public WinDef.DWORD dwFlags;
/**
* The name of the executable file for the process. To retrieve the full path to the executable file, call the
* Module32First function and check the szExePath member of the MODULEENTRY32 structure that is returned.
* However, if the calling process is a 32-bit process, you must call the QueryFullProcessImageName function to
* retrieve the full path of the executable file for a 64-bit process.
*/
public char[] szExeFile = new char[WinDef.MAX_PATH];
public PROCESSENTRY32() {
dwSize = new WinDef.DWORD(size());
}
public PROCESSENTRY32(Pointer memory) {
super(memory);
read();
}
@Override
protected List getFieldOrder() {
return FIELDS;
}
}
/**
* Describes an entry from a list of the modules belonging to the specified
* process.
*
* @see MSDN
*/
public class MODULEENTRY32W extends Structure {
/**
* A representation of a MODULEENTRY32 structure as a reference
*/
public static class ByReference extends MODULEENTRY32W implements Structure.ByReference {
public ByReference() {
}
public ByReference(Pointer memory) {
super(memory);
}
}
public static final List FIELDS = createFieldsOrder(
"dwSize", "th32ModuleID", "th32ProcessID", "GlblcntUsage",
"ProccntUsage", "modBaseAddr", "modBaseSize", "hModule", "szModule", "szExePath");
/**
* The size of the structure, in bytes. Before calling the Module32First
* function, set this member to sizeof(MODULEENTRY32). If you do not
* initialize dwSize, Module32First fails.
*/
public DWORD dwSize;
/**
* This member is no longer used, and is always set to one.
*/
public DWORD th32ModuleID;
/**
* The identifier of the process whose modules are to be examined.
*/
public DWORD th32ProcessID;
/**
* The load count of the module, which is not generally meaningful, and
* usually equal to 0xFFFF.
*/
public DWORD GlblcntUsage;
/**
* The load count of the module (same as GlblcntUsage), which is not
* generally meaningful, and usually equal to 0xFFFF.
*/
public DWORD ProccntUsage;
/**
* The base address of the module in the context of the owning process.
*/
public Pointer modBaseAddr;
/**
* The size of the module, in bytes.
*/
public DWORD modBaseSize;
/**
* A handle to the module in the context of the owning process.
*/
public HMODULE hModule;
/**
* The module name.
*/
public char[] szModule = new char[MAX_MODULE_NAME32 + 1];
/**
* The module path.
*/
public char[] szExePath = new char[Kernel32.MAX_PATH];
public MODULEENTRY32W() {
dwSize = new WinDef.DWORD(size());
}
public MODULEENTRY32W(Pointer memory) {
super(memory);
read();
}
/**
* @return The module name.
*/
public String szModule() {
return Native.toString(this.szModule);
}
/**
* @return The module path.
*/
public String szExePath() {
return Native.toString(this.szExePath);
}
@Override
protected List getFieldOrder() {
return FIELDS;
}
}
}