367                                              {
  368            List<OSProcess> plist = nilptr;
  369 
  370            if (false == Win32Api.Kernel32.load()) {
  371                return nilptr;
  372            }
  373 
  374            PROCESSENTRY32 struct = new PROCESSENTRY32();
  375            plist = new List<OSProcess>();
  376 
  377            long snopt = Win32Api.Kernel32.CreateToolhelp32Snapshot(
  378                             Win32Api.Kernel32.TH32CS_SNAPALL,
  379                             0);
  380 
  381            try {
  382                if (snopt > 0) {
  383                    bool succ = Win32Api.Kernel32.Process32First(snopt, struct);
  384 
  385                    while (succ) {
  387                        succ = Win32Api.Kernel32.Process32Next(snopt, struct);
  388                    }
  389 
  390                    Win32Api.Kernel32.CloseHandle(snopt);
  391                }
  393 
  394            }
  395 
  396            return plist;
  397        }