module Win32::TaskScheduler::Helper

Constants

FORMAT_MESSAGE_FROM_SYSTEM
FORMAT_MESSAGE_IGNORE_INSERTS
FORMAT_MESSAGE_MAX_WIDTH_MASK

Public Instance Methods

ole_error(function, err) click to toggle source
# File lib/win32/taskscheduler/helper.rb, line 38
def ole_error(function, err)
  regex = /OLE error code:(.*?)\sin/
  match = regex.match(err.to_s)

  if match
    error = match.captures.first.hex
    win_error(function, error)
  else
    "#{function}: #{err}"
  end
end
win_error(function, err = FFI.errno) click to toggle source
# File lib/win32/taskscheduler/helper.rb, line 21
def win_error(function, err = FFI.errno)
  err_msg = ""
  flags = FORMAT_MESSAGE_IGNORE_INSERTS |
    FORMAT_MESSAGE_FROM_SYSTEM |
    FORMAT_MESSAGE_MAX_WIDTH_MASK

  # 0x0409 == MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)
  # We use English for errors because Ruby uses English for errors.

  FFI::MemoryPointer.new(:char, 1024) do |buf|
    len = FormatMessage(flags, nil, err, 0x0409, buf, buf.size, nil)
    err_msg = function + ": " + buf.read_string(len).strip
  end

  err_msg
end