lib/win32/process/structs.rb in win32-process-0.8.3 vs lib/win32/process/structs.rb in win32-process-0.9.0

- old
+ new

@@ -1,218 +1,218 @@ -if RUBY_PLATFORM == 'java' - require 'rubygems' - gem 'ffi' -end - -require 'ffi' - -module Process::Structs - extend FFI::Library - - typedef :ulong, :dword - typedef :uintptr_t, :handle - typedef :short, :word - - private - - # sizeof(LARGE_INTEGER) == 8 - class LARGE_INTEGER < FFI::Union - layout(:QuadPart, :long_long) - end - - # sizeof(IO_COUNTERS) == 48 - class IO_COUNTERS < FFI::Struct - layout( - :ReadOperationCount, :ulong_long, - :WriteOperationCount, :ulong_long, - :OtherOperationCount, :ulong_long, - :ReadTransferCount, :ulong_long, - :WriteTransferCount, :ulong_long, - :OtherTransferCount, :ulong_long - ) - end - - class JOBJECT_BASIC_LIMIT_INFORMATION < FFI::Struct - layout( - :PerProcessUserTimeLimit, LARGE_INTEGER, - :PerJobUserTimeLimit, LARGE_INTEGER, - :LimitFlags, :dword, - :MinimumWorkingSetSize, :size_t, - :MaximumWorkingSetSize, :size_t, - :ActiveProcessLimit, :dword, - :Affinity, :pointer, - :PriorityClass, :dword, - :SchedulingClass, :dword - ) - end - - class JOBJECT_EXTENDED_LIMIT_INFORMATION < FFI::Struct - layout( - :BasicLimitInformation, JOBJECT_BASIC_LIMIT_INFORMATION, - :IoInfo, IO_COUNTERS, - :ProcessMemoryLimit, :size_t, - :JobMemoryLimit, :size_t, - :PeakProcessMemoryUsed, :size_t, - :PeakJobMemoryUsed, :size_t - ) - end - - class SECURITY_ATTRIBUTES < FFI::Struct - layout( - :nLength, :dword, - :lpSecurityDescriptor, :pointer, - :bInheritHandle, :int - ) - end - - # sizeof(STARTUPINFO) == 68 - class STARTUPINFO < FFI::Struct - layout( - :cb, :ulong, - :lpReserved, :string, - :lpDesktop, :string, - :lpTitle, :string, - :dwX, :dword, - :dwY, :dword, - :dwXSize, :dword, - :dwYSize, :dword, - :dwXCountChars, :dword, - :dwYCountChars, :dword, - :dwFillAttribute, :dword, - :dwFlags, :dword, - :wShowWindow, :word, - :cbReserved2, :word, - :lpReserved2, :pointer, - :hStdInput, :handle, - :hStdOutput, :handle, - :hStdError, :handle - ) - end - - class PROCESS_INFORMATION < FFI::Struct - layout( - :hProcess, :handle, - :hThread, :handle, - :dwProcessId, :ulong, - :dwThreadId, :ulong - ) - end - - class OSVERSIONINFO < FFI::Struct - layout( - :dwOSVersionInfoSize, :dword, - :dwMajorVersion, :dword, - :dwMinorVersion, :dword, - :dwBuildNumber, :dword, - :dwPlatformId, :dword, - :szCSDVersion, [:char, 128] - ) - end - - class THREADENTRY32 < FFI::Struct - layout( - :dwSize, :dword, - :cntUsage, :dword, - :th32ThreadID, :dword, - :th32OwnerProcessID, :dword, - :tpBasePri, :long, - :tpDeltaPri, :long, - :dwFlags, :dword - ) - end - - class HEAPLIST32 < FFI::Struct - layout( - :dwSize, :size_t, - :th32ProcessID, :dword, - :th32HeapID, :uintptr_t, - :dwFlags, :dword - ) - end - - class HEAPENTRY32 < FFI::Struct - layout( - :dwSize, :size_t, - :hHandle, :handle, - :dwAddress, :uintptr_t, - :dwBlockSize, :size_t, - :dwFlags, :dword, - :dwLockCount, :dword, - :dwResvd, :dword, - :th32ProcessID, :dword, - :th32HeapID, :uintptr_t - ) - end - - class MODULEENTRY32 < FFI::Struct - layout( - :dwSize, :dword, - :th32ModuleID, :dword, - :th32ProcessID, :dword, - :GlblcntUsage, :dword, - :ProccntUsage, :dword, - :modBaseAddr, :pointer, - :modBaseSize, :dword, - :hModule, :handle, - :szModule, [:char, 256], - :szExePath, [:char, 260] - ) - end - - class PROCESSENTRY32 < FFI::Struct - layout( - :dwSize, :dword, - :cntUsage, :dword, - :th32ProcessID, :dword, - :th32DefaultHeapID, :uintptr_t, - :th32ModuleID, :dword, - :cntThreads, :dword, - :th32ParentProcessID, :dword, - :pcPriClassBase, :long, - :dwFlags, :dword, - :szExeFile, [:char, 260] - ) - end - - # Used by Process.create - - ProcessInfo = Struct.new("ProcessInfo", - :process_handle, - :thread_handle, - :process_id, - :thread_id - ) - - # Used by Process.snapshot - - ThreadSnapInfo = Struct.new("ThreadSnapInfo", - :thread_id, - :process_id, - :base_priority - ) - - HeapSnapInfo = Struct.new("HeapSnapInfo", - :address, - :block_size, - :flags, - :process_id, - :heap_id - ) - - ModuleSnapInfo = Struct.new("ModuleSnapInfo", - :process_id, - :address, - :module_size, - :handle, - :name, - :path - ) - - ProcessSnapInfo = Struct.new("ProcessSnapInfo", - :process_id, - :threads, - :parent_process_id, - :priority, - :flags, - :path - ) -end +if RUBY_PLATFORM == 'java' + require 'rubygems' + gem 'ffi' +end + +require 'ffi' + +module Process::Structs + extend FFI::Library + + typedef :ulong, :dword + typedef :uintptr_t, :handle + typedef :short, :word + + private + + # sizeof(LARGE_INTEGER) == 8 + class LARGE_INTEGER < FFI::Union + layout(:QuadPart, :long_long) + end + + # sizeof(IO_COUNTERS) == 48 + class IO_COUNTERS < FFI::Struct + layout( + :ReadOperationCount, :ulong_long, + :WriteOperationCount, :ulong_long, + :OtherOperationCount, :ulong_long, + :ReadTransferCount, :ulong_long, + :WriteTransferCount, :ulong_long, + :OtherTransferCount, :ulong_long + ) + end + + class JOBJECT_BASIC_LIMIT_INFORMATION < FFI::Struct + layout( + :PerProcessUserTimeLimit, LARGE_INTEGER, + :PerJobUserTimeLimit, LARGE_INTEGER, + :LimitFlags, :dword, + :MinimumWorkingSetSize, :size_t, + :MaximumWorkingSetSize, :size_t, + :ActiveProcessLimit, :dword, + :Affinity, :pointer, + :PriorityClass, :dword, + :SchedulingClass, :dword + ) + end + + class JOBJECT_EXTENDED_LIMIT_INFORMATION < FFI::Struct + layout( + :BasicLimitInformation, JOBJECT_BASIC_LIMIT_INFORMATION, + :IoInfo, IO_COUNTERS, + :ProcessMemoryLimit, :size_t, + :JobMemoryLimit, :size_t, + :PeakProcessMemoryUsed, :size_t, + :PeakJobMemoryUsed, :size_t + ) + end + + class SECURITY_ATTRIBUTES < FFI::Struct + layout( + :nLength, :dword, + :lpSecurityDescriptor, :pointer, + :bInheritHandle, :int + ) + end + + # sizeof(STARTUPINFO) == 68 + class STARTUPINFO < FFI::Struct + layout( + :cb, :ulong, + :lpReserved, :string, + :lpDesktop, :string, + :lpTitle, :string, + :dwX, :dword, + :dwY, :dword, + :dwXSize, :dword, + :dwYSize, :dword, + :dwXCountChars, :dword, + :dwYCountChars, :dword, + :dwFillAttribute, :dword, + :dwFlags, :dword, + :wShowWindow, :word, + :cbReserved2, :word, + :lpReserved2, :pointer, + :hStdInput, :handle, + :hStdOutput, :handle, + :hStdError, :handle + ) + end + + class PROCESS_INFORMATION < FFI::Struct + layout( + :hProcess, :handle, + :hThread, :handle, + :dwProcessId, :ulong, + :dwThreadId, :ulong + ) + end + + class OSVERSIONINFO < FFI::Struct + layout( + :dwOSVersionInfoSize, :dword, + :dwMajorVersion, :dword, + :dwMinorVersion, :dword, + :dwBuildNumber, :dword, + :dwPlatformId, :dword, + :szCSDVersion, [:char, 128] + ) + end + + class THREADENTRY32 < FFI::Struct + layout( + :dwSize, :dword, + :cntUsage, :dword, + :th32ThreadID, :dword, + :th32OwnerProcessID, :dword, + :tpBasePri, :long, + :tpDeltaPri, :long, + :dwFlags, :dword + ) + end + + class HEAPLIST32 < FFI::Struct + layout( + :dwSize, :size_t, + :th32ProcessID, :dword, + :th32HeapID, :uintptr_t, + :dwFlags, :dword + ) + end + + class HEAPENTRY32 < FFI::Struct + layout( + :dwSize, :size_t, + :hHandle, :handle, + :dwAddress, :uintptr_t, + :dwBlockSize, :size_t, + :dwFlags, :dword, + :dwLockCount, :dword, + :dwResvd, :dword, + :th32ProcessID, :dword, + :th32HeapID, :uintptr_t + ) + end + + class MODULEENTRY32 < FFI::Struct + layout( + :dwSize, :dword, + :th32ModuleID, :dword, + :th32ProcessID, :dword, + :GlblcntUsage, :dword, + :ProccntUsage, :dword, + :modBaseAddr, :pointer, + :modBaseSize, :dword, + :hModule, :handle, + :szModule, [:char, 256], + :szExePath, [:char, 260] + ) + end + + class PROCESSENTRY32 < FFI::Struct + layout( + :dwSize, :dword, + :cntUsage, :dword, + :th32ProcessID, :dword, + :th32DefaultHeapID, :uintptr_t, + :th32ModuleID, :dword, + :cntThreads, :dword, + :th32ParentProcessID, :dword, + :pcPriClassBase, :long, + :dwFlags, :dword, + :szExeFile, [:char, 260] + ) + end + + # Used by Process.create + + ProcessInfo = Struct.new("ProcessInfo", + :process_handle, + :thread_handle, + :process_id, + :thread_id + ) + + # Used by Process.snapshot + + ThreadSnapInfo = Struct.new("ThreadSnapInfo", + :thread_id, + :process_id, + :base_priority + ) + + HeapSnapInfo = Struct.new("HeapSnapInfo", + :address, + :block_size, + :flags, + :process_id, + :heap_id + ) + + ModuleSnapInfo = Struct.new("ModuleSnapInfo", + :process_id, + :address, + :module_size, + :handle, + :name, + :path + ) + + ProcessSnapInfo = Struct.new("ProcessSnapInfo", + :process_id, + :threads, + :parent_process_id, + :priority, + :flags, + :path + ) +end