BEGIN
MENUITEM "Emner i hjelp", IDM_HELP_HELP
MENUITEM SEPARATOR
- MENUITEM "Om Reactos Kalkulator", IDM_HELP_ABOUT
+ MENUITEM "Om ReactOS Kalkulator", IDM_HELP_ABOUT
END
END
BEGIN
MENUITEM "Visa hjälp", IDM_HELP_HELP
MENUITEM SEPARATOR
- MENUITEM "Om Reactos Kalkylator", IDM_HELP_ABOUT
+ MENUITEM "Om ReactOS Kalkylator", IDM_HELP_ABOUT
END
END
HELPMSG | LOCALGROUP | NAME | PAUSE | PRINT | SEND | SESSION |\n\
SHARE | START | STATISTICS | STOP | TIME | USE | NET USER | VIEW ]\n"
- IDS_ACCOUNTS_FORCE_LOGOFF "Force logoff after"
- IDS_ACCOUNTS_LOGOFF_SECONDS "%lu seconds"
- IDS_ACCOUNTS_MIN_PW_AGE "Minimum password age (in days)"
- IDS_ACCOUNTS_MAX_PW_AGE "Maximum password age (in days)"
- IDS_ACCOUNTS_MIN_PW_LENGTH "Minimum password length"
- IDS_ACCOUNTS_PW_HIST_LENGTH "Password history length"
- IDS_ACCOUNTS_LOCKOUT_THRESHOLD "Lockout threshold"
- IDS_ACCOUNTS_LOCKOUT_DURATION "Lockout duration (in minutes)"
- IDS_ACCOUNTS_LOCKOUT_WINDOW "Lockout observation window (in minutes)"
- IDS_ACCOUNTS_COMPUTER_ROLE "Computer role"
- IDS_ACCOUNTS_PRIMARY_SERVER "Primary server"
- IDS_ACCOUNTS_BACKUP_SERVER "Backup server"
- IDS_ACCOUNTS_STANDALONE_SERVER "Standalone server"
- IDS_ACCOUNTS_WORKSTATION "Workstation"
+ IDS_ACCOUNTS_FORCE_LOGOFF "Forzar cierre de sesión tras"
+ IDS_ACCOUNTS_LOGOFF_SECONDS "%lu segundos"
+ IDS_ACCOUNTS_MIN_PW_AGE "Validez mínima de contraseña (en días)"
+ IDS_ACCOUNTS_MAX_PW_AGE "Validez máxima de contraseña (en días)"
+ IDS_ACCOUNTS_MIN_PW_LENGTH "Tamaño mínimo de contraseña"
+ IDS_ACCOUNTS_PW_HIST_LENGTH "Duración del historial de contraseñas"
+ IDS_ACCOUNTS_LOCKOUT_THRESHOLD "Umbral de bloqueo"
+ IDS_ACCOUNTS_LOCKOUT_DURATION "Duración del bloqueo (en minutos)"
+ IDS_ACCOUNTS_LOCKOUT_WINDOW "Ventana de cumpl. de bloqueo (en minutos)"
+ IDS_ACCOUNTS_COMPUTER_ROLE "Rol del equipo"
+ IDS_ACCOUNTS_PRIMARY_SERVER "Servidor primario"
+ IDS_ACCOUNTS_BACKUP_SERVER "Servidor de respaldo"
+ IDS_ACCOUNTS_STANDALONE_SERVER "Servidor independiente"
+ IDS_ACCOUNTS_WORKSTATION "Estación de trabajo"
- IDS_LOCALGROUP_ALIASES "Aliases for \\\\%s"
- IDS_LOCALGROUP_ALIAS_NAME "Alias name"
- IDS_LOCALGROUP_COMMENT "Comment"
- IDS_LOCALGROUP_MEMBERS "Members"
+ IDS_LOCALGROUP_ALIASES "Alias de \\\\%s"
+ IDS_LOCALGROUP_ALIAS_NAME "Nombre del alias"
+ IDS_LOCALGROUP_COMMENT "Comentario"
+ IDS_LOCALGROUP_MEMBERS "Miembros"
- IDS_USER_ACCOUNTS "User accounts for \\\\%s"
- IDS_USER_NAME "User name"
- IDS_USER_FULL_NAME "Full name"
- IDS_USER_COMMENT "Comment"
- IDS_USER_USER_COMMENT "User comment"
- IDS_USER_COUNTRY_CODE "Country code"
- IDS_USER_ACCOUNT_ACTIVE "Account active"
- IDS_USER_ACCOUNT_EXPIRES "Account expires"
- IDS_USER_PW_LAST_SET "Password last set"
- IDS_USER_PW_EXPIRES "Password expires"
- IDS_USER_PW_CHANGEABLE "Password changeable"
- IDS_USER_PW_REQUIRED "Password required"
- IDS_USER_CHANGE_PW "User may change password"
- IDS_USER_WORKSTATIONS "Workstations allowed"
- IDS_USER_LOGON_SCRIPT "Logon script"
- IDS_USER_PROFILE "User profile"
- IDS_USER_HOME_DIR "Home directory"
- IDS_USER_LAST_LOGON "Last logon"
- IDS_USER_LOGON_HOURS "Logon hours allowed"
- IDS_USER_LOCAL_GROUPS "Local group memberships"
- IDS_USER_GLOBAL_GROUPS "Global group memberships"
+ IDS_USER_ACCOUNTS "Cuentas de usuario en \\\\%s"
+ IDS_USER_NAME "Nombre de usuario"
+ IDS_USER_FULL_NAME "Nombre completo"
+ IDS_USER_COMMENT "Comentario"
+ IDS_USER_USER_COMMENT "Comentario de usuario"
+ IDS_USER_COUNTRY_CODE "Código de país"
+ IDS_USER_ACCOUNT_ACTIVE "Cuenta activa"
+ IDS_USER_ACCOUNT_EXPIRES "Fecha de expiración"
+ IDS_USER_PW_LAST_SET "La contraseña se cambió por última vez"
+ IDS_USER_PW_EXPIRES "La contraseña expira"
+ IDS_USER_PW_CHANGEABLE "La contraseña se puede cambiar"
+ IDS_USER_PW_REQUIRED "Se necesita contraseña"
+ IDS_USER_CHANGE_PW "El usuario puede cambiar la contraseña"
+ IDS_USER_WORKSTATIONS "Se permiten estaciones de trabajo"
+ IDS_USER_LOGON_SCRIPT "Script de inicio"
+ IDS_USER_PROFILE "Perfil de usuario"
+ IDS_USER_HOME_DIR "Carpeta raíz"
+ IDS_USER_LAST_LOGON "Último inicio de sesión"
+ IDS_USER_LOGON_HOURS "Horas de inicio permitidas"
+ IDS_USER_LOCAL_GROUPS "Miembro de los grupos locales"
+ IDS_USER_GLOBAL_GROUPS "Miembro de los grupos globales"
- IDS_USER_ENTER_PASSWORD1 "Enter a new password for the user: "
- IDS_USER_ENTER_PASSWORD2 "Enter the password again: "
- IDS_USER_NO_PASSWORD_MATCH "The passwords do not match!"
+ IDS_USER_ENTER_PASSWORD1 "Escriba una contraseña: "
+ IDS_USER_ENTER_PASSWORD2 "Vuelva a escribir la contraseña: "
+ IDS_USER_NO_PASSWORD_MATCH "Las contraseñas no coinciden."
- IDS_GENERIC_YES "Yes"
+ IDS_GENERIC_YES "Sí"
IDS_GENERIC_NO "No"
- IDS_GENERIC_NEVER "Never"
- IDS_GENERIC_NONE "None"
- IDS_GENERIC_ALL "All"
- IDS_GENERIC_LOCKED "Locked"
+ IDS_GENERIC_NEVER "Nunca"
+ IDS_GENERIC_NONE "Ninguno"
+ IDS_GENERIC_ALL "Todos"
+ IDS_GENERIC_LOCKED "Bloqueado"
- IDS_ERROR_OPTION_NOT_SUPPORTED "The %s option is not supported yet.\n"
- IDS_ERROR_INVALID_OPTION_VALUE "You entered an invalid value for the %s option.\n"
+ IDS_ERROR_OPTION_NOT_SUPPORTED "La opción %s todavía no está disponible.\n"
+ IDS_ERROR_INVALID_OPTION_VALUE "El valor para la opción %s no es válido.\n"
END
Name = program name
RegName = Name in registry
Version = 1.1.1
-Licence = GPL
+License = GPL
Description = Description
Size = 10 mb
Category = 5
Name = Èìÿ ïðîãðàììû ; Òåêñòîâîå ïîëå
RegName = Èìÿ â ðååñòðå ; Èìÿ, êîòîðîå îòîáðàæàåòñÿ â ñïèñêå ïðîãðàìì ïîñëå óñòàíîâêè
Version = 1.1.1 ; Òåêñòîâîå ïîëå ñ âåðñèåé
-Licence = Íàçâàíèå ëèöåíçèè ; Òåêñòîâîå ïîëå
+License = Íàçâàíèå ëèöåíçèè ; Òåêñòîâîå ïîëå
Description = Îïèñàíèå ïðîãðàììû ; Òåêòñîâîå ïîëå
Size = Ðàçìåð ïðîãðàììû ; Òåêñòîâîå ïîëå
Category = 5 ; Öèôðîâîå ïîëå ñ êàòåãîðèåé
} \
ADD_TEXT(IDS_AINFO_VERSION, Info->szVersion, CFE_BOLD, 0);
- ADD_TEXT(IDS_AINFO_LICENCE, Info->szLicence, CFE_BOLD, 0);
+ ADD_TEXT(IDS_AINFO_LICENSE, Info->szLicense, CFE_BOLD, 0);
ADD_TEXT(IDS_AINFO_SIZE, Info->szSize, CFE_BOLD, 0);
ADD_TEXT(IDS_AINFO_URLSITE, Info->szUrlSite, CFE_BOLD, CFE_LINK);
ADD_TEXT(IDS_AINFO_DESCRIPTION, Info->szDesc, CFE_BOLD, 0);
GET_STRING2(L"RegName", Info.szRegName);
GET_STRING2(L"Version", Info.szVersion);
- GET_STRING2(L"Licence", Info.szLicence);
+ GET_STRING2(L"License", Info.szLicense);
GET_STRING2(L"Description", Info.szDesc);
GET_STRING2(L"Size", Info.szSize);
GET_STRING2(L"URLSite", Info.szUrlSite);
IDS_AINFO_DESCRIPTION "\nОписание: "
IDS_AINFO_SIZE "\nРазмер: "
IDS_AINFO_URLSITE "\nДомашна страница: "
- IDS_AINFO_LICENCE "\nРазрешително: "
+ IDS_AINFO_LICENSE "\nРазрешително: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nPopis: "
IDS_AINFO_SIZE "\nVelikost: "
IDS_AINFO_URLSITE "\nDomovská stránka: "
- IDS_AINFO_LICENCE "\nLicence: "
+ IDS_AINFO_LICENSE "\nLicense: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nBeschreibung: "
IDS_AINFO_SIZE "\nGröße: "
IDS_AINFO_URLSITE "\nHomepage: "
- IDS_AINFO_LICENCE "\nLizenz: "
+ IDS_AINFO_LICENSE "\nLizenz: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nDescription: "
IDS_AINFO_SIZE "\nSize: "
IDS_AINFO_URLSITE "\nHome Page: "
- IDS_AINFO_LICENCE "\nLicense: "
+ IDS_AINFO_LICENSE "\nLicense: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nDescripción: "
IDS_AINFO_SIZE "\nTamaño: "
IDS_AINFO_URLSITE "\nPágina Web: "
- IDS_AINFO_LICENCE "\nLicencia: "
+ IDS_AINFO_LICENSE "\nLicencia: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nDescription: "
IDS_AINFO_SIZE "\nTaille : "
IDS_AINFO_URLSITE "\nSite internet : "
- IDS_AINFO_LICENCE "\nLicence: "
+ IDS_AINFO_LICENSE "\nLicense: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nתיאור: "
IDS_AINFO_SIZE "\nגודל: "
IDS_AINFO_URLSITE "\nדף בית: "
- IDS_AINFO_LICENCE "\nרישיון: "
+ IDS_AINFO_LICENSE "\nרישיון: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nDescrizione: "
IDS_AINFO_SIZE "\nDimensione: "
IDS_AINFO_URLSITE "\nHome Page: "
- IDS_AINFO_LICENCE "\nLicenza: "
+ IDS_AINFO_LICENSE "\nLicenza: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\n概要: "
IDS_AINFO_SIZE "\nサイズ: "
IDS_AINFO_URLSITE "\nホームページ: "
- IDS_AINFO_LICENCE "\nライセンス: "
+ IDS_AINFO_LICENSE "\nライセンス: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nBeskrivelse: "
IDS_AINFO_SIZE "\nStørrelse: "
IDS_AINFO_URLSITE "\nHjemmeside: "
- IDS_AINFO_LICENCE "\nLisens: "
+ IDS_AINFO_LICENSE "\nLisens: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nOpis: "
IDS_AINFO_SIZE "\nRozmiar: "
IDS_AINFO_URLSITE "\nStrona: "
- IDS_AINFO_LICENCE "\nLicencja: "
+ IDS_AINFO_LICENSE "\nLicencja: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nDescrição: "
IDS_AINFO_SIZE "\nTamanho: "
IDS_AINFO_URLSITE "\nPágina: "
- IDS_AINFO_LICENCE "\nLicença: "
+ IDS_AINFO_LICENSE "\nLicença: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nDescriere: "
IDS_AINFO_SIZE "\nDimensiune: "
IDS_AINFO_URLSITE "\nPagină web: "
- IDS_AINFO_LICENCE "\nLicență: "
+ IDS_AINFO_LICENSE "\nLicență: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nОписание: "
IDS_AINFO_SIZE "\nРазмер: "
IDS_AINFO_URLSITE "\nДомашняя страница: "
- IDS_AINFO_LICENCE "\nЛицензия: "
+ IDS_AINFO_LICENSE "\nЛицензия: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nPopis: "
IDS_AINFO_SIZE "\nVeľkosť: "
IDS_AINFO_URLSITE "\nDomovská stránka: "
- IDS_AINFO_LICENCE "\nLicencia: "
+ IDS_AINFO_LICENSE "\nLicencia: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nPershkrimi: "
IDS_AINFO_SIZE "\nMasa: "
IDS_AINFO_URLSITE "\nHome Page: "
- IDS_AINFO_LICENCE "\nLicenca: "
+ IDS_AINFO_LICENSE "\nLicenca: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nBeskrivning: "
IDS_AINFO_SIZE "\nStorlek: "
IDS_AINFO_URLSITE "\nHemsida: "
- IDS_AINFO_LICENCE "\nLicens: "
+ IDS_AINFO_LICENSE "\nLicens: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nAçıklaması: "
IDS_AINFO_SIZE "\nBüyüklüğü: "
IDS_AINFO_URLSITE "\nAna Sayfası: "
- IDS_AINFO_LICENCE "\nRuhsatı: "
+ IDS_AINFO_LICENSE "\nRuhsatı: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\nОпис: "
IDS_AINFO_SIZE "\nРозмір: "
IDS_AINFO_URLSITE "\nДомашня сторінка: "
- IDS_AINFO_LICENCE "\nЛіцензія: "
+ IDS_AINFO_LICENSE "\nЛіцензія: "
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\n描述:"
IDS_AINFO_SIZE "\n大小:"
IDS_AINFO_URLSITE "\n主页:"
- IDS_AINFO_LICENCE "\n协议:"
+ IDS_AINFO_LICENSE "\n协议:"
END
STRINGTABLE
IDS_AINFO_DESCRIPTION "\n描述:"
IDS_AINFO_SIZE "\n大小:"
IDS_AINFO_URLSITE "\n主頁:"
- IDS_AINFO_LICENCE "\n協議:"
+ IDS_AINFO_LICENSE "\n協議:"
END
STRINGTABLE
WCHAR szName[MAX_PATH];
WCHAR szRegName[MAX_PATH];
WCHAR szVersion[MAX_PATH];
- WCHAR szLicence[MAX_PATH];
+ WCHAR szLicense[MAX_PATH];
WCHAR szDesc[MAX_PATH];
WCHAR szSize[MAX_PATH];
WCHAR szUrlSite[MAX_PATH];
[Section]\r
Name = 7-Zip\r
Version = 9.34a\r
-Licence = LGPL\r
+License = LGPL\r
Description = A file archiving utility with support for 7zip, zip, tar, rar and many other archive formats.\r
Size = 1.14 MB\r
Category = 12\r
[Section]\r
Name = AbiWord\r
Version = 2.9.4\r
-Licence = GPL\r
+License = GPL\r
Description = Word processor.\r
Size = 9.4 MB\r
Category = 6\r
[Section]\r
Name = AbiWord\r
Version = 2.6.8\r
-Licence = GPL\r
+License = GPL\r
Description = Word processor.\r
Size = 5.64 MB\r
Category = 6\r
[Section]\r
Name = Abyss Web server X1\r
Version = 2.9.3.5\r
-Licence = Freeware\r
+License = Freeware\r
Description = Abyss Web Server enables you to host your Web sites on your computer. It supports secure SSL/TLS connections (HTTPS) as well as a wide range of Web technologies. It can also run advanced PHP, Perl, Python, ASP, ASP.NET, and Ruby on Rails Web applications, which can be backed by databases such as MySQL, SQLite, MS SQL Server, MS Access, or Oracle.\r
Size = 2.06 MB\r
Category = 5\r
Mogą one zostać oparte o MySQL, SQLite, MS SQL Server, MS Access, lub Oracle.\r
\r
[Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
Description = Abyss Web Server vă permite găzduirea de pagini Web pe calculatorul dumneavoastră. Oferă conexiuni securizate SSL/TLS (HTTPS) și multe alte tehnologii Web. Poate executa aplicații Web avansate ]n PHP, Perl, Python, ASP, ASP.NET și Ruby on Rails, ce pot fi susținute de baze de date ca MySQL, SQLite, MS SQL Server, MS Access, sau Oracle.\r
Size = 2,06 Mo\r
\r
[Section.041f]\r
Name = Abyss Umûmî Ağ Sunucusu X1\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
Description = Abyss Umûmî Ağ Sunucusu, bilgisayarınızda Umûmî Ağ sitelerinizin barındırılmasına olanak sağlar. Umûmî Ağ uygulayım biliminin bir geniş yelpâzesiyle birlikte güvenli SSL/TLS bağlantılarını (HTTPS) destekler. Ayrıca MySQL, SQLite, MS SQL Server, MS Access, ve Oracle gibi veri tabanlarıyla desteklenebilen gelişmiş PHP, Perl, Python, ASP, ASP.NET ve Rails üzerinde Ruby Umûmî Ağ uygulamalarını çalıştırabilir.\r
Size = 2,06 MB\r
\r
[Section]\r
Name = AC97 Driver for VirtualBox\r
Version = 5.10.00.3610\r
-Licence = Unknown\r
+License = Unknown\r
Description = Unzip in the ReactOS's folder then restart ReactOS twice.\r
Size = 185.5 kB\r
Category = 13\r
\r
[Section.0405]\r
Name = Ovladač AC97 pro VirtualBox\r
-Licence = Neznámá\r
+License = Neznámá\r
Description = Rozbalte do složky "ReactOS" a pak ReactOS dvakrát restartujte.\r
\r
[Section.0407]\r
Name = AC97 Treiber für VirtualBox\r
-Licence = Unbekannt\r
+License = Unbekannt\r
Description = Entpacken in das "ReactOS"-Verzeichnis und ReactOS zweimal neustarten.\r
\r
[Section.0410]\r
\r
[Section.040a]\r
Name = Driver AC97 para VirtualBox\r
-Licence = Desconocida\r
+License = Desconocida\r
Description = Descomprimir en la carpeta "Reactos" y reiniciar Reactos dos veces.\r
\r
[Section.040c]\r
Name = Pilote AC97 pour VirtualBox\r
-Licence = Inconnue\r
+License = Inconnue\r
Description = Décompresser dans le dossier "ReactOS" puis redémarrer ReactOS deux fois.\r
Size = 185,5 ko\r
\r
[Section.0410]\r
Name = Driver AC97 per VirtualBox\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
Description = Decomprimere nella cartella "ReactOS" e riavviare ReactOS.\r
\r
[Section.0413]\r
Name = AC97 Driver voor VirtualBox\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Pak uit in de "ReactOS" map en start tweemaal opnieuw op.\r
\r
[Section.0415]\r
Name = Sterownik AC97 dla VirtualBox\r
-Licence = Nieznana\r
+License = Nieznana\r
Description = Rozpakuj zawartość w folderze "ReactOS" i dwukrotnie zrestartuj system.\r
\r
[Section.0418]\r
Name = Modul pilot AC97 pentru VirtualBox\r
-Licence = Nespecificată\r
+License = Nespecificată\r
Description = Dezarhivați în dosarul ReactOS apoi reporniți ReactOS de două ori.\r
Size = 185,5 ko\r
\r
[Section.0419]\r
Name = Драйвер AC97 для VirtualBox\r
-Licence = Не указано\r
+License = Не указано\r
Description = Pазархивируйте содержимое в папку "ReactOS", затем дважды перезагрузите систему.\r
\r
[Section.041f]\r
Name = VirtualBox için AC97 Sürücüsü\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
Description = ReactOS'un dizinine çıkartınız, sonra bilgisayarı iki kez yeniden başlatınız.\r
Size = 185,5 KB\r
\r
[Section.0422]\r
Name = Драйвер AC97 для VirtualBox\r
-Licence = Невідома\r
+License = Невідома\r
Description = Pозархівуйте вміст в теку "ReactOS" після чого двічі перезавантажте систему.\r
\r
[Section.0813]\r
Name = AC97 Driver voor VirtualBox\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Pak uit in de "ReactOS" map en start tweemaal opnieuw op.\r
[Section]\r
Name = Audio Grabber\r
Version = 1.83 SE\r
-Licence = Freeware\r
+License = Freeware\r
Description = A very good CD Ripper/Audio File Converter.\r
Size = 3.43 MB\r
Category = 1\r
Description = Bardzo dobry CD Ripper/konwerter plików audio.\r
\r
[Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
Description = Program de extragere conținuturi CD audio și de conversie a fișierelor de sunet.\r
Size = 3,43 Mo\r
\r
[Section.041f]\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
Description = Çok iyi bir CD ripleyicisi ve ses kütüğü dönüştürücüsü.\r
Size = 3,43 MB\r
\r
[Section]
Name = BitTorrent
Version = 7.9.2
-Licence = Freeware for non-commercial uses
+License = Freeware for non-commercial uses
Description = The Original BitTorrent Client.
Size = 1.61 MB
Category = 5
CDPath = none
[Section.0407]
-Licence = Freeware für nichtkommerzielle Nutzung
+License = Freeware für nichtkommerzielle Nutzung
Description = Der Original BitTorrent Client.
[Section.0410]
Description = L'originale Client BitTorrent.
[Section.0415]
-Licence = Freeware dla użytku niekomercyjnego
+License = Freeware dla użytku niekomercyjnego
Description = Oryginalny klient BitTorrent.
[Section.0418]
-Licence = Gratuită pentru uz necomercial
+License = Gratuită pentru uz necomercial
Description = Originalul client BitTorrent.
Size = 1,61 Mo
[Section.041f]
-Licence = Tecimlik olmayan kullanımlar için ücretsiz.
+License = Tecimlik olmayan kullanımlar için ücretsiz.
Description = Özgün BitTorrent istemcisi.
Size = 1,61 MB
[Section]
Name = Bochs
Version = 2.6.6
-Licence = LGPL v2
+License = LGPL v2
Description = Bochs is a highly portable open source IA-32 (x86) PC emulator written in C++, that runs on most popular platforms.
Size = 4.7 MB
Category = 15
Size = 4,7 Mo
[Section.041f]
-Licence = LGPL 2. sürüm
+License = LGPL 2. sürüm
Description = Bochs; çok taşınabilir, C++ ile yazılmış, en yaygın platformlarda çalışan, açık kaynak bir IA-32 (x86) PC öykünücüsüdür.
Size = 4,7 MB
[Section]
Name = Bos Wars
Version = 2.6.1
-Licence = GPL
+License = GPL
Description = Bos Wars is a futuristic real time strategy game. To start the game, install Microsoft Visual C++ 2008 runtime.
Size = 62.3 MB
Category = 4
[Section]
Name = Bound Around (Demo)
-Licence = Shareware
+License = Shareware
Description = A game similar Frozen Fruits.
Size = 1.95 MB
Category = 4
Description = Un gioco simile a Frozen Fruits.
[Section.0418]
-Licence = Versiune de evaluare
+License = Versiune de evaluare
Description = Un joc similar jocului Frozen Fruits.
Size = 1,95 Mo
[Section.041f]
Name = Bound Around (Göstermelik)
-Licence = Paylaşımlı
+License = Paylaşımlı
Description = Frozen Fruits benzeri bir oyun.
Size = 1,95 MB
[Section]
Name = Christmas Bound
Version = 1.4
-Licence = Freeware
+License = Freeware
Description = A game similar Frozen Fruits.
Size = 892 kB
Category = 4
Description = Un gioco simile a Frozen Fuits.
[Section.0418]
-Licence = Gratuită
+License = Gratuită
Description = Un joc similar jocului Frozen Fruits.
Size = 892 ko
[Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
Description = Frozen Fruits benzeri bir oyun.
Size = 892 KB
[Section]
Name = Chromium B.S.U.
Version = 0.9.13.2
-Licence = GPL
+License = GPL
Description = Chromium B.S.U. is an arcade-style, top-scrolling space shooter.
Size = 2.3 MB
Category = 4
[Section]
Name = Click-N-Type Virtual Keyboard
Version = 3.03
-Licence = Freeware
+License = Freeware
Description = Freeware virtual keyboard application.
Size = 1.3 MB
Category = 12
Description = Kostenlose virtuelle Tastatur.
[Section.0410]
-Licence = Gratuita
+License = Gratuita
Description = Applicazione gratuita per la simulazione della tastiera.
[Section.0415]
Description = Wirtualna klawiatura ekranowa.
[Section.0418]
-Licence = Gratuită
+License = Gratuită
Description = Aplicație gratuită pentru simularea unei tastaturi fizice.
Size = 1,3 Mo
[Section.041f]
Name = Click-N-Type Farazî Düğme Takımı
-Licence = Ücretsiz
+License = Ücretsiz
Description = Ücretsiz farazî düğme takımı uygulaması.
Size = 1,3 MB
[Section]
Name = Code::Blocks (without compiler)
Version = 13.12
-Licence = GPLv3
+License = GPLv3
Description = A open source, cross-platform, powerful IDE. It doesn't contain a compiler.
Size = 29.2 MB
Category = 7
[Section.041f]
Name = Code::Blocks (Derleyicisiz)
-Licence = GPL 3. sürüm
+License = GPL 3. sürüm
Description = Açık kaynak, çapraz platform, güçlü bir tümleşik geliştirme ortamı. Bir derleyici içermez.
Size = 29,2 MB
[Section]
Name = Code::Blocks TDM-GCC (version 4.7.1, 32 bit)
Version = 13.12
-Licence = GPLv3
+License = GPLv3
Description = A open source, cross-platform, powerful IDE. It contains TDM-GCC (version 4.7.1, 32 bit) compiler.
Size = 97.8 MB
Category = 7
[Section.041f]
Name = Code::Blocks TDM-GCC (sürüm 4.7.1, 32 bitlik)
-Licence = GPL 3. sürüm
+License = GPL 3. sürüm
Description = Açık kaynak, çapraz platform, güçlü bir tümleşik geliştirme ortamı. TDM-GCC (sürüm 4.7.1, 32 bitlik) derleyicisini içerir.
Size = 97,8 MB
[Section]
Name = Code::Blocks TDM-GCC (version 4.8.1, 32 bit)
Version = 13.12
-Licence = GPLv3
+License = GPLv3
Description = A open source, cross-platform, powerful IDE. It contains TDM-GCC (version 4.8.1, 32 bit) compiler.
Size = 100 MB
Category = 7
[Section.041f]
Name = Code::Blocks TDM-GCC (sürüm 4.8.1, 32 bitlik)
-Licence = GPL 3. sürüm
+License = GPL 3. sürüm
Description = Açık kaynak, çapraz platform, güçlü bir tümleşik geliştirme ortamı. TDM-GCC (sürüm 4.8.1, 32 bitlik) derleyicisini içerir.
Size = 100 MB
[Section]\r
Name = Microsoft Visual Basic 6.0 Common Controls\r
Version = 6.0\r
-Licence = Unknown\r
+License = Unknown\r
Description = File needed by some applications. Contains: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
Size = 913.73 kB\r
Category = 14\r
CDPath = none\r
\r
[Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
Description = Datei wird von einigen Anwendungen benötigt. Beinhaltet: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
Size = 908.73 kB\r
URLSite = http://www.microsoft.com/de-DE/download/details.aspx?id=10019\r
URLDownload = http://download.microsoft.com/download/c/e/d/ced699fe-7a40-420b-bdd7-10b38caef4c6/VisualBasic6-KB896559-v1-DEU.exe\r
\r
[Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
Description = X es necesario para varias aplicaciones. Incluye: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
Size = 910.23 kB\r
URLSite = http://www.microsoft.com/es-ES/download/details.aspx?id=10019\r
URLDownload = http://download.microsoft.com/download/9/0/9/90935db7-89ec-4344-a9ea-e6913c03f060/VisualBasic6-KB896559-v1-ESN.exe\r
\r
[Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
Description = Fichier nécessaire pour certaines applications. Contient: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
Size = 911,23 ko\r
URLSite = http://www.microsoft.com/fr-FR/download/details.aspx?id=10019\r
URLDownload = http://download.microsoft.com/download/4/0/f/40f775ea-b257-410c-8f78-f1f60afe0306/VisualBasic6-KB896559-v1-FRA.exe\r
\r
[Section.0410]\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
Description = File necessari per alcune applicazioni. Contiene: Comctl32.ocx, mscomctl.ocx, advpack.dll.\r
Size = 909.73 kB\r
URLSite = http://www.microsoft.com/it-IT/download/details.aspx?id=10019\r
URLDownload = http://download.microsoft.com/download/8/1/b/81b968b9-1d7d-4d0a-aa27-864f4a2e3c23/VisualBasic6-KB896559-v1-ITA.exe\r
\r
[Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Gebruikt door bepaalde applicaties. Bevat: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
\r
[Section.0415]\r
-Licence = Nieznana\r
+License = Nieznana\r
Description = Microsoft Visual Basic 6.0 Common Controls jest używany przez część aplikacji. Zawiera: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
\r
[Section.0418]\r
-Licence = Nespecificată\r
+License = Nespecificată\r
Description = Modul logic necesar unor aplicații. Conține: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
Size = 913,73 ko\r
\r
[Section.041f]\r
Name = Microsoft Visual Basic 6.0 Ortak Denetimler\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
Description = Birtakım uygulamalar için gerekli kütük. Şunları içerir: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
Size = 913,73 KB\r
\r
[Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
Description = Файл потрібен декотрим програмам. включає: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
\r
[Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Gebruikt door bepaalde applicaties. Bevat: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
[Section]
Name = Orwell Dev-C++ TDM GCC x64
Version = 5.8.0
-Licence = GPLv2
+License = GPLv2
Description = A maintained version of Dev-C++. It contains 64 bit TDM-GCC compiler.
Size = 44.7 MB
Category = 7
Size = 44,7 Mo
[Section.041f]
-Licence = GPL 2. sürüm
+License = GPL 2. sürüm
Description = Dev-C++'nın sürdürülen bir sürümü. 64 bitlik TDM-GCC derleyicisi içerir.
Size = 44,7 MB
[Section]\r
Name = Diablo II\r
Version = 1.4\r
-Licence = Shareware\r
+License = Shareware\r
Description = Diablo 2 Shareware. zeckensack's glide wrapper is required to run it.\r
Size = 131.9 MB\r
Category = 4\r
Description = Diablo 2 Shareware. Do poprawnego działania wymagany jest zainstalowany zeckensacks glide wrapper.\r
\r
[Section.0418]\r
-Licence = Versiune de evaluare\r
+License = Versiune de evaluare\r
Description = Diablo 2 Shareware. Pentru execuție este necesar (pachetul) zeckensack's glide wrapper.\r
Size = 131,9 Mo\r
\r
[Section.041f]\r
-Licence = Paylaşımlı\r
+License = Paylaşımlı\r
Description = Diablo 2 Paylaşımlı. Çalıştırmak için zeckensack'ın glide wrapper'ı gereklidir.\r
Size = 131,9 MB\r
\r
[Section]\r
Name = DosBlaster\r
Version = 2.5\r
-Licence = GPL\r
+License = GPL\r
Description = DosBlaster is a shell extension which makes it possible to open any DOS executable in DOSBox via right click. This version contains DOSBox 0.70, but can be simply updated by installing a newer DOSBox into the DosBlaster folders.\r
Size = 2.05 MB\r
Category = 15\r
[Section]\r
Name = DOSBox\r
Version = 0.74\r
-Licence = GPL\r
+License = GPL\r
Description = DOSBox is a DOS emulator.\r
Size = 1.38 MB\r
Category = 15\r
[Section]
Name = Double Commander
Version = 0.5.11 Beta
-Licence = GPL
+License = GPL
Description = Double Commander is an open source file manager with two panels side by side. You need 7-Zip or a similar Utility to extract it.
Size = 8.0 MB
Category = 12
[Section]
Name = D+ Browser
Version = 0.5b
-Licence = GPLv3
+License = GPLv3
Description = DPlus is a graphical web browser with an emphasis on security, performance and portability. It is based on Dillo and it is forked from Dillo-Win32 project.
Size = 1.36 MB
Category = 5
[Section.041f]
Name = D+ Tarayıcı
-Licence = GPL 3. sürüm
+License = GPL 3. sürüm
Description = DPlus; güvenlik, başarım ve taşınabilirlik üzerine bir vurguyla, çizgelik bir Umûmî Ağ tarayıcısıdır. Dillo tabanlıdır ve Dillo-Win32 tasarısından çatallanmıştır.
Size = 1,36 MB
[Section]
Name = DVD Write Now
Version = 1.5.12 sp2
-Licence = Freeware
+License = Freeware
Description = A free direct CD/DVD recording software. Once installed, you can use your CD/DVD RW as USB Flash or removable hard drives. Along with this you can write to CD/DVD RW recorded with UDF filesystem. You can also read UDF disks created with other software (Microsoft DVD−ROMs, RW disks recorded with Ahead InCD). You need a ZIP decompression program to install it.
Size = 1.2 MB
Category = 12
Description = Darmowe oprogramowanie do nagrywania CD/DVD. Po zainstalowaniu, możesz używać płyty CD RW i DVD RW tak, jak dyski przenośne / pendrive. Możesz także zapisywać (i odczytywać dyski utworzone przez inne programy) dane do dysków RW zapisanych w systemie UDF. Wymaga programu archiwizującego do wypakowania i instalacji.
[Section.0418]
-Licence = Gratuită
+License = Gratuită
Description = Un program de înscriere CD/DVD directă. Odată instalat, puteți utiliza CD/DVD ca memorie USB sau disc dur detașabil. Pe lângă aceasta, veți putea scrie pe CD/DVD inscripționate cu sistem de fișiere UDF. Se pot de asemenea citi discuri UDF create cu alte programe. (Microsoft DVD-ROM, discuri RW inscripționate cu Ahead InCD). Este necesar un program de decompresie ZIP pentru a-l instala.
Size = 1,2 Mo
URLSite = http://dwn.alter.org.ua/ru/
[Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
Description = Ücretsiz bir doğrudan CD/DVD saklayıcı yazılımı. Kurulduktan sonra CD/DVD RW'lerinizi, USB Flash veyâ çıkarılabilir sâbit disk sürücüleri olarak kullanabilirsiniz. Bununla birlikte UDF kütük dizgesiyle saklanmış CD/DVD RW'lere yazabilirsiniz. Ayrıca Microsoft DVD−ROM'ları, Ahead InCD ile saklanmış RW diskleri gibi başka yazılımlarla oluşturulmuş UDF diskleri okuyabilirsiniz. Kurmak için bir ZIP çıkartma izlencesi gerekir.
Size = 1,2 MB
[Section]
Name = Microsoft Excel Viewer
Version = 2007
-Licence = Unknown
+License = Unknown
Description = Microsoft Excel Viewer
Size = 74.14 MB
Category = 6
CDPath = none
[Section.0407]
-Licence = Unbekannt
+License = Unbekannt
Size = 51.15 MB
URLDownload = http://download.microsoft.com/download/F/8/8/F88CB355-ECAA-4B74-87D6-C05C81D215BF/ExcelViewer.exe
[Section.040a]
-Licence = Desconocida
+License = Desconocida
Size = 51.11 MB
URLDownload = http://download.microsoft.com/download/5/D/9/5D9E41A4-22CE-4497-BD7D-368883EF92F7/ExcelViewer.exe
[Section.040c]
-Licence = Inconnue
+License = Inconnue
Size = 51,13 Mo
URLDownload = http://download.microsoft.com/download/0/0/E/00EE9DCF-7BCA-4414-837E-BC3AA23DCC8D/ExcelViewer.exe
[Section.0410]
-Licence = Sconosciuta
+License = Sconosciuta
Size = 51.1 MB
URLDownload = http://download.microsoft.com/download/0/C/2/0C2ED9D9-6961-47F3-91E0-916E19F330E2/ExcelViewer.exe
[Section.0413]
-Licence = Ongekend
+License = Ongekend
Size = 50.97 MB
URLDownload = http://download.microsoft.com/download/C/C/6/CC663715-AB58-4CDE-90F1-5A8CF7472500/ExcelViewer.exe
[Section.0415]
-Licence = Nieznana
+License = Nieznana
Size = 51.15 MB
URLDownload = http://download.microsoft.com/download/5/B/A/5BAB0B5A-706D-444C-B90A-1D97DB4C43A8/ExcelViewer.exe
[Section.0418]
-Licence = Necunoscută
+License = Necunoscută
Size = 51,14 Mo
URLDownload = http://download.microsoft.com/download/D/D/2/DD28D077-97F3-47C0-9389-0B987918888B/ExcelViewer.exe
[Section.041f]
Name = Microsoft Excel Görüntüleyici
-Licence = Bilinmiyor
+License = Bilinmiyor
Description = Microsoft Excel Görüntüleyici
Size = 51,1 MB
URLDownload = http://download.microsoft.com/download/8/5/D/85DCDD24-8237-4334-866D-417F74F37C47/ExcelViewer.exe
[Section.0422]
-Licence = Невідома
+License = Невідома
Size = 51.15 MB
URLDownload = http://download.microsoft.com/download/7/4/9/749A8D59-A2D5-4A64-99CF-5FF4DD7C5AC6/ExcelViewer.exe
[Section.0813]
-Licence = Ongekend
+License = Ongekend
Size = 50.97 MB
URLDownload = http://download.microsoft.com/download/C/C/6/CC663715-AB58-4CDE-90F1-5A8CF7472500/ExcelViewer.exe
[Section]\r
Name = Fox Audio Player\r
Version = 0.10.2\r
-Licence = GPL\r
+License = GPL\r
Description = Simple and lightweight audio player.\r
Size = 1.9 MB\r
Category = 1\r
[Section]
Name = Mozilla Fira Font
Version = 3.1
-Licence = Unknown
+License = Unknown
Description = Mozilla Fira Font Pack, Includes Mono and Sans fonts. Unzip in the ReactOS's folder.
Size = 1.1 MB
Category = 14
CDPath = none
[Section.0407]
-Licence = Unbekannt
+License = Unbekannt
Description = Mozilla Fira Font Pack, Beinhaltet Mono und Sans Schriften. Bitte in den "ReactOS" Ordner entpacken.
[Section.0410]
-Licence = Sconosciuta
+License = Sconosciuta
Description = Fira Font Pack di Mozilla, Include i font Mono e Sans. Estrare nella cartella "ReactOS".
[Section.0415]
-Licence = Nieznana
+License = Nieznana
Description = Pakiet czcionek Mozilla Fira Font, zawiera czcionki Mono i Sans. Wypakuj do folderu "ReactOS".
[Section.0418]
-Licence = Nespecificată
+License = Nespecificată
Description = Pachetul Mozilla Fira Font, include fonturile Mono și Sans. Dezarhivați în dosarul ReactOS.
Size = 1,1 Mo
[Section.041f]
Name = Mozilla Fira Yazı Tipi
-Licence = Bilinmiyor
+License = Bilinmiyor
Description = Mozilla Fira Yazı Tipi Paketi, Mono ve Sans yazı tiplerini kapsar. ReactOS'un dizinine çıkartınız.
Size = 1,1 MB
[Section]
Name = Mozilla Firefox 33
Version = 33.0
-Licence = MPL/GPL/LGPL
+License = MPL/GPL/LGPL
Description = The most popular and one of the best free Web Browsers out there.
Size = 34.76 MB
Category = 5
[Section]\r
Name = Mozilla Firefox 2.0\r
Version = 2.0.0.20\r
-Licence = MPL/GPL/LGPL\r
+License = MPL/GPL/LGPL\r
Description = The most popular and one of the best free Web Browsers out there.\r
Size = 5.77 MB\r
Category = 5\r
[Section]\r
Name = Mozilla Firefox 3.0\r
Version = 3.0.19\r
-Licence = MPL/GPL/LGPL\r
+License = MPL/GPL/LGPL\r
Description = The most popular and one of the best free Web Browsers out there.\r
Size = 7.16 MB\r
Category = 5\r
[Section]\r
Name = Mozilla Firefox 3.6\r
Version = 3.6.28\r
-Licence = MPL/GPL/LGPL\r
+License = MPL/GPL/LGPL\r
Description = The most popular and one of the best free Web Browsers out there.\r
Size = 8.22 MB\r
Category = 5\r
[Section]
Name = Foxit Reader
Version = 6.2.3.815
-Licence = Freeware
+License = Freeware
Description = The best PDF reader next to Adobe Reader itself.
Size = 36.0 MB
Category = 6
[Section.041f]
Version = 6.1.5.0624
-Licence = Ücretsiz
+License = Ücretsiz
Description = Adobe Okuyucu'nun kendisine yakın en iyi PDF okuyucusu.
Size = 36,0 MB
URLDownload = http://cdn01.foxitsoftware.com/pub/foxit/reader/desktop/win/6.x/6.1/L10N/FoxitReader615.0624_prom_L10N_Setup.exe
[Section]\r
Name = FreeBASIC\r
Version = 1.00.0\r
-Licence = GPL/LGPL\r
+License = GPL/LGPL\r
Description = Open Source BASIC Compiler. The BASIC syntax is compatible to QBASIC.\r
Size = 9.0 MB\r
Category = 7\r
[Section]
Name = Ghostscript
Version = 9.15
-Licence = AGPL
+License = AGPL
Description = An open interpreter for the PostScript language and for PDF.
Size = 12.65 MB
Category = 6
[Section]
Name = GSview
Version = 5.0
-Licence = Aladdin Free Public Licence
+License = Aladdin Free Public License
Description = A graphical interface for Ghostscript.
Size = 1.94 MB
Category = 6
Description = Ein grafisches Interface für Ghostscript.
[Section.0418]
-Licence = Licență publică gratuită „Aladdin”
+License = Licență publică gratuită „Aladdin”
Description = O interfață grafică pentru GhostScript.
Size = 1,94 Mo
[Section.041f]
-Licence = Aladdin Özgür Kamu Ruhsatı
+License = Aladdin Özgür Kamu Ruhsatı
Description = Ghostscript için bir çizgelik arayüz.
Size = 1,94 MB
[Section]\r
Name = GlidewrapZbag\r
Version = 0.84c\r
-Licence = Freeware\r
+License = Freeware\r
Description = glidewrapper needed to run Diablo 2 on ReactOS.\r
Size = 249.02 kB\r
Category = 3\r
Description = glidewrapper jest potrzebny do uruchomienia Diablo2 w ReactOS-ie.\r
\r
[Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
Description = Glide wrapper, necesar pentru a executa Diablo 2 în ReactOS.\r
Size = 249,02 ko\r
\r
[Section.041f]\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
Description = glidewrapper, ReactOS'ta Diablo 2'yi çalıştırmak için gereklidir.\r
Size = 249,02 KB\r
\r
[Section]
Name = Globulation2
Version = 0.9.4.4
-Licence = GPL
+License = GPL
Description = Globulation 2 is a real-time strategy game. The game minimizes gaming micromanagement by automatically assigning tasks to units.
Size = 13.5 MB
Category = 4
[Section]
Name = Hover!
Version = 1.0
-Licence = MS EULA
+License = MS EULA
Description = The classic Hover CTF game which was found on the Windows 95 CD.
Size = 6.2 MB
Category = 4
[Section]
Name = HxD
Version = 1.7.7.0
-Licence = Freeware
+License = Freeware
Description = A good hex editor. You need 7-Zip or a similar Utility to extract it.
Size = 852 kB
Category = 7
Description = Un buon editor hexadecimale. Necessita 7-Zip o un programma simile per estrarlo.
[Section.0418]
-Licence = Gratuită
+License = Gratuită
Description = Un bun editor hexazecimal. E necesar un utilitar de dezarhivare de tip ZIP.
Size = 859 ko
URLDownload = http://mh-nexus.de/downloads/HxDSetupROM.zip
[Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
Description = İyi bir onaltılık düzenleyici. Çıkartmak için 7-Zip ya da benzeri bir yazılım kullanmanız gerekir.
Size = 853 KB
URLDownload = http://mh-nexus.de/downloads/HxDSetupTR.zip
[Section]
Name = IndiFTPD
Version = 1.0.9 Beta
-Licence = GPL
+License = GPL
Description = IndiFTPD is a standalone FTP server that functions as a single executable. It is designed for situations when a user does not want to install/configure a server on the system (or does not have permission to do so) and wants to quickly get a server running.
Size = 556 kB
Category = 5
[Section]
Name = Inkscape
Version = 0.48.5
-Licence = GPL
+License = GPL
Description = Inkscape is a vector graphics editor licensed under the GNU General Public License.
Size = 32.9 MB
Category = 3
[Section]\r
Name = IrfanView\r
Version = 4.38\r
-Licence = Freeware (for personal use)\r
+License = Freeware (for personal use)\r
Description = Viewer for all kinds of graphics/audio files/video files.\r
Size = 1.81 MB\r
Category = 3\r
CDPath = none\r
\r
[Section.0407]\r
-Licence = Freeware für nichtkommerzielle Nutzung\r
+License = Freeware für nichtkommerzielle Nutzung\r
Description = Anzeigeprogramm für alle Arten von Grafik-/Audio- oder Video-Dateien.\r
\r
[Section.040a]\r
-Licence = Gratuito (para uso personal)\r
+License = Gratuito (para uso personal)\r
Description = Visor para toda clase de archivos de imagen,audio y video.\r
\r
[Section.040c]\r
-Licence = Gratuit (pour un usage personnel)\r
+License = Gratuit (pour un usage personnel)\r
Description = Visionneur pour tous les types de fichiers graphiques/audio/vidéo.\r
Size = 1,81 Mo\r
\r
[Section.0410]\r
-Licence = Gratuita (per uso personale)\r
+License = Gratuita (per uso personale)\r
Description = Viewer per tutti i tipi di grafici / file audio / file video.\r
\r
[Section.0413]\r
-Licence = Freeware (voor persoonlijk gebruik)\r
+License = Freeware (voor persoonlijk gebruik)\r
Description = Weergave voor allerhande bestandstypes voor audio, video, grafiek.\r
\r
[Section.0415]\r
-Licence = Freeware (dla użytku domowego)\r
+License = Freeware (dla użytku domowego)\r
Description = Przeglądarka dla bardzo wielu typów obrazów, plików audio oraz wideo.\r
\r
[Section.0418]\r
-Licence = Gratuită (pentru uz personal)\r
+License = Gratuită (pentru uz personal)\r
Description = Lector pentru multiple formaturi de fișiere grafice/audio/video.\r
Size = 1,81 Mo\r
\r
[Section.041f]\r
-Licence = Şahsî kullanım için ücretsiz.\r
+License = Şahsî kullanım için ücretsiz.\r
Description = Çizgelerin, ses kütüklerinin, vidyo kütüklerinin tüm türleri için görüntüleyici.\r
Size = 1,81 MB\r
\r
[Section.0422]\r
-Licence = Freeware (для домашнього використання)\r
+License = Freeware (для домашнього використання)\r
Description = Переглядач для всіх видів графічних та аудіо/відео файлів.\r
\r
[Section.0813]\r
-Licence = Freeware (voor persoonlijk gebruik)\r
+License = Freeware (voor persoonlijk gebruik)\r
Description = Weergave voor allerhande bestandstypes voor audio, video, grafiek.\r
[Section]\r
Name = IrfanView Plugins\r
Version = 4.38\r
-Licence = Freeware (for personal use)\r
+License = Freeware (for personal use)\r
Description = Additional Plugins for supporting more file types.\r
Size = 10.24 MB\r
Category = 3\r
CDPath = none\r
\r
[Section.0407]\r
-Licence = Freeware für nichtkommerzielle Nutzung\r
+License = Freeware für nichtkommerzielle Nutzung\r
Description = Zusätzlich Plugins zur Unterstützung von weiteren Dateitypen.\r
\r
[Section.040a]\r
-Licence = Gratuito (para uso personal)\r
+License = Gratuito (para uso personal)\r
Description = Complementos adicionales para soportar más formatos.\r
\r
[Section.040c]\r
-Licence = Gratuit (pour un usage personnel)\r
+License = Gratuit (pour un usage personnel)\r
Description = Modules additionnels pour supporter plus de types de fichiers.\r
Size = 10,24 Mo\r
\r
[Section.0410]\r
-Licence = Gratuita (per uso personale)\r
+License = Gratuita (per uso personale)\r
Description = Plugins addizionale per il supporto di molti tipi di file.\r
\r
[Section.0413]\r
-Licence = Freeware (voor persoonlijk gebruik)\r
+License = Freeware (voor persoonlijk gebruik)\r
Description = Toegevoegde plugins voor ondersteuning van extra bestandstypes.\r
\r
[Section.0415]\r
-Licence = Freeware (dla użytku domowego)\r
+License = Freeware (dla użytku domowego)\r
Description = Wtyczki otwierające dodatkowe typy plików w Irfanview.\r
\r
[Section.0418]\r
-Licence = Gratuită (pentru uz personal)\r
+License = Gratuită (pentru uz personal)\r
Description = Extensii adiționale pentru a spori numărul de formate de fișiere recunoscute.\r
Size = 10,24 Mo\r
\r
[Section.041f]\r
Name = IrfanView Eklentileri\r
-Licence = Şahsî kullanım için ücretsiz.\r
+License = Şahsî kullanım için ücretsiz.\r
Description = Daha çok kütük türü desteklemek için eklentiler.\r
Size = 10,24 MB\r
\r
[Section.0422]\r
-Licence = Freeware (для домашнього використання)\r
+License = Freeware (для домашнього використання)\r
Description = Додаткові плагіни для підтримки більшої кількості файлових типів.\r
\r
[Section.0813]\r
-Licence = Freeware (voor persoonlijk gebruik)\r
+License = Freeware (voor persoonlijk gebruik)\r
Description = Toegevoegde plugins voor ondersteuning van extra bestandstypes.\r
[Section]\r
Name = K Desktop Environment\r
Version = 1.0.0\r
-Licence = GPL\r
+License = GPL\r
Description = KDE for Windows.\r
Size = 2.16 MB\r
Category = 15\r
[Section]
Name = Kyodai Mahjongg
Version = 21.42
-Licence = Shareware
+License = Shareware
Description = One of the best Mahjongg Solitaire games out there.
Size = 13.8 MB
Category = 4
Description = Jedna z najlepszych gier Mahjongg Solitaire.
[Section.0418]
-Licence = Versiune de evaluare
+License = Versiune de evaluare
Description = Unul dintre cele mai bune jocuri de pasiență Mahjongg.
Size = 13,8 Mo
[Section.041f]
-Licence = Paylaşımlı
+License = Paylaşımlı
Description = Mahjong solitaire oyunları arasında en iyilerinden biri.
Size = 13,8 MB
[Section]
Name = Lazarus
Version = 1.2.6
-Licence = modified LGPL, GPL
+License = modified LGPL, GPL
Description = A cross-platform integrated development environment (IDE) that lets you create visual (GUI) and non-visual Object Pascal programs, and uses the Free Pascal compiler to generate your executable.
Size = 107 MB
Category = 7
Description = Un ambiente di sviluppo integrato (IDE) cross-platform che consente di creare interfacce grafiche (GUI) e programmi non visivi Object Pascal, e utilizza il compilatore Free Pascal per generare l'eseguibile.
[Section.0418]
-Licence = GPL, LGPL modificată
+License = GPL, LGPL modificată
Description = Un mediu integrat de dezvoltare (IDE) multi-platformă care vă permite crearea de programe Object Pascal, atât vizuale (GUI) cât și ne-vizuale, și utilizează compilatorul Free Pascal pentru a genera executabile.
Size = 107 Mo
[Section.041f]
-Licence = Değiştirilmiş LGPL, GPL
+License = Değiştirilmiş LGPL, GPL
Description = Görmelik (GUI) ve görmelik olmayan Object Pascal izlenceleri oluşturmanızı sağlayan, çalıştırılabilir kütüğünüzü oluşturmak için Free Pascal derleyicisini kullanan bir çapraz platform bir tümleşik geliştirme ortamı (IDE).
[Section]\r
Name = LBreakout2\r
Version = 2.4.1\r
-Licence = GPL\r
+License = GPL\r
Description = Breakout Clone using SDL libs.\r
Size = 3.03 MB\r
Category = 4\r
[Section]\r
Name = LGeneral\r
Version = 1.1\r
-Licence = GPL\r
+License = GPL\r
Description = Panzer General Clone using SDL libs.\r
Size = 1.92 MB\r
Category = 4\r
[Section]
Name = LibreCAD
Version = 2.0.6
-Licence = GPLv2
+License = GPLv2
Description = LibreCAD is a free and open source 2D-CAD application for Windows, Linux and OS X.
Size = 28.7 MB
Category = 3
Description = LibreCAD ist ein kostenloses und quelloffenes 2D-CAD Programm für Windows, Linux und OS X.
[Section.041f]
-Licence = GPL 2. sürüm
+License = GPL 2. sürüm
Description = LibreCAD; Windows, Linux ve OS X için özgür ve açık kaynak bir 2 boyutlu CAD uygulamasıdır.
Size = 28,7 MB
[Section]\r
Name = LibreOffice\r
Version = 4.3.4\r
-Licence = LGPL\r
+License = LGPL\r
Description = A powerful and open source office suite. It has been forked from OpenOffice.\r
Size = 215.23 MB\r
Category = 6\r
[Section]
Name = LibreOffice Help Pack
Version = For LibreOffice 4.3.4
-Licence = GPLv3
+License = GPLv3
Description = Offline help content of LibreOffice.
Size = 5.06 MB
Category = 6
[Section.041f]
Name = LibreOffice Yardım Paketi
Version = LibreOffice 4.3.4 için
-Licence = GPL 3. sürüm
+License = GPL 3. sürüm
Description = LibreOffice'in çevrim dışı yardım içeriği.
Size = 6,79 MB
URLDownload = http://download.documentfoundation.org/libreoffice/stable/4.3.4/win/x86/LibreOffice_4.3.4_Win_x86_helppack_tr.msi
[Section]\r
Name = LMarbles\r
Version = 1.0.6\r
-Licence = GPL\r
+License = GPL\r
Description = Atomix Clone using SDL libs.\r
Size = 1.39 MB\r
Category = 4\r
[Section]
Name = Midnight Commander for Windows
Version = Build 185 (4.8.12)
-Licence = GPLv3
+License = GPLv3
Description = 32-bit Windows port of GNU Midnight Commander.
Size = 2.35 MB
Category = 12
[Section.0410]
Name = Midnight Commander per Windows
Version = Revisione 185 (4.8.12)
-Licence = GPL versione 3
+License = GPL versione 3
Description = Un porting Windows 32bit di Midnight Commander.
[Section.0415]
Name = Midnight Commander dla Windows
-Licence = GPL wersja 3
+License = GPL wersja 3
Description = 32-bitowy port GNU Midnight Commander dla Windows.
[Section.0418]
[Section.041f]
Name = Midnight Commander (Windows için)
Version = Yapı 185 (4.8.12)
-Licence = GPL 3. sürüm
+License = GPL 3. sürüm
Description = GNU Midnight Commander'ın 32 bitlik Windows uyarlamasıdır.
Size = 2,35 MB
[Section]\r
Name = OLE Viewer and Microsoft Foundation Classes version 4\r
Version = 4.0\r
-Licence = Unknown\r
+License = Unknown\r
Description = MFC 4 is needed by some applications. Contains: mfc40.dll, msvcrt40.dll.\r
Size = 865.04 kB\r
Category = 14\r
\r
[Section.0407]\r
Name = OLE Anzeige und Microsoft Foundation Classes Version 4\r
-Licence = Unbekannt\r
+License = Unbekannt\r
Description = MFC 4 wird von einigen Anwendungen benötigt. Beinhaltet: mfc40.dll, msvcrt40.dll.\r
\r
[Section.040a]\r
Name = Visor OLE y Microsoft Foundation Classes Version 4\r
-Licence = Desconocida\r
+License = Desconocida\r
Description = MFC 4 es necesario para varias aplicaciones. Incluye: mfc40.dll, msvcrt40.dll.\r
\r
[Section.040c]\r
Name = Visionneur OLE et Microsoft Foundation Classes version 4\r
-Licence = Inconnue\r
+License = Inconnue\r
Description = MFC 4 est nécessaire pour certaines applications. Contient: mfc40.dll, msvcrt40.dll.\r
Size = 865,04 ko\r
\r
[Section.0410]\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
Description = MFC 4 è necessario per alcune applicazioni. Contiene: mfc40.dll, msvcrt40.dll.\r
\r
[Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = MFC 4 is nodig voor bepaalde applicaties. Bevat: mfc40.dll, msvcrt40.dll.\r
\r
[Section.0415]\r
Name = Przeglądarka OLE oraz MFC (Microsoft Foundation Classes) wersja 4\r
-Licence = Nieznana\r
+License = Nieznana\r
Description = Biblioteka MFC 4 jest używana przez część aplikacji. Zawiera: mfc40.dll, msvcrt40.dll.\r
\r
[Section.0418]\r
-Licence = Nespecificată\r
+License = Nespecificată\r
Description = MFC 4 este necesară unor aplicații. Conține: mfc40.dll, msvcrt40.dll.\r
Size = 865,04 ko\r
\r
[Section.041f]\r
Name = OLE Görüntüleyicisi ve Microsoft Ana Sınıfları (MFC) Sürüm 4\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
Description = MFC 4, birtakım uygulamalar için gereklidir. Şunları içerir: mfc40.dll, msvcrt40.dll.\r
Size = 865,04 KB\r
\r
[Section.0422]\r
Name = Переглядач OLE та MFC (Microsoft Foundation Classes) версія 4\r
-Licence = Невідома\r
+License = Невідома\r
Description = Бібліотека MFC 4 необхідна декотрим програмам. включає: mfc40.dll, msvcrt40.dll.\r
\r
[Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = MFC 4 is nodig voor bepaalde applicaties. Bevat: mfc40.dll, msvcrt40.dll.\r
[Section]
Name = MikTEX 2.9
Version = 2.9.5105
-Licence = Freeware
+License = Freeware
Description = MiKTeX is an up-to-date implementation of TeX/LaTeX and related programs for Windows.
Size = 163.18 MB
Category = 6
Description = MiKTeX ist eine aktuelle Implementierung von TeX/LaTeX und zugehöriger Programme für Windows.
[Section.0418]
-Licence = Gratuită
+License = Gratuită
Description = MikTEX este o implementare actualizată de TeX/LaTeX și aprogramelor aferente.
Size = 163,18 Mo
[Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
Description = MiKTeX, Windows için, TeX'in, LaTeX'in ve ilişkili izlencelerin bir şimdiki uygulaması.
Size = 163,18 MB
[Section]\r
Name = Miranda IM\r
Version = 0.10.24\r
-Licence = GPL\r
+License = GPL\r
Description = Open source multiprotocol instant messaging application - May not work completely.\r
Size = 3.77 MB\r
Category = 5\r
[Section]\r
Name = mIRC 7\r
Version = 7.36\r
-Licence = Shareware\r
+License = Shareware\r
Description = The most popular client for the Internet Relay Chat (IRC).\r
Size = 2.17 MB\r
Category = 5\r
Description = Najpopularniejszy klient IRC (Internet Relay Chat).\r
\r
[Section.0418]\r
-Licence = Versiune de evaluare\r
+License = Versiune de evaluare\r
Description = Cel mai popular client de IRC (Internet Relay Chat).\r
Size = 2,17 Mo\r
\r
[Section.041f]\r
-Licence = Paylaşımlı\r
+License = Paylaşımlı\r
Description = Umûmî Ağ Eş Zamanlı Söyleşi (IRC) için en çok tutulan istemci.\r
Size = 2,17 MB\r
\r
[Section]\r
Name = mIRC 6\r
Version = 6.35\r
-Licence = Shareware\r
+License = Shareware\r
Description = The most popular client for the Internet Relay Chat (IRC).\r
Size = 1.67 MB\r
Category = 5\r
Description = Najpopularniejszy klient IRC (Internet Relay Chat).\r
\r
[Section.0418]\r
-Licence = Versiune de evaluare\r
+License = Versiune de evaluare\r
Description = Cel mai popular client de IRC (Internet Relay Chat).\r
Size = 1,67 Mo\r
\r
[Section.041f]\r
-Licence = Paylaşımlı\r
+License = Paylaşımlı\r
Description = Umûmî Ağ Eş Zamanlı Söyleşi (IRC) için en çok tutulan istemci.\r
Size = 1,67 MB\r
\r
[Section]\r
Name = Mono .NET Development Framework\r
Version = 3.2.3\r
-Licence = Unknown\r
+License = Unknown\r
Description = Open-source .NET Framework.\r
Size = 98.49 MB\r
Category = 14\r
Description = Pakiet Mono .NET Framework dla Programistów.\r
\r
[Section.0418]\r
-Licence = Nespecificată\r
+License = Nespecificată\r
Description = Platformă .NET (cu surse deschise).\r
Size = 98,49 Mo\r
\r
[Section.041f]\r
Name = Mono .NET Geliştirme Çatısı\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
Description = Açık kaynak .NET Çatısı.\r
Size = 98,49 MB\r
\r
[Section]\r
Name = Media Player Classic Home Cinema\r
Version = 1.7.7\r
-Licence = GPL\r
+License = GPL\r
Description = A media player.\r
Size = 10.7 MB\r
Category = 2\r
[Section]
Name = Mpxplay
Version = 1.60b
-Licence = GPL
+License = GPL
Description = Mpxplay is a 32-bit console audio player for Windows. You need 7-Zip or a similar Utility to extract it.
Size = 520 kB
Category = 1
[Section]\r
Name = Microsoft XML 3\r
Version = 3.0\r
-Licence = Unknown\r
+License = Unknown\r
Description = MSXML3 is needed for some MSI Installers. Contains: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
Size = 1.85 MB\r
Category = 14\r
CDPath = none\r
\r
[Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
Description = MSXML3 wird von einigen MSI Installern benötigt. Beinhaltet: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
\r
[Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
Description = MSXML3 para varios instaladores MSI. Incluye: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
\r
[Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
Description = MSXML3 est nécessaire pour certains installateurs MSI. Contient: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
Size = 1,85 Mo\r
\r
[Section.0410]\r
-Licence = Sconosciuto\r
+License = Sconosciuto\r
Description = MSXML3 è necessario per alcuni installatori MSI. Contiene: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
\r
[Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = MSXML3 is nodig voor bepaalde MSI installaties. Bevat: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
\r
[Section.0415]\r
-Licence = Nieznana\r
+License = Nieznana\r
Description = Niektóre spośród plików instalacyjnych MSI potrzebują parsera MSXML3. Zawiera: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
\r
[Section.0418]\r
-Licence = Nespecificată\r
+License = Nespecificată\r
Description = MSXML3 este necesar unor Instalatori MSI. Conține: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
Size = 1,85 Mo\r
\r
[Section.041f]\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
Description = MSXML3, birtakım Microsoft Yükleyicileri için gereklidir. Şunları içerir: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
Size = 1,85 MB\r
\r
[Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
Description = MSXML3 необхідна для декотрих MSI інсталяторів. включає: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
\r
[Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = MSXML3 is nodig voor bepaalde MSI installaties. Bevat: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
[Section]\r
Name = Microsoft .NET Framework Version 1.1 Redistributable Package\r
Version = 1.1\r
-Licence = Unknown\r
+License = Unknown\r
Description = Microsoft .NET Framework Version 1.1 - Redistributable Package.\r
Size = 23.14 MB\r
Category = 14\r
URLDownload = http://download.microsoft.com/download/c/9/f/c9f672f3-c14b-4cff-9671-d419842d792d/dotnetfx.exe\r
\r
[Section.0418]\r
-Licence = Nespecificată\r
+License = Nespecificată\r
Description = Platforma Microsoft .NET versiunea 1.1 - Pachet redistributabil.\r
Size = 23,14 Mo\r
\r
[Section.041f]\r
Name = Microsoft .NET Çatısı Sürüm 1.1 Yeniden Dağıtılabilir Paket\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
Description = Microsoft .NET Çatısı Sürüm 1.1 - Yeniden Dağıtılabilir Paket\r
Size = 23,14 MB\r
URLSite = http://www.microsoft.com/tr-TR/download/details.aspx?id=26\r
[Section]\r
Name = Microsoft .NET Framework Version 2.0 Redistributable Package\r
Version = 2.0\r
-Licence = Unknown\r
+License = Unknown\r
Description = Microsoft .NET Framework Version 2.0 - Redistributable Package.\r
Size = 22.42 MB\r
Category = 14\r
Description = Microsoft .NET Framework Wersja 2.0 - Pakiet Dystrybucyjny.\r
\r
[Section.0418]\r
-Licence = Nespecificată\r
+License = Nespecificată\r
Description = Platforma Microsoft .NET versiunea 2.0 - Pachet redistributabl.\r
Size = 22,42 Mo\r
\r
[Section.041f]\r
Name = Microsoft .NET Çatısı Sürüm 2.0 Yeniden Dağıtılabilir Paket\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
Description = Microsoft .NET Çatısı Sürüm 2.0 - Yeniden Dağıtılabilir Paket\r
Size = 22,42 MB\r
[Section]\r
Name = Microsoft .NET Framework Version 2.0 Service Pack 2\r
Version = 2.0SP2\r
-Licence = Unknown\r
+License = Unknown\r
Description = Microsoft .NET Framework Version 2.0 Service Pack 2.\r
Size = 23.84 MB\r
Category = 14\r
URLSite = http://www.microsoft.com/pl-PL/download/details.aspx?id=1639\r
\r
[Section.0418]\r
-Licence = Nespecificată\r
+License = Nespecificată\r
Description = Platforma Microsoft .NET versiunea 2.0 - Service Pack 2.\r
Size = 23,84 Mo\r
\r
[Section.041f]\r
Name = Microsoft .NET Çatısı Sürüm 2.0 Hizmet Paketi 2\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
Description = Microsoft .NET Çatısı Sürüm 2.0 - Hizmet Paketi 2\r
Size = 23,84 MB\r
URLSite = http://www.microsoft.com/tr-TR/download/details.aspx?id=1639\r
[Section]
Name = NirLauncher
Version = 1.19.5
-Licence = Freeware
+License = Freeware
Description = A package of more than 180 utilities for Windows.
Size = 20.2 MB
Category = 12
Description = Ein Paket von mehr als 180 Utilities für Windows.
[Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
Description = Windows için 180 araçtan daha çoğunun bir paketi.
[Section]
Name = Notepad++
Version = 6.6.9
-Licence = GPL
+License = GPL
Description = A text editor.
Size = 7.58 MB
Category = 6
[Section]\r
Name = Off By One Browser\r
Version = 3.5d\r
-Licence = Freeware\r
+License = Freeware\r
Description = The Off By One Browser is a very small and fast web browser with full HTML 3.2 support.\r
Size = 1010.89 kB\r
Category = 5\r
Description = Bardzo mała i szybka przeglądarka internetowa z pełną obsługą HTML 3.2.\r
\r
[Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
Description = Un navigator web foarte mic și rapid compatibil cu HTML 3.2.\r
Size = 1010,89 ko\r
\r
[Section.041f]\r
Name = Off By One Tarayıcı\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
Description = Off By One Tarayıcı, eksiksiz HTML 3.2 desteğiyle çok küçük ve hızlı bir Umûmî Ağ tarayıcısıdır.\r
Size = 1010,89 KB\r
\r
[Section]\r
Name = OpenOffice 4.1\r
Version = 4.1.1\r
-Licence = LGPL\r
+License = LGPL\r
Description = The open source office suite.\r
Size = 140.9 MB\r
Category = 6\r
[Section]\r
Name = OpenOffice 2.4\r
Version = 2.4.3\r
-Licence = LGPL\r
+License = LGPL\r
Description = The open source office suite.\r
Size = 113 MB\r
Category = 6\r
[Section]\r
Name = OpenTTD\r
Version = 1.4.4\r
-Licence = GPL v2\r
+License = GPL v2\r
Description = Open Source clone of the "Transport Tycoon Deluxe" game engine. You need a copy of Transport Tycoon.\r
Size = 7.0 MB\r
Category = 4\r
Size = 7,0 Mo\r
\r
[Section.041f]\r
-Licence = GPL 2. sürüm\r
+License = GPL 2. sürüm\r
Description = "Transport Tycoon Deluxe" oyun motorunun açık kaynak taklidi. Transport Tycoon'un bir kopyası gerekir.\r
Size = 7,0 MB\r
\r
[Section]\r
Name = Opera\r
Version = 12.17\r
-Licence = Freeware\r
+License = Freeware\r
Description = The popular Opera Browser with many advanced features and including a Mail and BitTorrent client.\r
Size = 12.57 MB\r
Category = 5\r
Description = Popularna przeglądarka internetowa z wieloma zaawansowanymi funkcjami, zawierająca klientów: poczty oraz BitTorrent.\r
\r
[Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
Description = Navigatorul popular Opera cu multe funcționalități avansate incluzând poștă electronică și un client de BitTorrent.\r
Size = 12,57 Mo\r
\r
Description = Популярный браузер со многими дополнительными возможностями, включающий клиентов почты и BitTorrent.\r
\r
[Section.041f]\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
Description = Bir posta ve BitTorrent istemcisini kapsayan birçok gelişmiş husûsiyetle, tutulan Opera Tarayıcı.\r
Size = 12,57 MB\r
\r
[Section]\r
Name = Opera\r
Version = 9.64\r
-Licence = Freeware\r
+License = Freeware\r
Description = The popular Opera Browser with many advanced features and including a Mail and BitTorrent client.\r
Size = 7.21 MB\r
Category = 5\r
Description = Popularna przeglądarka internetowa z wieloma zaawansowanymi funkcjami, zawierająca klientów: poczty oraz BitTorrent.\r
\r
[Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
Description = Navigatorul popular Opera cu multe funcționalități avansate incluzând poștă electronică și un client de BitTorrent.\r
Size = 7,21 Mo\r
\r
Description = Популярный браузер со многими дополнительными возможностями, включающий клиентов почты и BitTorrent.\r
\r
[Section.041f]\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
Description = Bir posta ve BitTorrent istemcisini kapsayan birçok gelişmiş husûsiyetle, tutulan Opera Tarayıcı.\r
Size = 7,21 MB\r
\r
[Section]
Name = PeaZip
Version = 5.5.0
-Licence = LGPL v3, OpenCandy EULA
+License = LGPL v3, OpenCandy EULA
Description = PeaZip is a free, cross-platform, open source file and archive manager. It supports over 150 archive formats.
Size = 5.9 MB
Category = 12
Size = 5,9 Mo
[Section.041f]
-Licence = LGPL 3. sürüm, OpenCandy EULA
+License = LGPL 3. sürüm, OpenCandy EULA
Description = PeaZip; ücretsiz, çapraz platform, açık kaynak kütük ve belgelik yöneticisidir. 150'den çok belgelikleme biçimini destekler.
Size = 5,9 MB
[Section]
Name = Pengupop
Version = 2.2.3
-Licence = GPL
+License = GPL
Description = The purpose of this game is to shoot colored orbs into your playfield, so they form groups of three or more.
Size = 384 kB
Category = 4
[Section]
Name = PhotoFiltre 7
Version = 7.1.2
-Licence = Freeware
+License = Freeware
Description = This version with layers but more limited than the Studio X version. PhotoFiltre Studio is a complete image retouching program.
Size = 4.99 MB
Category = 3
Description = Questa versione con pannelli ma più limitata della versione Studio X. PhotoFiltre Studio è un programma di fotoritocco completo.
[Section.0418]
-Licence = Gratuită
+License = Gratuită
Description = PhotoFiltre Studio este o aplicație completă de retușare a imaginilor.
Size = 4,99 Mo
[Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
Description = Bu sürüm, katmanlarla gelmektedir ancak Studio X sürümünden daha kısıtlıdır. PhotoFiltre Studio eksiksiz bir resim düzeltme yazılımıdır.
Size = 4,99 MB
[Section]
Name = Pingus
Version = 0.7.6
-Licence = GPL
+License = GPL
Description = Pingus is a free Lemmings-like puzzle game.
Size = 16.0 MB
Category = 4
[Section]
Name = Microsoft Powerpoint Viewer
Version = 2010
-Licence = Unknown
+License = Unknown
Description = Microsoft Powerpoint Viewer
Size = 60.28 MB
Category = 6
CDPath = none
[Section.0407]
-Licence = Unbekannt
+License = Unbekannt
Size = 60.43 MB
URLDownload = http://download.microsoft.com/download/9/F/7/9F742C8F-8C70-4498-B4D1-539BE36A1077/PowerPointViewer.exe
[Section.040a]
-Licence = Desconocida
+License = Desconocida
Size = 60.48 MB
URLDownload = http://download.microsoft.com/download/C/1/A/C1AAD042-4407-4470-97CB-863B869F9EDF/PowerPointViewer.exe
[Section.040c]
-Licence = Inconnue
+License = Inconnue
Size = 60,41 Mo
URLDownload = http://download.microsoft.com/download/6/B/4/6B4CA627-C0CD-4B27-BE31-0B87AE10F46B/PowerPointViewer.exe
[Section.0410]
-Licence = Sconosciuta
+License = Sconosciuta
Size = 60.38 MB
URLDownload = http://download.microsoft.com/download/3/F/A/3FA9171A-B310-4F0D-A33A-B16827536FAE/PowerPointViewer.exe
[Section.0413]
-Licence = Ongekend
+License = Ongekend
Size = 60.33 MB
URLDownload = http://download.microsoft.com/download/9/A/8/9A89B545-E4F4-498C-B265-D74CBB89F4D9/PowerPointViewer.exe
[Section.0415]
-Licence = Nieznana
+License = Nieznana
Size = 60.43 MB
URLDownload = http://download.microsoft.com/download/9/E/4/9E4A5F9A-210D-44B7-ADA2-F47CE00541ED/PowerPointViewer.exe
[Section.0418]
Name = Lector Microsoft Powerpoint
-Licence = Necunoscută
+License = Necunoscută
Description = Lector Microsoft Powerpoint
Size = 60,4 Mo
URLDownload = http://download.microsoft.com/download/5/6/E/56E4DBA3-D725-43EA-B1E5-DC148022999C/PowerPointViewer.exe
[Section.041f]
Name = Microsoft Powerpoint Görüntüleyici
-Licence = Bilinmiyor
+License = Bilinmiyor
Description = Microsoft Powerpoint Görüntüleyici
Size = 60,4 MB
URLDownload = http://download.microsoft.com/download/4/6/4/4641DACB-5DE8-4E3A-B8F4-39A1C73889D3/PowerPointViewer.exe
[Section.0422]
-Licence = Невідома
+License = Невідома
Size = 60.52 MB
URLDownload = http://download.microsoft.com/download/C/E/8/CE879E6E-D3F3-4234-A968-9651A3A85D98/PowerPointViewer.exe
[Section.0813]
-Licence = Ongekend
+License = Ongekend
Size = 60.33 MB
URLDownload = http://download.microsoft.com/download/9/A/8/9A89B545-E4F4-498C-B265-D74CBB89F4D9/PowerPointViewer.exe
[Section]
Name = Precise Calculator
Version = 2.5
-Licence = GPLv3
+License = GPLv3
Description = Precise Calculator is a free and open source scientific calculator for Windows. You need a ZIP decompression program to install it.
Size = 151 kB
Category = 11
CDPath = none
[Section.041f]
-Licence = GPL 3. sürüm
+License = GPL 3. sürüm
Description = Precise Hesap Makinesi, Windows için özgür ve açık kaynak bir bilimlik hesap makinesidir. Kurmak için bir ZIP çıkartma izlencesi gerekir.
Size = 151 KB
[Section]
Name = PSPad
Version = 4.5.8
-Licence = Freeware
+License = Freeware
Description = A text editor.
Size = 4.46 MB
Category = 6
Description = Edytor tekstu.
[Section.0418]
-Licence = Gratuită
+License = Gratuită
Description = Un editor de text.
Size = 4,46 Mo
URLSite = http://www.pspad.com/sk/
[Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
Description = Bir metin düzenleyicisi.
Size = 4,46 MB
[Section]
Name = Pocket Tanks
Version = 1.6
-Licence = Shareware
+License = Shareware
Description = The fastest game of artillery you'll ever play.
Size = 2.86 MB
Category = 4
Description = Szybka gra artyleryjska
[Section.0418]
-Licence = Versiune de evaluare
+License = Versiune de evaluare
Description = Cel mai rapid joc de artilerie pe care-l veți juca vreodată.
Size = 2,86 Mo
[Section.041f]
-Licence = Paylaşımlı
+License = Paylaşımlı
Description = Şimdiye dek oynayacağınız en hızlı topçuluk oyunu.
Size = 2,86 MB
[Section]\r
Name = PuTTY\r
Version = 0.63\r
-Licence = MIT\r
+License = MIT\r
Description = A free SSH, Telnet, rlogin, and raw TCP client.\r
Size = 1.78 MB\r
Category = 5\r
[Section]
Name = Python 3
Version = 3.4.2
-Licence = GPL/LGPL
+License = GPL/LGPL
Description = A remarkably powerful dynamic programming language.
Size = 23.39 MB
Category = 7
[Section]\r
Name = Python 2\r
Version = 2.7.8\r
-Licence = GPL/LGPL\r
+License = GPL/LGPL\r
Description = A remarkably powerful dynamic programming language.\r
Size = 15.93 MB\r
Category = 7\r
[Section]
Name = QB64 (SDL version)
Version = 0.980
-Licence = Freeware
+License = Freeware
Description = QB64 is a self-hosting BASIC compiler for Microsoft Windows, Linux and Mac OS X, designed to be compatible with Microsoft QBasic and Microsoft QuickBASIC. You need 7-Zip or a similar utility to extract it.
Size = 39.0 MB
Category = 7
Description = QB64 to kompilator BASIC zdolny do kompilacji własnego kodu źródłowego. Działa w systemach Windows, Linux i Mac OS X. Jest kompatybilny z Microsoft QBasic i QuickBASIC. Wymaga programu archiwizującego do wypakowania.
[Section.0418]
-Licence = Gratuită
+License = Gratuită
Description = QB64 este un compilator BASIC auto-compilabil pentru Windows, Linux și Mac OS X, conceput pentru a fi compatibil cu Microsoft QBasic și Microsoft QuickBASIC. Este necesar un utilitar de derarhivare de tip ZIP.
Size = 39,0 Mo
[Section.041f]
Name = QB64 (SDL sürümü)
-Licence = Ücretsiz
+License = Ücretsiz
Description = QB64; Microsoft Windows, Linux ve Mac OS X için, Microsoft QBasic ve Microsoft QuickBASIC ile uyumlu olacak biçimde tasarlanmış, kendi kendini derleyen bir BASIC derleyicisidir. Çıkartmak için 7-Zip ya da benzeri bir yazılım kullanmanız gerekir.
Size = 39,0 MB
[Section]
Name = Qmmp (Qt-based Multimedia Player)
Version = 0.8.2
-Licence = GPL
+License = GPL
Description = Qmmp is an audio-player, written with the help of the Qt library. The user interface is similar to WinAMP or XMMS. Alternative user interfaces also are available.
Size = 12.66 MB
Category = 1
[Section]\r
Name = ReMooD\r
Version = 0.8a\r
-Licence = GPL\r
+License = GPL\r
Description = ReMooD is a source port of Doom Legacy. It aims to provide the classic Legacy experience with new features and more stability.\r
Size = 1.15 MB\r
Category = 4\r
[Section]
Name = Resource Hacker
Version = 3.6.0
-Licence = Freeware
+License = Freeware
Description = Resource Hacker is a freeware utility to view, modify, rename, add, delete and extract resources in 32bit & 64bit Windows executables and resource files (*.res).
Size = 730 kB
Category = 7
Description = Resource Hacker to darmowe narzędzie do podglądu, modyfikacji, zmiany nazw, dodawania, kasowania i wypakowywania zasobów w plikach wykonywalnych 32bit i 64bit, oraz w plikach zasobów (*.res).
[Section.0418]
-Licence = Gratuită
+License = Gratuită
Description = Resource Hacker este un utilitar gratuit pentru inspectarea, modificarea, redenumirea, adăugarea, ștergerea și extragerea resurselor din fișierele resursă (*.res) și fișierele executabile pe 32 și 64 de biți pentru Windows.
Size = 730 ko
[Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
Description = Resoure Hacker, 32 ve 64 bitlik Windows çaılştırılabilirlerindeki ve kaynak kütüklerindeki (*.res) kaynakları görüntülemek, değiştirmek, yeniden adlandırmak, eklemek, silmek ve çıkartmak için ücretsiz bir araçtır.
Size = 730 KB
[Section]
Name = Rocks'n'Diamonds
Version = 3.3.1.2
-Licence = GPL v2
+License = GPL v2
Description = Arcade style game for UNIX, Mac OS X, Windows and DOS in the tradition of: "Boulder Dash" (C64), "Emerald Mine" (Amiga), "Supaplex" (Amiga/PC), "Sokoban" (PC). You need a ZIP decompression program to install it.
Size = 2.42 MB
Category = 4
Size = 2,42 Mo
[Section.041f]
-Licence = GPL 2. sürüm
+License = GPL 2. sürüm
Description = "Boulder Dash" (C64), "Emerald Mine" (Amiga), "Supaplex" (Amiga/PC), "Sokoban" (PC) gelenekleri içinde; UNIX, Mac OS X, Windows ve DOS için atari oyun salonu türünde oyun. Kurmak için bir ZIP çıkartma izlencesi gerekir.
Size = 2,42 MB
[Section]\r
Name = ReactOS Build Environment\r
Version = 2.1.1\r
-Licence = GPL\r
+License = GPL\r
Description = Allows you to build the ReactOS Source. For more instructions see ReactOS wiki.\r
Size = 28.3 MB\r
Category = 7\r
[Section]\r
Name = ReactOS Build Environment AMD64 Addon\r
Version = 1.3\r
-Licence = GPL\r
+License = GPL\r
Description = Allows you to build the ReactOS AMD64 Source. For more instructions see ReactOS wiki.\r
Size = 15.83 MB\r
Category = 7\r
[Section]\r
Name = ReactOS Build Environment ARM Addon\r
Version = 1.0\r
-Licence = GPL\r
+License = GPL\r
Description = Allows you to build the ReactOS ARM Source. For more instructions see ReactOS wiki.\r
Size = 11.15 MB\r
Category = 7\r
[Section]\r
Name = Samba TNG\r
Version = 0.5-RC1\r
-Licence = GPL\r
+License = GPL\r
Description = This tool allows you to access your Windows shared folders/printers with ReactOS.\r
Size = 2.13 MB\r
Category = 5\r
[Section]\r
Name = SoundBlaster Driver for VMWare\r
Version = 5.12.1.5017\r
-Licence = Unknown\r
+License = Unknown\r
Description = Unzip in the ReactOS's folder then restart ReactOS twice.\r
Size = 2.22 MB\r
Category = 13\r
\r
[Section.0405]\r
Name = Ovladač SoundBlaster pro VMWare\r
-Licence = Neznámá\r
+License = Neznámá\r
Description = Rozbalte do složky "ReactOS" a pak ReactOS dvakrát restartujte.\r
\r
[Section.0407]\r
Name = SoundBlaster Treiber für VMWare\r
-Licence = Unbekannt\r
+License = Unbekannt\r
Description = Entpacken in das "ReactOS"-Verzeichnis und ReactOS zweimal neustarten.\r
\r
[Section.040a]\r
Name = Driver SoundBlaster para VMWare\r
-Licence = Desconocida\r
+License = Desconocida\r
Description = Descomprimir en la carpeta "Reactos" y reiniciar Reactos dos veces.\r
\r
[Section.040c]\r
Name = Pilote SoundBlaster pour VMWare\r
-Licence = Inconnue\r
+License = Inconnue\r
Description = Dézippez dans le répertoire "ReactOS" puis redémarrez deux fois.\r
Size = 2,22 Mo\r
\r
[Section.0410]\r
Name = Driver SoundBlaster per VMWare\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
Description = Estrarre nella cartella "ReactOS" e riavviare ReactOS due volte.\r
\r
[Section.0413]\r
Name = SoundBlaster Driver voor VMWare\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Pak uit in de "ReactOS" folder en start ReactOS tweemaal opnieuw op.\r
\r
[Section.0415]\r
Name = Sterownik SoundBlaster dla VMWare\r
-Licence = Nieznana\r
+License = Nieznana\r
Description = Rozpakuj zawartość w folderze "ReactOS" i dwukrotnie zrestartuj system.\r
\r
[Section.0418]\r
Name = Modul pilot SoundBlaster pentru VMWare\r
-Licence = Nespecificată\r
+License = Nespecificată\r
Description = Dezarhivați în dosarul ReactOS apoi reporniți ReactOS de două ori.\r
Size = 2,22 Mo\r
\r
[Section.0419]\r
Name = Драйвер SoundBlaster для VMWare\r
-Licence = Не указано\r
+License = Не указано\r
Description = Pазархивируйте содержимое в папку "ReactOS", затем дважды перезагрузите систему.\r
\r
[Section.041f]\r
Name = VMWare için SoundBlaster Sürücüsü\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
Description = ReactOS'un dizinine çıkartınız, sonra bilgisayarı iki kez yeniden başlatınız.\r
Size = 2,22 MB\r
\r
[Section.0422]\r
Name = Драйвер SoundBlaster для VMWare\r
-Licence = Невідома\r
+License = Невідома\r
Description = Pозархівуйте вміст в теку "ReactOS" після чого двічі перезавантажте систему.\r
\r
[Section.0813]\r
Name = SoundBlaster Driver voor VMWare\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Pak uit in de "ReactOS" folder en start ReactOS tweemaal opnieuw op.\r
[Section]\r
Name = SciTE\r
Version = 3.5.1\r
-Licence = Freeware\r
+License = Freeware\r
Description = SciTE is a SCIntilla based text editor. Originally built to demonstrate Scintilla, it has grown to be a generally useful editor with facilities for building and running programs.\r
Size = 744 kB\r
Category = 7\r
Description = SciTE to edytor tekstu bazowany na SCIntilla. Oryginalnie stworzony aby pokazać Scintille, stał sie ogólnie przydatnym edytorem z infrastrukturą potrzebną do tworzenia i uruchamiania programów.\r
\r
[Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
Description = SciTE este un editor de text bazat pe SCIntilla. Construit inițial pentru a demonstra Scintilla, a crescut ulterior într-un editor de uz general cu funcționalități de compilare și execuție a programelor.\r
Size = 744 ko\r
\r
[Section.041f]\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
Description = SciTE, bir Scintilla tabanlı metin düzenleyicisidir. İlk başta Scintilla'yı göstermek için yapıldı; izlenceleri yapmak ve çalıştırmak yetenekleriyle, umûmiyetle kullanışlı bir düzenleyici olmak için gelişti.\r
Size = 744 KB\r
\r
[Section]\r
Name = ScummVM\r
Version = 1.7.0\r
-Licence = GPL\r
+License = GPL\r
Description = Software that reproduce the working of graphical engine for videogames (Sam and Max, Day of the Tentacle, etc.) on ReactOS.\r
Size = 6.9 MB\r
Category = 4\r
[Section]\r
Name = Simple Direct Media Layer (SDL) Mixer\r
Version = 1.2.12\r
-Licence = LGPL\r
+License = LGPL\r
Description = Needed for some open source games to run. You need 7-Zip or a similar utility to extract it.\r
Size = 548.02 kB\r
Category = 14\r
[Section]\r
Name = Simple Direct Media Layer (SDL) Runtime\r
Version = 1.2.15\r
-Licence = LGPL\r
+License = LGPL\r
Description = Needed for many open source games to run. You need 7-Zip or a similar utility to extract it.\r
Size = 136.67 kB\r
Category = 14\r
[Section]\r
Name = Mozilla SeaMonkey\r
Version = 2.30\r
-Licence = MPL/GPL/LGPL\r
+License = MPL/GPL/LGPL\r
Description = Mozilla Suite is alive. This is the one and only Browser, Mail, Chat, and Composer bundle you will ever need.\r
Size = 30.05 MB\r
Category = 5\r
[Section]\r
Name = SMPlayer\r
Version = 14.9.0\r
-Licence = GPL\r
+License = GPL\r
Description = Graphical Frontend for MPlayer.\r
Size = 20.7 MB\r
Category = 2\r
[Section]
Name = Snoopy
Version = 1.0
-Licence = Freeware
+License = Freeware
Description = The original C64 Snoopy remake.
Size = 704 kB
Category = 4
Description = Il remake del gioco Snoopy per Commodore 64.
[Section.0418]
-Licence = Gratuită
+License = Gratuită
Description = Recrearea jocului Snoppy (original pe C64).
Size = 704 ko
[Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
Description = Özgün C64 Snoopy'in yeniden yapılmışı.
Size = 704 KB
\r
[Section]\r
Name = Steam\r
-Licence = Freeware\r
+License = Freeware\r
Description = The Steam gaming platform used by many games these days.\r
Size = 1.59 MB\r
Category = 4\r
URLSite = http://store.steampowered.com/?l=polish\r
\r
[Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
Description = Platforma de joc Steam, utilizată de multe jocuri în zilele de astăzi.\r
Size = 1,59 Mo\r
URLSite = http://store.steampowered.com/?l=romanian\r
\r
[Section.041f]\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
Description = Bugünlerde Steam oyun platformu birçok oyun eliyle kullanılmaktadır.\r
Size = 1,59 MB\r
URLSite = http://store.steampowered.com/?l=turkish\r
[Section]\r
Name = SumatraPDF\r
Version = 2.5.2\r
-Licence = GPLv3\r
+License = GPLv3\r
Description = Sumatra PDF is a slim, free, open-source PDF reader. Portable out of the box.\r
Size = 4.0 MB\r
Category = 6\r
URLSite = http://blog.kowalczyk.info/software/sumatrapdf/free-pdf-reader-ro.html\r
\r
[Section.041f]\r
-Licence = GPL 3. sürüm\r
+License = GPL 3. sürüm\r
Description = SumatraPDF; yeğni, ücretsiz ve açık kaynak bir PDF okuyucusudur. Kutunun dışında taşınabilirdir.\r
Size = 4,0 MB\r
\r
[Section]
Name = Summer Bound
Version = 1.4
-Licence = Freeware
+License = Freeware
Description = A game similar Frozen Fruits.
Size = 764 kB
Category = 4
Description = Un gioco simile a Frozen Fuits
[Section.0418]
-Licence = Gratuită
+License = Gratuită
Description = Un joc similar jocului Frozen Fruits.
Size = 764 ko
[Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
Description = Frozen Fruits'e benzeyen bir oyun.
Size = 764 KB
[Section]
Name = Super DX-Ball
Version = 1.1
-Licence = Shareware
+License = Shareware
Description = Super DX-Ball is a vibrant and colorful brick-breaking game.
Size = 3.8 MB
Category = 4
Description = Super DX-Ball - pełna koloru i animacji gra polegająca na zbijaniu klocków.
[Section.0418]
-Licence = Versiune de evaluare
+License = Versiune de evaluare
Description = Un joc ce implică spargerea de cărămizi.
Size = 3,8 Mo
[Section.041f]
-Licence = Paylaşımlı
+License = Paylaşımlı
Description = Super DX-Ball canlı ve renkli bir tuğla kırma oyunudur.
Size = 3,8 MB
[Section]\r
Name = Super Finder XT\r
Version = 1.6.3.2\r
-Licence = Freeware\r
+License = Freeware\r
Description = A fast and feature rich search application.\r
Size = 4.94 MB\r
Category = 12\r
Description = Szybka i bogata w opcje aplikacja szukająca.\r
\r
[Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
Description = Aplicație rapidă de căutări complexe de text.\r
Size = 4,94 Mo\r
\r
[Section.041f]\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
Description = Hızlı ve husûsiyet zengini bir arama uygulaması.\r
Size = 4,94 MB\r
\r
[Section]
Name = SuperTux
Version = 0.1.3
-Licence = GPL
+License = GPL
Description = SuperTux is a free, open-source two-dimensional platform game.
Size = 7.3 MB
Category = 4
[Section]\r
Name = Microsoft Tahoma Font\r
Version = 1.0\r
-Licence = Unknown\r
+License = Unknown\r
Description = Tahoma Font pack needed by some apps (Steam). Contains: Tahoma.ttf, Tahomabd.ttf.\r
Size = 305.12 kB\r
Category = 14\r
CDPath = none\r
\r
[Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
Description = Tahoma Font Pack, der von einigen Anwendungen benötigt wird (Steam). Beinhaltet: Tahoma.ttf, Tahomabd.ttf.\r
\r
[Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
Description = Paquete de fuente Tahoma, necesaria para ciertas aplicaciones (Steam). Incluye: Tahoma.ttf, Tahomabd.ttf.\r
\r
[Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
Description = Package pour la police Tahoma, nécessaire pour certaines applications (Steam). Contient: Tahoma.ttf, Tahomabd.ttf.\r
Size = 305,12 ko\r
\r
Description = Il font pack Tahoma è richiesto da alcune applicazioni (Steam). Contiene: Tahoma.ttf, Tahomabd.ttf.\r
\r
[Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Tahoma lettertypes gebruikt door een aantal programma's (Steam). Bevat: Tahoma.ttf, Tahomabt.ttf.\r
\r
[Section.0415]\r
Description = Pakiet Czcionki Tahoma wymagany przez niektóre programy (np. Steam). Zawiera: Tahoma.ttf, Tahomabd.ttf.\r
\r
[Section.0418]\r
-Licence = Necunoscută\r
+License = Necunoscută\r
Description = Pachetul Tahoma Font, necesar unor aplicații (Steam). Conține: Tahoma.ttf, Tahomabd.ttf.\r
Size = 305,12 ko\r
\r
[Section.041f]\r
Name = Microsoft Tahoma Yazı Tipi\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
Description = Tahoma Yazı Tipi paketi, Steam gibi birtakım uygulamalar için gereklidir. Şunları içerir: Tahoma.ttf, Tahomabd.ttf.\r
Size = 305,12 KB\r
\r
[Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
Description = Пакет шрифтів Tahoma, що необхідні деяким програмам (Steam). включає: Tahoma.ttf, Tahomabd.ttf.\r
\r
[Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Tahoma lettertypes gebruikt door een aantal programma's (Steam). Bevat: Tahoma.ttf, Tahomabt.ttf.\r
[Section]
Name = Mozilla Thunderbird 31
Version = 31.2.0
-Licence = MPL/GPL/LGPL
+License = MPL/GPL/LGPL
Description = The most popular and one of the best free Mail Clients out there.
Size = 25.25 MB
Category = 5
[Section]\r
Name = Mozilla Thunderbird\r
Version = 3.1.20\r
-Licence = MPL/GPL/LGPL\r
+License = MPL/GPL/LGPL\r
Description = The most popular and one of the best free Mail Clients out there.\r
Size = 9.06 MB\r
Category = 5\r
[Section]\r
Name = Tile World\r
Version = 1.3.0\r
-Licence = GPL\r
+License = GPL\r
Description = Nice clone of Chip's Challenge originally made for the Atari Lynx. Includes free CCLP2 Graphics Pack, so you dont need the copyrighted original.\r
Size = 1.16 MB\r
Category = 4\r
[Section]
Name = Total Commander
Version = 8.51a
-Licence = Shareware
+License = Shareware
Description = Total Commander is a file manager with two panels side by side.
Size = 3.55 MB
Category = 12
Description = Total Commander to popularny menedżer plików z dwoma panelami, ustawionymi obok siebie.
[Section.0418]
-Licence = Versiune de evaluare
+License = Versiune de evaluare
Description = Total Commander este un gestionar de fișiere după modelul «două paneluri alăturate».
Size = 3,55 Mo
[Section.041f]
-Licence = Paylaşımlı
+License = Paylaşımlı
Description = Total Commander, yan yana iki bölmeli bir kütük yöneticisidir.
Size = 3,55 MB
[Section]\r
Name = TuxPaint\r
Version = 0.9.22\r
-Licence = GPL\r
+License = GPL\r
Description = An open source bitmap graphics editor geared towards young children.\r
Size = 13.5 MB\r
Category = 3\r
[Section]\r
Name = UltraVNC\r
Version = 1.2.0.3\r
-Licence = GPL\r
+License = GPL\r
Description = Open source VNC client/server.\r
Size = 3.22 MB\r
Category = 5\r
[Section]\r
Name = µTorrent\r
Version = 3.4.2\r
-Licence = Freeware for non-commercial uses\r
+License = Freeware for non-commercial uses\r
Description = Small and fast BitTorrent Client.\r
Size = 1.61 MB\r
Category = 5\r
CDPath = none\r
\r
[Section.0407]\r
-Licence = Freeware für nichtkommerzielle Nutzung\r
+License = Freeware für nichtkommerzielle Nutzung\r
Description = Kleiner und schneller BitTorrent Client.\r
\r
[Section.040a]\r
-Licence = Gratuito para uso no comercial\r
+License = Gratuito para uso no comercial\r
Description = Pequeño y rápido cliente BitTorrent.\r
\r
[Section.040c]\r
-Licence = Gratuit pour une utilisation non-commerciale\r
+License = Gratuit pour une utilisation non-commerciale\r
Description = Client BitTorrent petit et rapide.\r
Size = 1,61 Mo\r
\r
[Section.040c]\r
-Licence = Gratita per un uso non-commerciale\r
+License = Gratita per un uso non-commerciale\r
Description = Piccolo e rapido Client BitTorrent.\r
\r
[Section.0410]\r
-Licence = Gratuita per un uso non-commerciale\r
+License = Gratuita per un uso non-commerciale\r
Description = Piccolo e rapido Client BitTorrent.\r
\r
[Section.0413]\r
-Licence = Freeware voor niet-commerciëel gebruik\r
+License = Freeware voor niet-commerciëel gebruik\r
Description = Kleine en snelle BitTorrent afnemer.\r
\r
[Section.0415]\r
-Licence = Freeware (do użytku domowego)\r
+License = Freeware (do użytku domowego)\r
Description = Mały i szybki klient BitTorrent.\r
\r
[Section.0418]\r
-Licence = Gratuită pentru uz necomercial\r
+License = Gratuită pentru uz necomercial\r
Description = Client BitTorrent, mic și rapid.\r
Size = 1,61 Mo\r
\r
[Section.0419]\r
-Licence = Бесплатная для некоммерческого использования\r
+License = Бесплатная для некоммерческого использования\r
Description = Маленький и быстрый клиент BitTorrent.\r
\r
[Section.041f]\r
-Licence = Tecimlik olmayan kullanımlar için ücretsiz.\r
+License = Tecimlik olmayan kullanımlar için ücretsiz.\r
Description = Küçük ve hızlı BitTorrent istemcisi.\r
Size = 1,61 MB\r
\r
[Section.0422]\r
-Licence = Безплатна для некомерційного використання\r
+License = Безплатна для некомерційного використання\r
Description = Маленький і швидкий клієнт BitTorrent.\r
\r
[Section.0813]\r
-Licence = Freeware voor niet-commerciëel gebruik\r
+License = Freeware voor niet-commerciëel gebruik\r
Description = Kleine en snelle BitTorrent afnemer.\r
[Section]\r
Name = Microsoft Visual Basic 5 Runtime\r
Version = 5.0\r
-Licence = Unknown\r
+License = Unknown\r
Description = Microsoft Visual Basic 5 Runtime. Contains: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
Size = 969.59 kB\r
Category = 14\r
CDPath = none\r
\r
[Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
Description = Microsoft Visual Basic 5 Laufzeitsystem. Beinhaltet: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
Description = Librerias Microsoft Visual Basic 5. Incluye: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
Description = Bibliothèque Microsoft Visual Basic 5. Contient: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
Size = 969,59 ko\r
\r
[Section.0410]\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
Description = Libreria Microsoft Visual Basic 5. Contiene: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Microsoft Visual Basic 5 Runtime. Bevat: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.0415]\r
-Licence = Nieznana\r
+License = Nieznana\r
Description = Biblioteki uruchomieniowe Microsoft Visual Basic 5. Zawiera: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.0418]\r
-Licence = Necunoscută\r
+License = Necunoscută\r
Description = Microsoft Visual Basic 5 Runtime. Conține: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
Size = 969,59 ko\r
\r
[Section.041f]\r
Name = Microsoft Visual Basic 5 Yürütücü\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
Description = Microsoft Visual Basic 5 Yürütücü. Şunları içerir: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
Size = 969,59 KB\r
\r
[Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
Description = Бібліотеки Microsoft Visual Basic 5. включає: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Microsoft Visual Basic 5 Runtime. Bevat: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
[Section]\r
Name = Microsoft Visual Basic 6 Runtime\r
Version = 6.0\r
-Licence = Unknown\r
+License = Unknown\r
Description = Microsoft Visual Basic 6 Runtime. Contains: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
Size = 1.02 MB\r
Category = 14\r
CDPath = none\r
\r
[Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
Description = Microsoft Visual Basic 6 Laufzeitsystem. Beinhaltet: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
Description = Librerias Microsoft Visual Basic 6. Incluye: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
Description = Bibliothèque Microsoft Visual Basic 6. Contient: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
Size = 1,02 Mo\r
\r
[Section.0410]\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
Description = Libreria Microsoft Visual Basic 6.Contiene: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Microsoft Visual Basic 6 Runtime. Bevat: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.0415]\r
-Licence = Nieznana\r
+License = Nieznana\r
Description = Biblioteki uruchomieniowe Microsoft Visual Basic 6. Zawiera: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.0418]\r
-Licence = Necunoscută\r
+License = Necunoscută\r
Description = Microsoft Visual Basic 6 Runtime. Conține: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
Size = 1,02 Mo\r
\r
[Section.041f]\r
Name = Microsoft Visual Basic 6 Yürütücü\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
Description = Microsoft Visual Basic 6 Yürütücü. Şunları içerir: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
Size = 1,02 MB\r
\r
[Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
Description = Бібліотеки Microsoft Visual Basic 6. включає: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Microsoft Visual Basic 6 Runtime. Bevat: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
[Section]\r
Name = Microsoft Visual C++ 2005 SP1 Redistributable Package\r
Version = 7.1\r
-Licence = Unknown\r
+License = Unknown\r
Description = Microsoft Visual Studio 2005 Runtime SP1. Contains: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
Size = 2.6 MB\r
Category = 14\r
CDPath = none\r
\r
[Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
Description = Microsoft Visual Studio 2005 Laufzeitsystem SP1. Beinhaltet: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
\r
[Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
Description = Librerias Microsoft Visual Studio 2005 SP1. Incluye: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
\r
[Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
Description = Bibliothèque Microsoft Visual Studio 2005 SP1. Contient: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
Size = 2,6 Mo\r
\r
[Section.0410]\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
Description = Microsoft Visual Studio 2005 Runtime SP1. Contiene: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
\r
[Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Microsoft Visual Studio 2005 Runtime SP1. Bevat: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
\r
[Section.0415]\r
-Licence = Nieznana\r
+License = Nieznana\r
Description = Biblioteki uruchomieniowe Microsoft Visual Studio 2005 SP1. Zawiera: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
\r
[Section.0418]\r
-Licence = Necunoscută\r
+License = Necunoscută\r
Description = Microsoft Visual Studio 2005 Runtime SP1. Conține: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
Size = 2,6 Mo\r
\r
[Section.041f]\r
Name = Microsoft Visual C++ 2005 SP1 Yeniden Dağıtılabilir Paket\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
Description = Microsoft Visual Studio 2005 Yürütücü SP1. Şunları içerir: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
Size = 2,6 MB\r
\r
[Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
Description = Бібліотеки Microsoft Visual Studio 2005 SP1. включає: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
\r
[Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Microsoft Visual Studio 2005 Runtime SP1. Bevat: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
[Section]\r
Name = Microsoft Visual C++ 2008 SP1 Redistributable Package\r
Version = 8.0\r
-Licence = Unknown\r
+License = Unknown\r
Description = Microsoft Visual Studio 2008 SP1 Runtime. Contains: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
Size = 4.02 MB\r
Category = 14\r
CDPath = none\r
\r
[Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
Description = Microsoft Visual Studio 2008 SP1 Laufzeitsystem. Enthält: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
\r
[Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
Description = Librerias Microsoft Visual Studio 2008 SP1. Incluye: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
\r
[Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
Description = Bibliothèque Microsoft Visual Studio 2008 SP1. Contient: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
Size = 4,02 Mo\r
\r
[Section.0410]\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
Description = Microsoft Visual Studio 2008 Runtime SP1. Contiene: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
\r
[Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Microsoft Visual Studio 2008 SP1 Runtime. Bevat: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
\r
[Section.0415]\r
-Licence = Nieznana\r
+License = Nieznana\r
Description = Biblioteki uruchomieniowe Microsoft Visual Studio 2008 SP1. Zawiera: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
\r
[Section.0418]\r
-Licence = Necunoscută\r
+License = Necunoscută\r
Description = Microsoft Visual Studio 2008 SP1 Runtime. Conține: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
Size = 4,02 Mo\r
\r
[Section.041f]\r
Name = Microsoft Visual C++ 2008 SP1 Yeniden Dağıtılabilir Paket\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
Description = Microsoft Visual Studio 2008 SP1 Yürütücü. Şunları içerir: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
Size = 4,02 MB\r
\r
[Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
Description = Бібліотеки Microsoft Visual Studio 2008 SP1. включає: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
\r
[Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Microsoft Visual Studio 2008 SP1 Runtime. Bevat: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
[Section]
Name = Microsoft Visual C++ 2010 Redistributable Package
Version = 8.0
-Licence = Unknown
+License = Unknown
Description = Microsoft Visual Studio 2010 Runtime. Contains: atl100.dll, mfc100.dll, mfc100u.dll, mfcm100.dll, mfcm100u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
Size = 4.8 MB
Category = 14
CDPath = none
[Section.0407]
-Licence = Unbekannt
+License = Unbekannt
Description = Microsoft Visual Studio 2010 Laufzeitsystem. Beinhaltet: atl100.dll, mfc100.dll, mfc100u.dll, mfcm100.dll, mfcm100u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
[Section.040a]
-Licence = Desconocida
+License = Desconocida
Description = Librerias Microsoft Visual Studio 2010. Incluye: atl100.dll, mfc100.dll, mfc100u.dll, mfcm100.dll, mfcm100u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
[Section.040c]
-Licence = Inconnue
+License = Inconnue
Description = Bibliothèque Microsoft Visual Studio 2010. Contient: atl100.dll, mfc100.dll, mfc100u.dll, mfcm100.dll, mfcm100u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
Size = 4.8 Mo
[Section.0410]
-Licence = Sconosciuta
+License = Sconosciuta
Description = Libreria Microsoft Visual Studio 2010. Include: atl100.dll, mfc100.dll, mfc100u.dll, mfcm100.dll, mfcm100u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
[Section.0413]
-Licence = Ongekend
+License = Ongekend
Description = Microsoft Visual Studio 2010 Runtime. Bevat: atl100.dll, mfc100.dll, mfc90u.dll, mfcm100.dll, mfcm90u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
[Section.0415]
-Licence = Nieznana
+License = Nieznana
Description = Biblioteki uruchomieniowe Microsoft Visual Studio 2010. Zawiera: atl100.dll, mfc100.dll, mfc90u.dll, mfcm100.dll, mfcm90u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
[Section.0418]
-Licence = Necunoscută
+License = Necunoscută
Description = Microsoft Visual Studio 2010 Runtime. Conține: atl100.dll, mfc100.dll, mfc90u.dll, mfcm100.dll, mfcm90u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
Size = 4,8 Mo
[Section.041f]
Name = Microsoft Visual C++ 2010 Yeniden Dağıtılabilir Paket
-Licence = Bilinmiyor
+License = Bilinmiyor
Description = Microsoft Visual Studio 2010 Yürütücü. Şunları içerir: atl100.dll, mfc100.dll, mfc100u.dll, mfcm100.dll, mfcm100u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
Size = 4,8 MB
[Section.0422]
-Licence = Невідома
+License = Невідома
Description = Бібліотеки Microsoft Visual Studio 2010. включає: atl100.dll, mfc100.dll, mfc90u.dll, mfcm100.dll, mfcm90u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
[Section.0813]
-Licence = Ongekend
+License = Ongekend
Description = Microsoft Visual Studio 2010 Runtime. Bevat: atl100.dll, mfc100.dll, mfc90u.dll, mfcm100.dll, mfcm90u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
[Section]\r
Name = Microsoft Visual C++ 6 Redistributable Package\r
Version = 6.0\r
-Licence = Unknown\r
+License = Unknown\r
Description = Microsoft Visual Studio 6 Runtime. Contains: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
Size = 1.75 MB\r
Category = 14\r
CDPath = none\r
\r
[Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
Description = Microsoft Visual Studio 6 Laufzeitsystem. Beinhaltet: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
Description = Librerias Microsoft Visual Studio 6. Incluye: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
Description = Bibliothèque Microsoft Visual Studio 6. Contient: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
Size = 1,75 Mo\r
\r
[Section.0410]\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
Description = Microsoft Visual Studio 6 Runtime. Contiene: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Microsoft Visual Studio 6 Runtime. Bevat: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.0415]\r
-Licence = Nieznana\r
+License = Nieznana\r
Description = Biblioteki uruchomieniowe Microsoft Visual Studio 6. Zawiera: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.0418]\r
-Licence = Necunoscută\r
+License = Necunoscută\r
Description = Microsoft Visual Studio 6 Runtime. Conține: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
Size = 1,75 Mo\r
\r
[Section.041f]\r
Name = Microsoft Visual C++ 6 Yeniden Dağıtılabilir Paket\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
Description = Microsoft Visual Studio 6 Yürütücü. Şunları içerir: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
Size = 1,75 MB\r
\r
[Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
Description = Бібліотеки Microsoft Visual Studio 6. включає: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
\r
[Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
Description = Microsoft Visual Studio 6 Runtime. Bevat: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
[Section]\r
Name = VLC media player\r
Version = 2.1.5\r
-Licence = GPL\r
+License = GPL\r
Description = A media player.\r
Size = 23.6 MB\r
Category = 2\r
[Section]\r
Name = WinBoard\r
Version = 4.2.7b\r
-Licence = GPLv3\r
+License = GPLv3\r
Description = WinBoard is a graphical chessboard for the Windows/ReactOS that can serve as a user interface for GNU Chess, Crafty, and other chess engines, for the Internet chess servers, and for electronic mail correspondence chess.\r
Size = 5.93 MB\r
Category = 4\r
Size = 5,93 Mo\r
\r
[Section.041f]\r
-Licence = GPL 3. sürüm\r
+License = GPL 3. sürüm\r
Description = WinBoard, Umûmî Ağ satranç sunucularına ve postayla yazışmalı satranca GNU Chess, Crafty ve başka satranç motorlarını bir kullanıcı arayüzü olarak sunabilen, Windows/ReactOS için bir çizgelik satranç tahtasıdır.\r
Size = 5,93 MB\r
\r
[Section]\r
Name = Windows Media Encoder 9\r
Version = 9.0\r
-Licence = Unknown\r
+License = Unknown\r
Description = Windows Media Encoder 9\r
Size = 9.46 MB\r
Category = 14\r
CDPath = none\r
\r
[Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
\r
[Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
\r
[Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
Size = 9,46 Mo\r
\r
[Section.0410]\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
\r
[Section.0413]\r
License = Ongekend\r
\r
[Section.0415]\r
-Licence = Nieznana\r
+License = Nieznana\r
\r
[Section.0418]\r
-Licence = Necunoscută\r
+License = Necunoscută\r
Size = 9,46 Mo\r
\r
[Section.041b]\r
\r
[Section.041f]\r
Name = Windows Ortam Kodlayıcısı 9\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
Description = Windows Ortam Kodlayıcısı 9\r
Size = 9,46 MB\r
\r
[Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
\r
[Section.0813]\r
License = Ongekend\r
[Section]
Name = Microsoft Word Viewer
Version = 2003
-Licence = Unknown
+License = Unknown
Description = Microsoft Word Viewer
Size = 24.5 MB
Category = 6
CDPath = none
[Section.0407]
-Licence = Unbekannt
+License = Unbekannt
Size = 24.56 MB
URLDownload = http://download.microsoft.com/download/d/4/b/d4b23f0e-c8b6-4383-878d-1a8184b7db56/wordview_de-de.exe
[Section.040a]
-Licence = Desconocida
+License = Desconocida
Size = 24.53 MB
URLDownload = http://download.microsoft.com/download/4/4/c/44c2d552-8b40-464f-8470-b4976d7ba60b/wordview_es-es.exe
[Section.040c]
-Licence = Inconnue
+License = Inconnue
Size = 24,55 Mo
URLDownload = http://download.microsoft.com/download/b/f/3/bf36c75d-2e93-4db1-ace2-1425e5219260/wordview_fr-fr.exe
[Section.0410]
-Licence = Sconosciuta
+License = Sconosciuta
Size = 24.52 MB
URLDownload = http://download.microsoft.com/download/f/8/e/f8e9dadd-70bd-4317-a7fe-25d7bfb54b71/wordview_it-it.exe
[Section.0413]
-Licence = Ongekend
+License = Ongekend
Size = 24.54 MB
URLDownload = http://download.microsoft.com/download/c/1/0/c10e009e-61e2-4b54-8d21-aff378679527/wordview_nl-nl.exe
[Section.0415]
-Licence = Nieznana
+License = Nieznana
Size = 24.58 MB
URLDownload = http://download.microsoft.com/download/c/e/1/ce1e1286-67a2-4069-a8c4-b3552f18dfa8/wordview_pl-pl.exe
[Section.0418]
-Licence = Necunoscută
+License = Necunoscută
Size = 24,56 Mo
URLDownload = http://download.microsoft.com/download/1/2/3/123d3dc8-6f3f-473f-ac1d-3e38969605e8/wordview_ro-ro.exe
[Section.041f]
Name = Microsoft Word Görüntüleyici
-Licence = Bilinmiyor
+License = Bilinmiyor
Description = Microsoft Word Görüntüleyici
Size = 24,55 MB
URLDownload = http://download.microsoft.com/download/7/6/e/76efefb4-9575-4903-ac2a-180c280ab6c7/wordview_tr-tr.exe
[Section.0422]
-Licence = Невідома
+License = Невідома
Size = 24.56 MB
URLDownload = http://download.microsoft.com/download/2/b/d/2bd08f27-822b-4c20-936a-0f1d91cb9e69/wordview_uk-ua.exe
[Section.0813]
-Licence = Ongekend
+License = Ongekend
Size = 24.54 MB
URLDownload = http://download.microsoft.com/download/c/1/0/c10e009e-61e2-4b54-8d21-aff378679527/wordview_nl-nl.exe
[Section]
Name = Zaz
Version = 1.0.0
-Licence = GPL
+License = GPL
Description = Zaz is a free arcade action puzzle computer game, a little bit like Frozen Bubble.
Size = 21.0 MB
Category = 4
#define IDS_AINFO_DESCRIPTION 351
#define IDS_AINFO_SIZE 352
#define IDS_AINFO_URLSITE 353
-#define IDS_AINFO_LICENCE 354
+#define IDS_AINFO_LICENSE 354
/* Names of categories */
#define IDS_CAT_AUDIO 700
add_executable(taskmgr ${SOURCE} taskmgr.rc)
set_module_type(taskmgr win32gui UNICODE)
-add_importlibs(taskmgr advapi32 user32 gdi32 shell32 comctl32 msvcrt kernel32 ntdll)
+add_importlibs(taskmgr advapi32 user32 gdi32 shell32 shlwapi comctl32 msvcrt kernel32 ntdll)
add_pch(taskmgr precomp.h SOURCE)
add_cd_file(TARGET taskmgr DESTINATION reactos/system32 FOR all)
DECLARE_COLUMN_PRESET(IOREADBYTES, 70, FALSE)
DECLARE_COLUMN_PRESET(IOWRITEBYTES, 70, FALSE)
DECLARE_COLUMN_PRESET(IOOTHERBYTES, 70, FALSE)
+ DECLARE_COLUMN_PRESET(COMMANDLINE, 450, FALSE)
};
static int InsertColumn(int nCol, LPCWSTR lpszColumnHeading, int nFormat, int nWidth, int nSubItem);
#define COLUMN_IOREADBYTES 22
#define COLUMN_IOWRITEBYTES 23
#define COLUMN_IOOTHERBYTES 24
-#define COLUMN_NMAX 25
+#define COLUMN_COMMANDLINE 25
+#define COLUMN_NMAX 26
/*
* temporary fix:
#define Column_IOWriteBytes Columns[COLUMN_IOWRITEBYTES]
#define Column_IOOther Columns[COLUMN_IOOTHER]
#define Column_IOOtherBytes Columns[COLUMN_IOOTHERBYTES]
+#define Column_CommandLine Columns[COLUMN_COMMANDLINE]
void ProcessPage_OnViewSelectColumns(void);
void AddColumns(void);
CONTROL "В/И байтове за писане", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 127, 65, 10
CONTROL "Други В/И", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 138, 115, 10
CONTROL "Други В/И байтове", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 149, 115, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "В/И прочетени байтове"
IDS_TAB_IOWRITESBYTES "В/И записани байтове"
IDS_TAB_IOOTHERBYTES "В/И други байтове"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Избор на стълбове..."
IDS_MENU_16BITTASK "&Показване на 16битови задачи"
IDS_MENU_WINDOWS "&Прозорци"
IDS_MSG_UNABLECHANGEPRIORITY "Невъзможно намаляване на първенство"
IDS_MSG_WARNINGCHANGEPRIORITY "ВНИМАНИЕ: Промяната на първенството на това действие може да\nпричини нежелани последствия, включително неустойчивост на системата. Сигурен ли сте, \nче искате да смените старшинството?"
IDS_MSG_TRAYICONCPUUSAGE "Заетост на ЦПУ: %d%%"
- IDS_STATUS_MEMUSAGE "Заета памет: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Заета памет: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "Заетост на ЦПУ: %3d%%"
IDS_STATUS_PROCESSES "Действия: %d"
IDS_NOT_RESPONDING "Не отговаря"
CONTROL "I/O zapsané bajty", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 72, 10
CONTROL "I/O ostatní", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 48, 10
CONTROL "I/O ostatní bajty", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "I/O přečtené bajty"
IDS_TAB_IOWRITESBYTES "I/O zapsané bajty"
IDS_TAB_IOOTHERBYTES "I/O ostatní bajty"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Vybrat sloupce..."
IDS_MENU_16BITTASK "&Zobrazit 16-bitové úlohy"
IDS_MENU_WINDOWS "&Okna"
IDS_MSG_UNABLECHANGEPRIORITY "Není možné změnit prioritu"
IDS_MSG_WARNINGCHANGEPRIORITY "Upozornění: Změna priority procesu může\nzpůsobit nestabilitu systému a jiné nepředvídatelné problémy. Jste si jisti\nse změnou priority procesu?"
IDS_MSG_TRAYICONCPUUSAGE "Využití CPU: %d%%"
- IDS_STATUS_MEMUSAGE "Využití paměti: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Využití paměti: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "Využití CPU: %3d%%"
IDS_STATUS_PROCESSES "Procesy: %d"
IDS_NOT_RESPONDING "Neodpovídá"
CONTROL "I/O Skrevet Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "I/O Andet", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "I/O Andre Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "I/O Read Bytes"
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Select Columns..."
IDS_MENU_16BITTASK "&Show 16-bit tasks"
IDS_MENU_WINDOWS "&Windows"
IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority"
IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?"
IDS_MSG_TRAYICONCPUUSAGE "CPU Usage: %d%%"
- IDS_STATUS_MEMUSAGE "Mem Usage: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Mem Usage: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "CPU Usage: %3d%%"
IDS_STATUS_PROCESSES "Processes: %d"
IDS_NOT_RESPONDING "Not Responding"
CONTROL "E/A-Bytes (Schreiben)", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 127, 105, 10 // 107
CONTROL "E/A (Andere)", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 138, 105, 10 // 107
CONTROL "E/A-Bytes (Andere)", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 149, 110, 10 // 107
+ CONTROL "Befeh&lszeile", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 160, 65, 10 // 107
END
/* String Tables */
IDS_TAB_IOREADBYTES "E/A-Bytes (Lesen)"
IDS_TAB_IOWRITESBYTES "E/A-Bytes (Schreiben)"
IDS_TAB_IOOTHERBYTES "E/A-Bytes (Andere)"
+ IDS_TAB_COMMANDLINE "Befehlszeile"
IDS_MENU_SELECTCOLUMNS "&Spalten auswählen..."
IDS_MENU_16BITTASK "&16-Bit-Tasks anzeigen"
IDS_MENU_WINDOWS "&Fenster"
IDS_MSG_UNABLECHANGEPRIORITY "Kann die Priorität nicht ändern"
IDS_MSG_WARNINGCHANGEPRIORITY "WARNUNG: Das Ändern der Prioritätsklasse dieses Prozesses\nkann zu unerwünschten Ergebnissen, einschl. Systeminstabilität, führen.\nSind Sie sicher, dass Sie sie ändern möchten?"
IDS_MSG_TRAYICONCPUUSAGE "CPU-Auslastung: %d%%"
- IDS_STATUS_MEMUSAGE "zugesicherter Speicher: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "zugesicherter Speicher: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "CPU-Auslastung: %3d%%"
IDS_STATUS_PROCESSES "Prozesse: %d"
IDS_NOT_RESPONDING "Keine Rückmeldung"
CONTROL "I/O Write Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "I/O Other", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "I/O Other Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "I/O Read Bytes"
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Select Columns..."
IDS_MENU_16BITTASK "&Show 16-bit tasks"
IDS_MENU_WINDOWS "&Windows"
IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority"
IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?"
IDS_MSG_TRAYICONCPUUSAGE "CPU Usage: %d%%"
- IDS_STATUS_MEMUSAGE "Mem Usage: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Mem Usage: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "CPU Usage: %3d%%"
IDS_STATUS_PROCESSES "Processes: %d"
IDS_NOT_RESPONDING "Not Responding"
CONTROL "I/O Write Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "I/O Other", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "I/O Other Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "I/O Read Bytes"
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Select Columns..."
IDS_MENU_16BITTASK "&Show 16-bit tasks"
IDS_MENU_WINDOWS "&Windows"
IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority"
IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?"
IDS_MSG_TRAYICONCPUUSAGE "CPU Usage: %d%%"
- IDS_STATUS_MEMUSAGE "Mem Usage: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Mem Usage: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "CPU Usage: %3d%%"
IDS_STATUS_PROCESSES "Processes: %d"
IDS_NOT_RESPONDING "Not Responding"
DEFPUSHBUTTON "Aceptar", IDOK, 126, 178, 50, 14 // 84
PUSHBUTTON "Cancelar", IDCANCEL, 180, 178, 50, 14 // 138
LTEXT "Seleccione las columnas que aparecerán en la página de Procesos del Administrador de tareas.", IDC_STATIC, 7, 7, 221, 17 // 181
- CONTROL "Nombre de ruta de la &imagen", IDC_IMAGENAME, "Button", BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP, 7, 28, 88, 10 // 56
+ CONTROL "Nombre de ruta de la &imagen", IDC_IMAGENAME, "Button", BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP, 7, 28, 105, 10 // 56
CONTROL "Identificador de proceso (&PID)", IDC_PID, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 39, 120, 10 // 88
CONTROL "Uso de &CPU", IDC_CPUUSAGE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 50, 53, 10
CONTROL "Ti&empo de CPU", IDC_CPUTIME, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 61, 65, 10 // 48
CONTROL "Uso má&ximo de la memoria", IDC_PEAKMEMORYUSAGE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 94, 120, 10 // 82
CONTROL "Err&ores de página", IDC_PAGEFAULTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 105, 80, 10 // 53
CONTROL "O&bjetos de USUARIO", IDC_USEROBJECTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 116, 80, 10 // 62
- CONTROL "Lecturas de E/S", IDC_IOREADS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 127, 60, 10 // 49
- CONTROL "Bytes de lectura de E/S", IDC_IOREADBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 138, 65, 10
+ CONTROL "Lecturas de E/S", IDC_IOREADS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 127, 70, 10 // 49
+ CONTROL "Bytes de lectura de E/S", IDC_IOREADBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 138, 85, 10
CONTROL "I&d. de sesión", IDC_SESSIONID, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 149, 65, 10 // 50
CONTROL "&Nombre de usuario", IDC_USERNAME, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 160, 75, 10 // 51
CONTROL "Diferencia de erro&res de página", IDC_PAGEFAULTSDELTA, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 28, 120, 10 // 107, 60
CONTROL "B&loque paginado", IDC_PAGEDPOOL, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 50, 67, 10 // 107, 53
CONTROL "Blo&que no paginado", IDC_NONPAGEDPOOL, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 61, 115, 10 // 107
CONTROL "P&rioridad base", IDC_BASEPRIORITY, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 72, 80, 10 // 107
- CONTROL "&Recuento de identificadores", IDC_HANDLECOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 83, 59, 10 // 107
- CONTROL "Nú&mero de subprocesos", IDC_THREADCOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 94, 59, 10 // 107
+ CONTROL "&Recuento de identificadores", IDC_HANDLECOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 83, 105, 10 // 107
+ CONTROL "Nú&mero de subprocesos", IDC_THREADCOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 94, 85, 10 // 107
CONTROL "Objetos &GDI", IDC_GDIOBJECTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 105, 55, 10 // 107
CONTROL "Escrituras de E/S", IDC_IOWRITES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 116, 90, 10 // 107
CONTROL "Bytes de escritura de E/S", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 127, 105, 10 // 107
CONTROL "Otros de E/S", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 138, 60, 10
CONTROL "Otros bytes de E/S", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 149, 75, 10
+ CONTROL "&Línea de comandos", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 160, 75, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "Bytes de lectura de E/S"
IDS_TAB_IOWRITESBYTES "Bytes de escritura de E/S"
IDS_TAB_IOOTHERBYTES "Otros bytes de E/S"
+ IDS_TAB_COMMANDLINE "Línea de comandos"
IDS_MENU_SELECTCOLUMNS "&Seleccionar columnas..."
IDS_MENU_16BITTASK "Mos&trar tareas de 16-bit"
IDS_MENU_WINDOWS "&Ventanas"
IDS_MSG_UNABLECHANGEPRIORITY "No se pudo cambiar la prioridad"
IDS_MSG_WARNINGCHANGEPRIORITY "Advertencia: El cambio de prioridad en ciertos procesos podría provocar la inestabilidad del sistema.\n¿Seguro que desea cambiar la prioridad?"
IDS_MSG_TRAYICONCPUUSAGE "Promedio CPU: %d%%"
- IDS_STATUS_MEMUSAGE "Uso de memoria: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Uso de memoria: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "Uso de CPU: %3d%%"
IDS_STATUS_PROCESSES "Procesos: %d"
IDS_NOT_RESPONDING "No responde"
CONTROL "Octets d'écriture E/S", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 127, 108, 10
CONTROL "Autres E/S", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 138, 108, 10
CONTROL "Octets d'autres E/S", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 149, 108, 10
+ CONTROL "&Ligne de commande", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 160, 95, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "Octets de lecture E/S"
IDS_TAB_IOWRITESBYTES "Octets d'écriture E/S"
IDS_TAB_IOOTHERBYTES "Octets d'autres E/S"
+ IDS_TAB_COMMANDLINE "Ligne de commande"
IDS_MENU_SELECTCOLUMNS "&Sélectionner les colonnes..."
IDS_MENU_16BITTASK "&Afficher les tâches 16 bits"
IDS_MENU_WINDOWS "&Fenêtres"
IDS_MSG_UNABLECHANGEPRIORITY "Impossible de changer la priorité"
IDS_MSG_WARNINGCHANGEPRIORITY "ATTENTION : Changer la priorité du processus peut causer des\neffets indésirables comme l'instabilité du système.\nÊtes-vous sûr de vouloir changer la priorité ?"
IDS_MSG_TRAYICONCPUUSAGE "UC utilisée : %d%%"
- IDS_STATUS_MEMUSAGE "Fichier d'échange utilisé : %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Fichier d'échange utilisé : %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "UC utilisée : %3d%%"
IDS_STATUS_PROCESSES "Processus : %d"
IDS_NOT_RESPONDING "Ne répond pas"
CONTROL "I/O Write Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "I/O Other", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "I/O Other Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "I/O Read Bytes"
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Select Columns..."
IDS_MENU_16BITTASK "&Show 16-bit tasks"
IDS_MENU_WINDOWS "&Windows"
IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority"
IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?"
IDS_MSG_TRAYICONCPUUSAGE "CPU Usage: %d%%"
- IDS_STATUS_MEMUSAGE "Mem Usage: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Mem Usage: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "CPU Usage: %3d%%"
IDS_STATUS_PROCESSES "Processes: %d"
IDS_NOT_RESPONDING "Not Responding"
CONTROL "I/O Írott bájtok", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "Egyéb I/O mûveletek", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "Egyéb I/O mûveletek bájtjai", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "I/O Olvasott bájtok"
IDS_TAB_IOWRITESBYTES "I/O Írott bájtok"
IDS_TAB_IOOTHERBYTES "Egyéb I/O bájtok"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Oszlopok kiválasztása..."
IDS_MENU_16BITTASK "&16bites feladatok megjelenítése"
IDS_MENU_WINDOWS "&Ablak"
IDS_MSG_UNABLECHANGEPRIORITY "Nem lehetséges a prioritás megváltoztatása"
IDS_MSG_WARNINGCHANGEPRIORITY "FIGYELEM: A prioritás megváltoztatása\nkellemetlenségeket, akár rendszer instabilitást is okozhat.\nBiztosan megakarod változtatni a prioritást?"
IDS_MSG_TRAYICONCPUUSAGE "CPU használat: %d%%"
- IDS_STATUS_MEMUSAGE "Mem használat: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Mem használat: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "CPU használat: %3d%%"
IDS_STATUS_PROCESSES "Folyamatok: %d"
IDS_NOT_RESPONDING "Nem válaszol"
CONTROL "I/O Write Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "I/O Other", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "I/O Other Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "I/O Read Bytes"
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Select Columns..."
IDS_MENU_16BITTASK "&Show 16-bit tasks"
IDS_MENU_WINDOWS "&Windows"
IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority"
IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?"
IDS_MSG_TRAYICONCPUUSAGE "Pemakaian CPU: %d%%"
- IDS_STATUS_MEMUSAGE "Pemakaian Mem: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Pemakaian Mem: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "Pemakaian CPU: %3d%%"
IDS_STATUS_PROCESSES "Proses: %d"
IDS_NOT_RESPONDING "Tidak Merespon"
CONTROL "Scritture I/O Byte", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 69, 10
CONTROL "Altro I/O", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "Altro I/O Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+ CONTROL "&Linea di comando", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "I/O Letture Bytes"
IDS_TAB_IOWRITESBYTES "I/O Scritture Bytes"
IDS_TAB_IOOTHERBYTES "I/O Altro Bytes"
+ IDS_TAB_COMMANDLINE "Linea di comando"
IDS_MENU_SELECTCOLUMNS "&Selezione Colonne..."
IDS_MENU_16BITTASK "&Mostra task 16-bit"
IDS_MENU_WINDOWS "&Finestre"
IDS_MSG_UNABLECHANGEPRIORITY "Impossibile cambiare la Priorità"
IDS_MSG_WARNINGCHANGEPRIORITY "ATTENZIONE: La modifica della classe di priorità può provocare\n effetti indesiderati compresa la perdita di dati o l'instabilità del sistema.\nSei sicuro di voler procedere?"
IDS_MSG_TRAYICONCPUUSAGE "Uso CPU: %d%%"
- IDS_STATUS_MEMUSAGE "Uso Mem: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Uso Mem: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "Uso CPU: %3d%%"
IDS_STATUS_PROCESSES "Processi: %d"
IDS_NOT_RESPONDING "Non risponde"
CONTROL "I/O 書き込みバイト数", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "I/O その他", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "I/O その他のバイト数", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "I/O 読み取りバイト数"
IDS_TAB_IOWRITESBYTES "I/O 書き込みバイト数"
IDS_TAB_IOOTHERBYTES "I/O その他のバイト数"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "列の選択(&S)..."
IDS_MENU_16BITTASK "16 ビット タスクの表示(&S)"
IDS_MENU_WINDOWS "ウィンドウ(&W)"
IDS_MSG_UNABLECHANGEPRIORITY "優先度を変更できません"
IDS_MSG_WARNINGCHANGEPRIORITY "警告: このプロセスの優先度クラスを変更すると、システムが不安定に\nなるなど、予期しない結果になることがあります。\n優先度クラスを変更しますか?"
IDS_MSG_TRAYICONCPUUSAGE "CPU 使用率: %d%%"
- IDS_STATUS_MEMUSAGE "メモリ使用量: %dKB / %dKB"
+ IDS_STATUS_MEMUSAGE "メモリ使用量: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "CPU 使用率: %3d%%"
IDS_STATUS_PROCESSES "プロセス: %d"
IDS_NOT_RESPONDING "応答なし"
CONTROL "I/O 쓰기 바이트", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "I/O 기타", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "I/O 기타 바이트", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "I/O 읽기 바이트"
IDS_TAB_IOWRITESBYTES "I/O 쓰기 바이트"
IDS_TAB_IOOTHERBYTES "I/O 기타 바이트"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "열 선택(&S)"
IDS_MENU_16BITTASK "16비트 작업 보이기(&S)"
IDS_MENU_WINDOWS "창(&W)"
IDS_MSG_UNABLECHANGEPRIORITY "우선 순위를 바꿀 수 없음"
IDS_MSG_WARNINGCHANGEPRIORITY "경고: 이 프로세스의 우선 순위 클래스를 변경하면 시스템 불안정을 포함하여\n예기치 않은 결과를 초래할 수도 있습니다.\n우선 순위 클래스를 변경하시겠습니까?"
IDS_MSG_TRAYICONCPUUSAGE "CPU 사용: %d%%"
- IDS_STATUS_MEMUSAGE "메모리 사용: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "메모리 사용: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "CPU 사용: %3d%%"
IDS_STATUS_PROCESSES "프로세스: %d"
IDS_NOT_RESPONDING "응답 없음"
CONTROL "I/O: geschreven bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 127, 100, 10
CONTROL "I/O: overig", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 138, 100, 10
CONTROL "I/O: overige bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 149, 100, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "I/O: gelezen bytes"
IDS_TAB_IOWRITESBYTES "I/O: geschreven bytes"
IDS_TAB_IOOTHERBYTES "I/O: overige bytes"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Kolommen selecteren..."
IDS_MENU_16BITTASK "16-&bits taken weergeven"
IDS_MENU_WINDOWS "&Vensters"
IDS_MSG_UNABLECHANGEPRIORITY "Kan de prioriteit niet wijzigen"
IDS_MSG_WARNINGCHANGEPRIORITY "Waarschuwing: het wijzigen van de prioriteitsklasse van dit proces\nkan ongewenste resultaten hebben, zoals een instabiel systeem. Weet u\nzeker dat u de prioriteitsklasse wilt wijzigen?"
IDS_MSG_TRAYICONCPUUSAGE "CPU-gebruik: %d%%"
- IDS_STATUS_MEMUSAGE "Geheugengebruik: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Geheugengebruik: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "CPU-gebruik: %3d%%"
IDS_STATUS_PROCESSES "Processen: %d"
IDS_NOT_RESPONDING "Reageert niet"
CONTROL "I/O skrevne byte", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 70, 10
CONTROL "I/O Annet", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "I/O Andre byte", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "I/O Leser Byte"
IDS_TAB_IOWRITESBYTES "I/O Skriver Byte"
IDS_TAB_IOOTHERBYTES "I/O Annet Byte"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Velg kolonner..."
IDS_MENU_16BITTASK "&Vis 16-biter oppgave"
IDS_MENU_WINDOWS "&Vinduer"
IDS_MSG_UNABLECHANGEPRIORITY "Ikke i stand til endre prioritet"
IDS_MSG_WARNINGCHANGEPRIORITY "ADVARSEL: Endring av prioritet klasse av denne prosess kan\nforutsake uønsket resultat inkluderer systemet kan bli ustabilt. Er du\nsikker på at du vil endre prioritet klassen?"
IDS_MSG_TRAYICONCPUUSAGE "Prosessorbruk: %d%%"
- IDS_STATUS_MEMUSAGE "Tildelt minne: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Tildelt minne: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "Prosessorbruk: %3d%%"
IDS_STATUS_PROCESSES "Prosesser: %d"
IDS_NOT_RESPONDING "Ingen reaksjon"
CONTROL "Zapisy We/Wy w bajtach", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "Inne We/Wy", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "Inne We/Wy w bajtach", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+ CONTROL "Linia poleceń", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "Odczyty We/Wy w bajtach"
IDS_TAB_IOWRITESBYTES "Zapisy We/Wy w bajtach"
IDS_TAB_IOOTHERBYTES "Inne We/Wy w bajtach"
+ IDS_TAB_COMMANDLINE "Linia poleceń"
IDS_MENU_SELECTCOLUMNS "Wybierz &kolumny..."
IDS_MENU_16BITTASK "Pokaż 16-&bitowe zadania"
IDS_MENU_WINDOWS "O&kna"
IDS_MSG_UNABLECHANGEPRIORITY "Nie można zmienić priorytetu"
IDS_MSG_WARNINGCHANGEPRIORITY "UWAGA: Zmiana priorytetu tego procesu może przynieść\nniepożądane skutki, w tym również niestabilność systemu.\nCzy na pewno chcesz zmieni priorytet?"
IDS_MSG_TRAYICONCPUUSAGE "Użycie procesora: %d%%"
- IDS_STATUS_MEMUSAGE "Pam. zadeklar.: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Pam. zadeklar.: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "Użycie procesora: %3d%%"
IDS_STATUS_PROCESSES "Procesy: %d"
IDS_NOT_RESPONDING "Nie odpowiada"
CONTROL "Bytes de gravação de E/S", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 127, 97, 10
CONTROL "Outras E/S", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 138, 47, 10
CONTROL "Outros bytes de E/S", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 149, 77, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 160, 95, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "Bytes de leitura de E/S"
IDS_TAB_IOWRITESBYTES "Bytes de gravação de E/S"
IDS_TAB_IOOTHERBYTES "Outros Bytes de E/S"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Selecionar colunas..."
IDS_MENU_16BITTASK "&Exibir tarefas de 16 bits"
IDS_MENU_WINDOWS "&Janelas"
IDS_MSG_UNABLECHANGEPRIORITY "Não é possível alterar a prioridade"
IDS_MSG_WARNINGCHANGEPRIORITY "AVISO: a alteração da classe de prioridade do processo\npode causar efeitos indesejáveis, inclusive a instabilidade do sistema. Tem\ncerteza de que deseja alterar a classe de prioridade?"
IDS_MSG_TRAYICONCPUUSAGE "Uso de CPU: %d%%"
- IDS_STATUS_MEMUSAGE "Uso de Memória: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Uso de Memória: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "Uso de CPU: %3d%%"
IDS_STATUS_PROCESSES "Processo: %d"
IDS_NOT_RESPONDING "Não respondendo"
CONTROL "In/Ex octeți scriși", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 127, 110, 10
CONTROL "In/Ex altceva", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 138, 110, 10
CONTROL "In/Ex octeți din altceva", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 149, 110, 10
+ CONTROL "&Linia de comandă", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "In/Ex octeți citiți"
IDS_TAB_IOWRITESBYTES "In/Ex octeți scriși"
IDS_TAB_IOOTHERBYTES "In/Ex octeți din altceva"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Selectare coloane…"
IDS_MENU_16BITTASK "Afișează activități pe 16 &biți"
IDS_MENU_WINDOWS "F&erestre"
IDS_MSG_UNABLECHANGEPRIORITY "Nu se poate schimba prioritatea"
IDS_MSG_WARNINGCHANGEPRIORITY "Schimbarea priorității poate duce la efecte colaterale\nprecum instabilitatea sistemului.\nSigur doriți schimbarea priorității procesului?"
IDS_MSG_TRAYICONCPUUSAGE "Utilizare procesor: %d%%"
- IDS_STATUS_MEMUSAGE "Utilizare memorie: %dko/%dko"
+ IDS_STATUS_MEMUSAGE "Utilizare memorie: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "Utilizare procesor: %3d%%"
IDS_STATUS_PROCESSES "Procese: %d"
IDS_NOT_RESPONDING "EXECUȚIE ANORMALĂ"
CONTROL "Записано байт", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "Прочий ввод-вывод", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 90, 10
CONTROL "Прочих байт при вводе-выводе", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 122, 10
+ CONTROL "Коммандная строка", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 90, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "Прочитано байт"
IDS_TAB_IOWRITESBYTES "Записано байт"
IDS_TAB_IOOTHERBYTES "Прочих байт при вводе-выводе"
+ IDS_TAB_COMMANDLINE "Коммандная строка"
IDS_MENU_SELECTCOLUMNS "В&ыбрать столбцы..."
IDS_MENU_16BITTASK "&Отображать 16-разрядные задачи"
IDS_MENU_WINDOWS "&Окна"
IDS_MSG_UNABLECHANGEPRIORITY "Не удалось изменить приоритет"
IDS_MSG_WARNINGCHANGEPRIORITY "ВНИМАНИЕ: Изменение приоритета этого процесса может привести к нежелательным результатам, в том числе к нестабильной работе системы.\nВы действительно хотите изменить класс приоритета?"
IDS_MSG_TRAYICONCPUUSAGE "Загрузка ЦП: %d%%"
- IDS_STATUS_MEMUSAGE "Выделение памяти: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Выделение памяти: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "Загрузка ЦП: %3d%%"
IDS_STATUS_PROCESSES "Процессов: %d"
IDS_NOT_RESPONDING "Не отвечает"
CONTROL "Vstup a výstup - zapísané bajty", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 127, 112, 10
CONTROL "Vstup a výstup - iné", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 138, 77, 10
CONTROL "Vstup a výstup - iné bajty", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 149, 97, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 160, 95, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "Vstup a výstup - prečítané bajty"
IDS_TAB_IOWRITESBYTES "Vstup a výstup - zapísané bajty"
IDS_TAB_IOOTHERBYTES "Vstup a výstup - iné bajty"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Vybrať stĺpce..."
IDS_MENU_16BITTASK "&Zobraziť 16-bitové úlohy"
IDS_MENU_WINDOWS "&Okna"
IDS_MSG_UNABLECHANGEPRIORITY "Priorita sa nedá zmeniť."
IDS_MSG_WARNINGCHANGEPRIORITY "UPOZORNENIE: Zmena triedy priority procesu môže mať\nnežiadúce dôsledky vrátane nestability systému.\nNaozaj chcete zmeniť triedu priority procesu?"
IDS_MSG_TRAYICONCPUUSAGE "Využitie procesora: %d%%"
- IDS_STATUS_MEMUSAGE "Využitá pamäť: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Využitá pamäť: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "Využitie procesora: %3d%%"
IDS_STATUS_PROCESSES "Procesy: %d"
IDS_NOT_RESPONDING "Neodpovedá"
CONTROL "Shkruan I/O Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "I/O te tjere", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "I/O Byte te tjere", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "I/O Lexo Bytes"
IDS_TAB_IOWRITESBYTES "I/O Shkruaj Bytes"
IDS_TAB_IOOTHERBYTES "I/O te tjere Bytes"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "Zgjidh kolonat..."
IDS_MENU_16BITTASK "&Shfaq 16-bit tasks"
IDS_MENU_WINDOWS "Dritare"
IDS_MSG_UNABLECHANGEPRIORITY "E pamundur ndryshimi i prioritetit"
IDS_MSG_WARNINGCHANGEPRIORITY "KUJDES: Ndryshimi i klases se prioritetit te ketij procesi mund te \nsjell rrezultate te padeshirushme ne stabilitetin e sistemit. Jeni i sigurt\nper ndryshimin e klases se prioriteteve?"
IDS_MSG_TRAYICONCPUUSAGE "Perdorimi i CPU: %d%%"
- IDS_STATUS_MEMUSAGE "Perdorimi i Mem: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Perdorimi i Mem: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "Perdorimi i CPU: %3d%%"
IDS_STATUS_PROCESSES "Proceset: %d"
IDS_NOT_RESPONDING "Nuk pergjigjet"
CONTROL "I/O, &antal tecken skrivna", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 127, 113, 10
CONTROL "And&ra I/O åtgärder", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 138, 89, 10
CONTROL "Antal tecken, andra I/O åtgärder", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 149, 141, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 160, 95, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "Antal tecken lästa, andra I/O-åtgärder"
IDS_TAB_IOWRITESBYTES "Antal tecken skrivna, andra I/O-åtgärder"
IDS_TAB_IOOTHERBYTES "I/O, antal tecken"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Välj kolumner..."
IDS_MENU_16BITTASK "&Visa 16-bitsprocesser"
IDS_MENU_WINDOWS "&Fönster"
IDS_MSG_UNABLECHANGEPRIORITY "Kunde inte ändra prioritet"
IDS_MSG_WARNINGCHANGEPRIORITY "VARNING: Ändring av prioritetsklassen hos den här processen kan\norsaka oönskade effekter och påverka systemets stabilitet. Är du\nsäker på att du vill ändra prioritetsklassen?"
IDS_MSG_TRAYICONCPUUSAGE "Processoranvändning: %d%%"
- IDS_STATUS_MEMUSAGE "Minnesanv: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Minnesanv: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "Processoranv: %3d%%"
IDS_STATUS_PROCESSES "Processer: %d"
IDS_NOT_RESPONDING "Svarar inte"
CONTROL "G/Ç Yazma Çokluları", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "G/Ç Başka", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "G/Ç Başka Çoklular", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "G/Ç Okuma Çokluları"
IDS_TAB_IOWRITESBYTES "G/Ç Yazma Çokluları"
IDS_TAB_IOOTHERBYTES "G/Ç Başka Çoklular"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Dikeçleri Seç..."
IDS_MENU_16BITTASK "&16 Bitlik Görevleri Göster"
IDS_MENU_WINDOWS "&Pencereler"
IDS_MSG_UNABLECHANGEPRIORITY "Önceliğin Değiştirilememesi"
IDS_MSG_WARNINGCHANGEPRIORITY "UYARI: Bu işlemin öncelik sınıfının değiştirilmesi, dizge\nkararsızlığını içeren istenmeyen sonuçlara neden olabilir. Öncelik \nsınıfını değiştirmek istediğinizden emin misiniz?"
IDS_MSG_TRAYICONCPUUSAGE "CPU Kullanımı: %%%d"
- IDS_STATUS_MEMUSAGE "Bellek Kullanımı: %d KB / %d KB"
+ IDS_STATUS_MEMUSAGE "Bellek Kullanımı: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "CPU Kullanımı: %%%3d"
IDS_STATUS_PROCESSES "İşlem: %d"
IDS_NOT_RESPONDING "Yanıt Vermiyor"
CONTROL "Записано байтів", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 67, 10
CONTROL "Інший ввід-вивід", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 71, 10
CONTROL "Інших байтів при вводі-виводі", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 114, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "Прочитано байтів"
IDS_TAB_IOWRITESBYTES "Записано байтів"
IDS_TAB_IOOTHERBYTES "Інших байтів під час вводу-виводу"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "В&ибрати стовпці..."
IDS_MENU_16BITTASK "&Відображати 16-розрядні завдання"
IDS_MENU_WINDOWS "В&ікна"
IDS_MSG_UNABLECHANGEPRIORITY "Неможливо змінити пріоритет"
IDS_MSG_WARNINGCHANGEPRIORITY "УВАГА! Зміна класу пріоритету цього процесу може призвести до \nнебажаних наслідків, включаючи нестабільну роботу \nсистеми. Ви дійсно бажаєте змінити пріоритет класу?"
IDS_MSG_TRAYICONCPUUSAGE "Використання ЦП: %d%%"
- IDS_STATUS_MEMUSAGE "Пам'ять: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "Пам'ять: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "Використання ЦП: %3d%%"
IDS_STATUS_PROCESSES "Процесів: %d"
IDS_NOT_RESPONDING "Не відповідає"
CONTROL "I/O 写入字节", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "I/O 其他", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "I/O 其他字节", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "I/O Read Bytes"
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "选择列(&S)..."
IDS_MENU_16BITTASK "显示 16 位任务(&S)"
IDS_MENU_WINDOWS "窗口(&W)"
IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority"
IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?"
IDS_MSG_TRAYICONCPUUSAGE "CPU 使用情况: %d%%"
- IDS_STATUS_MEMUSAGE "内存使用情况: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "内存使用情况: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "CPU 使用情况: %3d%%"
IDS_STATUS_PROCESSES "處理程序: %d"
IDS_NOT_RESPONDING "没有回应"
CONTROL "I/O 寫入位元組", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "其他 I/O", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "其他 I/O 位元組", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+ CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
IDS_TAB_IOREADBYTES "I/O 讀取位元組"
IDS_TAB_IOWRITESBYTES "I/O 寫入位元組"
IDS_TAB_IOOTHERBYTES "其他 I/O 位元組"
+ IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "選擇列(&S)..."
IDS_MENU_16BITTASK "顯示 16 位工作(&S)"
IDS_MENU_WINDOWS "窗口(&W)"
IDS_MSG_UNABLECHANGEPRIORITY "無法更改優先順序"
IDS_MSG_WARNINGCHANGEPRIORITY "警告: 更改此程序的優先順序可能導致系統不穩定。\n你是否確定要更改優先順序?"
IDS_MSG_TRAYICONCPUUSAGE "CPU 使用情況: %d%%"
- IDS_STATUS_MEMUSAGE "記憶體使用情況: %dK / %dK"
+ IDS_STATUS_MEMUSAGE "記憶體使用情況: %s / %s (%d%%)"
IDS_STATUS_CPUUSAGE "CPU 使用情況: %3d%%"
IDS_STATUS_PROCESSES "處理程序: %d"
IDS_NOT_RESPONDING "沒有回應"
*
* perfdata.c
*
- * Copyright (C) 1999 - 2001 Brian Palmer <brianp@reactos.org>
+ * Copyright (C) 1999 - 2001 Brian Palmer <brianp@reactos.org>
+ * Copyright (C) 2014 Ismael Ferreras Morezuelas <swyterzone+ros@gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
#include <aclapi.h>
#define NTOS_MODE_USER
+#include <ndk/psfuncs.h>
#include <ndk/exfuncs.h>
CRITICAL_SECTION PerfDataCriticalSection;
PPERFDATA pPerfDataOld = NULL; /* Older perf data (saved to establish delta values) */
-PPERFDATA pPerfData = NULL; /* Most recent copy of perf data */
+PPERFDATA pPerfData = NULL; /* Most recent copy of perf data */
ULONG ProcessCountOld = 0;
ULONG ProcessCount = 0;
double dbIdleTime;
PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION SystemProcessorTimeInfo = NULL;
PSID SystemUserSid = NULL;
+PCMD_LINE_CACHE global_cache = NULL;
+
+#define CMD_LINE_MIN(a, b) (a < b ? a - sizeof(WCHAR) : b)
+
typedef struct _SIDTOUSERNAME
{
LIST_ENTRY List;
pPerfData[Idx].HandleCount = pSPI->HandleCount;
pPerfData[Idx].ThreadCount = pSPI->NumberOfThreads;
pPerfData[Idx].SessionId = pSPI->SessionId;
- pPerfData[Idx].UserName[0] = L'\0';
+ pPerfData[Idx].UserName[0] = UNICODE_NULL;
pPerfData[Idx].USERObjectCount = 0;
pPerfData[Idx].GDIObjectCount = 0;
ProcessUser = SystemUserSid;
return (ULONG)dbKernelTime;
}
-BOOL PerfDataGetImageName(ULONG Index, LPWSTR lpImageName, int nMaxCount)
+BOOL PerfDataGetImageName(ULONG Index, LPWSTR lpImageName, ULONG nMaxCount)
{
BOOL bSuccessful;
return ProcessId;
}
-BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, int nMaxCount)
+BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, ULONG nMaxCount)
{
BOOL bSuccessful;
return bSuccessful;
}
+BOOL PerfDataGetCommandLine(ULONG Index, LPWSTR lpCommandLine, ULONG nMaxCount)
+{
+ static const LPWSTR ellipsis = L"...";
+
+ PROCESS_BASIC_INFORMATION pbi = {0};
+ UNICODE_STRING CommandLineStr = {0};
+
+ PVOID ProcessParams = NULL;
+ HANDLE hProcess;
+ ULONG ProcessId;
+
+ NTSTATUS Status;
+ BOOL result;
+
+ PCMD_LINE_CACHE new_entry;
+ LPWSTR new_string;
+
+ PCMD_LINE_CACHE cache = global_cache;
+
+ /* [A] Search for a string already in cache? If so, use it */
+ while (cache && cache->pnext != NULL)
+ {
+ if (cache->idx == Index && cache->str != NULL)
+ {
+ /* Found it. Use it, and add some ellipsis at the very end to make it cute */
+ wcsncpy(lpCommandLine, cache->str, CMD_LINE_MIN(nMaxCount, cache->len));
+ wcscpy(lpCommandLine + CMD_LINE_MIN(nMaxCount, cache->len) - sizeof(ellipsis)/sizeof(WCHAR), ellipsis);
+ return TRUE;
+ }
+
+ cache = cache->pnext;
+ }
+
+ /* [B] We don't; let's allocate and load a value from the process mem... and cache it */
+ ProcessId = PerfDataGetProcessId(Index);
+
+ /* Default blank command line in case things don't work out */
+ wcsncpy(lpCommandLine, L"", nMaxCount);
+
+ /* Ask for a handle to the target process so that we can read its memory and query stuff */
+ hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, ProcessId);
+ if (!hProcess)
+ goto cleanup;
+
+ /* First off, get the ProcessEnvironmentBlock location in that process' address space */
+ Status = NtQueryInformationProcess(hProcess, 0, &pbi, sizeof(pbi), NULL);
+ if (!NT_SUCCESS(Status))
+ goto cleanup;
+
+ /* Then get the PEB.ProcessParameters member pointer */
+ result = ReadProcessMemory(hProcess,
+ (PVOID)((ULONG_PTR)pbi.PebBaseAddress + FIELD_OFFSET(PEB, ProcessParameters)),
+ &ProcessParams,
+ sizeof(ProcessParams),
+ NULL);
+ if (!result)
+ goto cleanup;
+
+ /* Then copy the PEB->ProcessParameters.CommandLine member
+ to get the pointer to the string buffer and its size */
+ result = ReadProcessMemory(hProcess,
+ (PVOID)((ULONG_PTR)ProcessParams + FIELD_OFFSET(RTL_USER_PROCESS_PARAMETERS, CommandLine)),
+ &CommandLineStr,
+ sizeof(CommandLineStr),
+ NULL);
+ if (!result)
+ goto cleanup;
+
+ /* Allocate the next cache entry and its accompanying string in one go */
+ new_entry = HeapAlloc(GetProcessHeap(),
+ HEAP_ZERO_MEMORY,
+ sizeof(CMD_LINE_CACHE) + CommandLineStr.Length + sizeof(UNICODE_NULL));
+ if (!new_entry)
+ goto cleanup;
+
+ new_string = (LPWSTR)((ULONG_PTR)new_entry + sizeof(CMD_LINE_CACHE));
+
+ /* Bingo, the command line should be stored there,
+ copy the string from the other process */
+ result = ReadProcessMemory(hProcess,
+ CommandLineStr.Buffer,
+ new_string,
+ CommandLineStr.Length,
+ NULL);
+ if (!result)
+ {
+ /* Weird, after sucessfully reading the mem of that process
+ various times it fails now, forget it and bail out */
+ HeapFree(GetProcessHeap(), 0, new_entry);
+ goto cleanup;
+ }
+
+ /* Add our pointer to the cache... */
+ new_entry->idx = Index;
+ new_entry->str = new_string;
+ new_entry->len = CommandLineStr.Length;
+
+ if (!global_cache)
+ global_cache = new_entry;
+ else
+ cache->pnext = new_entry;
+
+ /* ... and print the buffer for the first time */
+ wcsncpy(lpCommandLine, new_string, CMD_LINE_MIN(nMaxCount, CommandLineStr.Length));
+
+cleanup:
+ if (hProcess) CloseHandle(hProcess);
+ return TRUE;
+}
+
+void PerfDataDeallocCommandLineCache()
+{
+ PCMD_LINE_CACHE cache = global_cache;
+ PCMD_LINE_CACHE cache_old;
+
+ while (cache && cache->pnext != NULL)
+ {
+ cache_old = cache;
+ cache = cache->pnext;
+
+ HeapFree(GetProcessHeap(), 0, cache_old);
+ }
+}
+
ULONG PerfDataGetSessionId(ULONG Index)
{
ULONG SessionId;
LARGE_INTEGER KernelTime;
} PERFDATA, *PPERFDATA;
+typedef struct _CMD_LINE_CACHE
+{
+ DWORD idx;
+ LPWSTR str;
+ ULONG len;
+ struct _CMD_LINE_CACHE* pnext;
+} CMD_LINE_CACHE, *PCMD_LINE_CACHE;
+
BOOL PerfDataInitialize(void);
void PerfDataUninitialize(void);
void PerfDataRefresh(void);
-BOOL PerfDataGet(ULONG Index, PPERFDATA *lppData);
-ULONG PerfDataGetProcessIndex(ULONG pid);
+BOOL PerfDataGet(ULONG Index, PPERFDATA *lppData);
+ULONG PerfDataGetProcessIndex(ULONG pid);
ULONG PerfDataGetProcessCount(void);
ULONG PerfDataGetProcessorUsage(void);
ULONG PerfDataGetProcessorSystemUsage(void);
-BOOL PerfDataGetImageName(ULONG Index, LPTSTR lpImageName, int nMaxCount);
+BOOL PerfDataGetImageName(ULONG Index, LPWSTR lpImageName, ULONG nMaxCount);
ULONG PerfDataGetProcessId(ULONG Index);
-BOOL PerfDataGetUserName(ULONG Index, LPTSTR lpUserName, int nMaxCount);
+BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, ULONG nMaxCount);
+
+BOOL PerfDataGetCommandLine(ULONG Index, LPWSTR lpCommandLine, ULONG nMaxCount);
+void PerfDataDeallocCommandLineCache();
+
ULONG PerfDataGetSessionId(ULONG Index);
ULONG PerfDataGetCPUUsage(ULONG Index);
LARGE_INTEGER PerfDataGetCPUTime(ULONG Index);
*/
#include "precomp.h"
+#include <shlwapi.h>
TGraphCtrl PerformancePageCpuUsageHistoryGraph;
TGraphCtrl PerformancePageMemUsageHistoryGraph;
DWORD WINAPI PerformancePageRefreshThread(void *lpParameter)
{
- ULONG CommitChargeTotal;
- ULONG CommitChargeLimit;
- ULONG CommitChargePeak;
+ ULONGLONG CommitChargeTotal;
+ ULONGLONG CommitChargeLimit;
+ ULONGLONG CommitChargePeak;
ULONG CpuUsage;
ULONG CpuKernelUsage;
- ULONG KernelMemoryTotal;
- ULONG KernelMemoryPaged;
- ULONG KernelMemoryNonPaged;
+ ULONGLONG KernelMemoryTotal;
+ ULONGLONG KernelMemoryPaged;
+ ULONGLONG KernelMemoryNonPaged;
- ULONG PhysicalMemoryTotal;
- ULONG PhysicalMemoryAvailable;
- ULONG PhysicalMemorySystemCache;
+ ULONGLONG PhysicalMemoryTotal;
+ ULONGLONG PhysicalMemoryAvailable;
+ ULONGLONG PhysicalMemorySystemCache;
ULONG TotalHandles;
ULONG TotalThreads;
int nBarsUsed1;
int nBarsUsed2;
+ WCHAR szChargeTotalFormat[256];
+ WCHAR szChargeLimitFormat[256];
+
/* Wait for an the event or application close */
if (GetMessage(&msg, NULL, 0, 0) <= 0)
return 0;
*/
CommitChargeTotal = PerfDataGetCommitChargeTotalK();
CommitChargeLimit = PerfDataGetCommitChargeLimitK();
- CommitChargePeak = PerfDataGetCommitChargePeakK();
+ CommitChargePeak = PerfDataGetCommitChargePeakK();
_ultow(CommitChargeTotal, Text, 10);
SetWindowTextW(hPerformancePageCommitChargeTotalEdit, Text);
_ultow(CommitChargeLimit, Text, 10);
SetWindowTextW(hPerformancePageCommitChargeLimitEdit, Text);
_ultow(CommitChargePeak, Text, 10);
SetWindowTextW(hPerformancePageCommitChargePeakEdit, Text);
- wsprintfW(Text, szMemUsage, CommitChargeTotal, CommitChargeLimit);
+
+ StrFormatByteSizeW(CommitChargeTotal * 1024,
+ szChargeTotalFormat,
+ sizeof(szChargeTotalFormat));
+
+ StrFormatByteSizeW(CommitChargeLimit * 1024,
+ szChargeLimitFormat,
+ sizeof(szChargeLimitFormat));
+
+ wsprintfW(Text, szMemUsage, szChargeTotalFormat, szChargeLimitFormat,
+ (CommitChargeLimit ? ((CommitChargeTotal * 100) / CommitChargeLimit) : 0));
+
SendMessageW(hStatusWnd, SB_SETTEXT, 2, (LPARAM)Text);
/*
void UpdateProcesses();
void gethmsfromlargeint(LARGE_INTEGER largeint, DWORD *dwHours, DWORD *dwMinutes, DWORD *dwSeconds);
void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam);
-void CommaSeparateNumberString(LPWSTR strNumber, int nMaxCount);
+void CommaSeparateNumberString(LPWSTR strNumber, ULONG nMaxCount);
void ProcessPageShowContextMenu(DWORD dwProcessId);
-BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, int nMaxCount);
+BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, ULONG nMaxCount);
DWORD WINAPI ProcessPageRefreshThread(void *lpParameter);
int ProcessRunning(ULONG ProcessId);
Index = PerfDataGetProcessIndex(pData->ProcessId);
ColumnIndex = pnmdi->item.iSubItem;
- PerfDataGetText(Index, ColumnIndex, pnmdi->item.pszText, pnmdi->item.cchTextMax);
+ PerfDataGetText(Index, ColumnIndex, pnmdi->item.pszText, (ULONG)pnmdi->item.cchTextMax);
break;
}
}
-void CommaSeparateNumberString(LPWSTR strNumber, int nMaxCount)
+void CommaSeparateNumberString(LPWSTR strNumber, ULONG nMaxCount)
{
WCHAR temp[260];
UINT i, j, k;
}
}
-BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, int nMaxCount)
+BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, ULONG nMaxCount)
{
IO_COUNTERS iocounters;
LARGE_INTEGER time;
wsprintfW(lpText, L"%lu", PerfDataGetProcessId(Index));
if (ColumnDataHints[ColumnIndex] == COLUMN_USERNAME)
PerfDataGetUserName(Index, lpText, nMaxCount);
+ if (ColumnDataHints[ColumnIndex] == COLUMN_COMMANDLINE)
+ PerfDataGetCommandLine(Index, lpText, nMaxCount);
if (ColumnDataHints[ColumnIndex] == COLUMN_SESSIONID)
wsprintfW(lpText, L"%lu", PerfDataGetSessionId(Index));
if (ColumnDataHints[ColumnIndex] == COLUMN_CPUUSAGE)
PerfDataGetUserName(IndexParam2, text2, sizeof (text2) / sizeof (*text2));
ret = _wcsicmp(text1, text2);
}
+ else if (TaskManagerSettings.SortColumn == COLUMN_COMMANDLINE)
+ {
+ PerfDataGetCommandLine(IndexParam1, text1, sizeof (text1) / sizeof (*text1));
+ PerfDataGetCommandLine(IndexParam2, text2, sizeof (text2) / sizeof (*text2));
+ ret = _wcsicmp(text1, text2);
+ }
else if (TaskManagerSettings.SortColumn == COLUMN_SESSIONID)
{
l1 = PerfDataGetSessionId(IndexParam1);
#define IDC_IOOTHERBYTES 1047
#define IDC_CPU_USAGE_GRAPH 1047
#define IDC_CPU29 1048
+#define IDC_COMMANDLINE 1048
#define IDC_MEM_USAGE_GRAPH2 1048
#define IDC_MEM_USAGE_GRAPH 1048
#define IDC_CPU30 1049
#define IDS_TAB_IOREADBYTES 337
#define IDS_TAB_IOWRITESBYTES 338
#define IDS_TAB_IOOTHERBYTES 339
+#define IDS_TAB_COMMANDLINE 368
#define IDS_MENU_SELECTCOLUMNS 340
#define IDS_MENU_16BITTASK 341
TaskManagerSettings.Maximized = TRUE;
else
TaskManagerSettings.Maximized = FALSE;
+ /* Get rid of the allocated command line cache, if any */
+ PerfDataDeallocCommandLineCache();
return DefWindowProcW(hDlg, message, wParam, lParam);
case WM_TIMER:
DWORD dwRet;
LPWSTR lpszTemp = NULL;
- dwRet = FormatMessageW( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_ARGUMENT_ARRAY,
+ dwRet = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY,
NULL,
GetLastError(),
LANG_NEUTRAL,
BEGIN
IDS_APPTITLE "ReactOS - Velkommen"
IDS_DEFAULTTOPICTITLE "ReactOS"
- IDS_DEFAULTTOPICDESC "Velkommen til ReactOs operativ System.\n\nKlik på et emne til venstre."
+ IDS_DEFAULTTOPICDESC "Velkommen til ReactOS operativ System.\n\nKlik på et emne til venstre."
// IDS_CHECKTEXT "Vis denne dialog igen ved opstart"
// IDS_CLOSETEXT "Afslut"
END
STRINGTABLE
BEGIN
IDS_TOPICDESC0 "Opret en ny ReactOS installation på din computer eller opgradere en eksisterende installation."
- IDS_TOPICDESC1 "Gennemse Reactos Installations Cdrom"
+ IDS_TOPICDESC1 "Gennemse ReactOS Installations Cdrom"
IDS_TOPICDESC2 "Klik på Afslut for at lukke."
// IDS_TOPICDESC3 "Topic description 3.\n\nDescribe topic 3 here."
// IDS_TOPICDESC4 "Topic description 4.\n\nDescribe topic 4 here."
Skriv VERIFY uten parametre for å vise gjeldende VERIFY innstillinger.\n"
STRING_VERIFY_HELP2 "VERIFY er %s.\n"
STRING_VERIFY_HELP3 "Må spesifisere ON eller OFF."
- STRING_VERSION_HELP1 "Vis Reactos versjonen\n\n\
+ STRING_VERSION_HELP1 "Vis ReactOS versjonen\n\n\
VER [/C][/R][/W]\n\n\
/C Vis anerkjennelse.\n\
/R Vis videreformidlingsinformasjon.\n\
Skriv VERIFY uten parametre för att visa aktuell VERIFY inställninar.\n"
STRING_VERIFY_HELP2 "VERIFY är %s.\n"
STRING_VERIFY_HELP3 "Må ange ON eller OFF."
- STRING_VERSION_HELP1 "Vis Reactos versjonen\n\n\
+ STRING_VERSION_HELP1 "Vis ReactOS versjonen\n\n\
VER [/C][/R][/W]\n\n\
/C Vis anerkjennelse.\n\
/R Vis videreformidlingsinformasjon.\n\
BEGIN
MENUITEM "Åîåñåýíçóç &FAQ...", ID_EXPLORER_FAQ
MENUITEM "&Ó÷åôéêÜ ìå ôïí åîåñåõíçôÞ", ID_ABOUT_EXPLORER
- MENUITEM "&Ó÷åôéêÜ ìå ôï Reactos", ID_ABOUT_WINDOWS
+ MENUITEM "&Ó÷åôéêÜ ìå ôï ReactOS", ID_ABOUT_WINDOWS
END
END
BEGIN
MENUITEM "Åîåñåýíçóç &FAQ", ID_EXPLORER_FAQ
MENUITEM "&Ó÷åôéêÜ ìå ôïí åîåñåõíçôÞ", ID_ABOUT_EXPLORER
- MENUITEM "&Ó÷åôéêÜ ìå ôï Reactos", ID_ABOUT_WINDOWS
+ MENUITEM "&Ó÷åôéêÜ ìå ôï ReactOS", ID_ABOUT_WINDOWS
END
END
STRINGTABLE
BEGIN
- IDS_TITLE "Reactos 浏览器"
+ IDS_TITLE "ReactOS 浏览器"
IDS_START "开始"
IDS_LOGOFF "注销..."
IDS_SHUTDOWN "关闭..."
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "High Contrast", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
- LTEXT "Use this option if you want Reactos to use colors and fonts designed for easy reading.",
+ LTEXT "Use this option if you want ReactOS to use colors and fonts designed for easy reading.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "&Use High Contrast", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "&Settings", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Funkce Vysoký kontrast", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
- LTEXT "Vyberte tuto možnost pokud chcete, aby Reactos používal barvy a písma určené pro snadnou čitelnost.",
+ LTEXT "Vyberte tuto možnost pokud chcete, aby ReactOS používal barvy a písma určené pro snadnou čitelnost.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "&Použít funkci Vysoký kontrast", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "&Nastavení", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
AUTOCHECKBOX "×ñÞóç &Áóýã÷ñïíùí ðëÞêôñùí", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "&Ñõèìßóåéò", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
GROUPBOX "Ößëôñï ðëÞêôñùí", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
- LTEXT "×ñçóéìïðïéÞóôå ôï Ößëôñï ðëÞêôñùí, áí èÝëåôå ôï Reactos íá áãíïÞóåé ôçí åðáíÜëçøç ÷áñáêôÞñùí, Þ áí ìåéþóåé ôï ñõèìü åðáíÜëçøçò.",
+ LTEXT "×ñçóéìïðïéÞóôå ôï Ößëôñï ðëÞêôñùí, áí èÝëåôå ôï ReactOS íá áãíïÞóåé ôçí åðáíÜëçøç ÷áñáêôÞñùí, Þ áí ìåéþóåé ôï ñõèìü åðáíÜëçøçò.",
-1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "×ñÞóç &Ößëôñïõ ðëÞêôñùí", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "Ñ&õèìßóåéò", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "ÏðôéêÞ Ýíäåéîç Þ÷ïõ", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
- LTEXT "×ñçóéìïðïéÞóôå ôçí ÏðôéêÞ Ýíäåéîç Þ÷ïõ, áí èÝëåôå ôï Reactos íá ÷ñçóéìïðïéåß ïðôéêÝò åíäåßîåéò üôáí ôï óýóôçìÜ óáò ðáñÜãåé Þ÷ï.",
+ LTEXT "×ñçóéìïðïéÞóôå ôçí ÏðôéêÞ Ýíäåéîç Þ÷ïõ, áí èÝëåôå ôï ReactOS íá ÷ñçóéìïðïéåß ïðôéêÝò åíäåßîåéò üôáí ôï óýóôçìÜ óáò ðáñÜãåé Þ÷ï.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "×ñÞóç ÏðôéêÞò Ýíäåéîçò Þ÷ïõ", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
LTEXT "ÅðéëïãÞ ïðôéêÞò ðñïåéäïðïßçóçò", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "ÁíôéèÝóåéò", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
- LTEXT "×ñçóéìïðïéÞóôå áõôÞí ôçí åðéëïãÞ, áí èÝëåôå ôï Reactos íá ÷ñçóéìïðïéåß ÷ñþìáìôá êáé ãñáììáôïóåéñÝò ó÷åäéáóìÝíá ãéá åýêïëç áíÜãíùóç.",
+ LTEXT "×ñçóéìïðïéÞóôå áõôÞí ôçí åðéëïãÞ, áí èÝëåôå ôï ReactOS íá ÷ñçóéìïðïéåß ÷ñþìáìôá êáé ãñáììáôïóåéñÝò ó÷åäéáóìÝíá ãéá åýêïëç áíÜãíùóç.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Ìå áíôéèÝóåéò", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "&Ñõèìßóåéò", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
AUTOCHECKBOX "&Use StickyKeys", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "&Settings", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
GROUPBOX "FilterKeys", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
- LTEXT "Use FilterKeys if you want Reactos to ignore brief or repeated keystrokes, or slow the repeat rate.",
+ LTEXT "Use FilterKeys if you want ReactOS to ignore brief or repeated keystrokes, or slow the repeat rate.",
-1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Use &FilterKeys", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "S&ettings", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "SoundSentry", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
- LTEXT "Use SoundSentry if you want Reactos to generate visual warnings when your system makes a sound.",
+ LTEXT "Use SoundSentry if you want ReactOS to generate visual warnings when your system makes a sound.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Use &SoundSentry", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
LTEXT "Use the following warning:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "High Contrast", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
- LTEXT "Use this option if you want Reactos to use colors and fonts designed for easy reading.",
+ LTEXT "Use this option if you want ReactOS to use colors and fonts designed for easy reading.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "&Use High Contrast", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "&Settings", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
AUTOCHECKBOX "Utilizar &StickyKeys ", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "&Configuración", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
GROUPBOX "FilterKeys", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
- LTEXT "Use FilterKeys si desea que Reactos omita la pulsaciones repetidas o breves, o reducir la velocidad de repetición.",
+ LTEXT "Use FilterKeys si desea que ReactOS omita la pulsaciones repetidas o breves, o reducir la velocidad de repetición.",
-1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Utilizar &FilterKeys", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "Co&nfiguración", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Vigilante Auditivo ", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
- LTEXT "Use el Vigilante Auditivo si desea que Reactos genere avisos visuales cuando el sistema emita un sonido.",
+ LTEXT "Use el Vigilante Auditivo si desea que ReactOS genere avisos visuales cuando el sistema emita un sonido.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Utilizar Vigilante Auditivo", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
LTEXT "Elija la advertencia visual:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Contraste alto ", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
- LTEXT "Use esta opción si desea que Reactos use colores y letras diseñadas para una lectura más cómoda.",
+ LTEXT "Use esta opción si desea que ReactOS use colores y letras diseñadas para una lectura más cómoda.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "&Utilizar Contraste alto", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "C&onfiguración", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Sons visuels", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
- LTEXT "Utilisez les sons visuels si vous voulez que Reactos génère un avertissement visuel lorsque votre système émet un son.",
+ LTEXT "Utilisez les sons visuels si vous voulez que ReactOS génère un avertissement visuel lorsque votre système émet un son.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Utiliser les &sons visuels", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
LTEXT "Utiliser l'avertissement suivant :", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
AUTOCHECKBOX "השתמש במקשים דביקים", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "הגדרות", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
GROUPBOX "FilterKeys", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
- LTEXT "Use FilterKeys if you want Reactos to ignore brief or repeated keystrokes, or slow the repeat rate.",
+ LTEXT "Use FilterKeys if you want ReactOS to ignore brief or repeated keystrokes, or slow the repeat rate.",
-1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Use &FilterKeys", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "הגדרות", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "שומר קולי", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
- LTEXT "Use SoundSentry if you want Reactos to generate visual warnings when your system makes a sound.",
+ LTEXT "Use SoundSentry if you want ReactOS to generate visual warnings when your system makes a sound.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "השתמש בשומר הקולי", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
LTEXT "השתמש באזהרות הבאות:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "ניגודיות גבוהה", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
- LTEXT "Use this option if you want Reactos to use colors and fonts designed for easy reading.",
+ LTEXT "Use this option if you want ReactOS to use colors and fonts designed for easy reading.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "השתמש בניגודיות גבוהה", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "הגדרות", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
AUTOCHECKBOX "&Beragadó billentyûk használata", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "&Beállítások", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
GROUPBOX "FilterKeys", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
- LTEXT "Use FilterKeys if you want Reactos to ignore brief or repeated keystrokes, or slow the repeat rate.",
+ LTEXT "Use FilterKeys if you want ReactOS to ignore brief or repeated keystrokes, or slow the repeat rate.",
-1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Use &FilterKeys", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "B&eállítások", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "HangFigyelõ", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
- LTEXT "Ezt a funkciót akkor használja, ha szeretné, hogy a Reactos látható figyelmeztetéseket küldjön olyankor, amikor a rendszer hangjelzést ad.",
+ LTEXT "Ezt a funkciót akkor használja, ha szeretné, hogy a ReactOS látható figyelmeztetéseket küldjön olyankor, amikor a rendszer hangjelzést ad.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "&HangFigyelõ használata", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
LTEXT "User the following warning:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Nagy kontraszt", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
- LTEXT "Ha azt szeretné, hogy a Reactos olyan színeket használjon, amelyek a könnyû olvasást teszik lehetõvé, akkor válassza ki ezt a lehetõséget.",
+ LTEXT "Ha azt szeretné, hogy a ReactOS olyan színeket használjon, amelyek a könnyû olvasást teszik lehetõvé, akkor válassza ki ezt a lehetõséget.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "&Nagy kontraszt használata", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "&Bellítások", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
AUTOCHECKBOX "&Gunakan StickyKeys", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "&Setelan", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
GROUPBOX "FilterKeys", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
- LTEXT "Gunakan FilterKeys jika anda ingin Reactos untuk mengabaikan atau tombol berulang, atau rata-rata ulangan lambat.",
+ LTEXT "Gunakan FilterKeys jika anda ingin ReactOS untuk mengabaikan atau tombol berulang, atau rata-rata ulangan lambat.",
-1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Gunakan &FilterKeys", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "S&etelan", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "SoundSentry", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
- LTEXT "Gunakan SoundSentry jika anda ingin Reactos untuk membuat peringatan visual ketika sistem anda membuat suara.",
+ LTEXT "Gunakan SoundSentry jika anda ingin ReactOS untuk membuat peringatan visual ketika sistem anda membuat suara.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Gunakan &SoundSentry", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
LTEXT "User the following warning:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Kontras Tinggi", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
- LTEXT "Gunakan opsi ini jika anda ingin Reactos untuk memakai warna dan font yang didesain guna memudahkan pembacaan.",
+ LTEXT "Gunakan opsi ini jika anda ingin ReactOS untuk memakai warna dan font yang didesain guna memudahkan pembacaan.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "&Gunakan Kontras Tinggi", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "&Setelan", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
AUTOCHECKBOX "&Plaktoetsen Gebruiken", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH_NL - PROPSHEETPADDING(20), 14
PUSHBUTTON "&Instellingen...", IDC_STICKY_BUTTON, PROPSHEETWIDTH_NL - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
GROUPBOX "Filtertoetsen", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH_NL - PROPSHEETPADDING(2), LABELLINE(7) + 2
- LTEXT "U kunt Filtertoetsen gebruiken als u wilt dat Reactos korte of herhaalde toetsaanslagen negeert, of als u de herhaalsnelheid wilt verlagen.",
+ LTEXT "U kunt Filtertoetsen gebruiken als u wilt dat ReactOS korte of herhaalde toetsaanslagen negeert, of als u de herhaalsnelheid wilt verlagen.",
-1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH_NL - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "&Filtertoetsen gebruiken", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH_NL - PROPSHEETPADDING(20), 14
PUSHBUTTON "Inst&ellingen...", IDC_FILTER_BUTTON, PROPSHEETWIDTH_NL - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Geluidswaarschuwingen", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH_NL - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
- LTEXT "Schakel Geluidswaarschuwingen gebruiken in als u wilt dat Reactos een visuele waarschuwing weergeeft wanneer het systeem een geluid laat horen.",
+ LTEXT "Schakel Geluidswaarschuwingen gebruiken in als u wilt dat ReactOS een visuele waarschuwing weergeeft wanneer het systeem een geluid laat horen.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH_NL - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "&Geluidswaarschuwingen gebruiken", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
LTEXT "Use the following warning:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Hoog Contrast", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH_NL - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
- LTEXT "U kunt deze optie gebruiken als u wilt dat Reactos kleuren en lettertypen zodanig instelt dat deze gemakkelijk te lezen zijn.",
+ LTEXT "U kunt deze optie gebruiken als u wilt dat ReactOS kleuren en lettertypen zodanig instelt dat deze gemakkelijk te lezen zijn.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH_NL - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "&Hoog contrast gebruiken", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH_NL - PROPSHEETPADDING(20), 14
PUSHBUTTON "I&nstellingen...", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH_NL - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
AUTOCHECKBOX "&Bruk Trege taster", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "&Innstillinger", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
GROUPBOX "Filtertaster", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
- LTEXT "Bruk filtertaster hvis du vil at Reactos skal ignorere lette eller gjentatte tastetrykk, eller senke repetisjonshastigheten.",
+ LTEXT "Bruk filtertaster hvis du vil at ReactOS skal ignorere lette eller gjentatte tastetrykk, eller senke repetisjonshastigheten.",
-1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Bruk &filtertaster", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "I&nnstillinger", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Skjermsignal", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
- LTEXT "Bruk skjermsignal hvis du vil at Reactos skal gi en visuell varsling når systemet lager lyd.",
+ LTEXT "Bruk skjermsignal hvis du vil at ReactOS skal gi en visuell varsling når systemet lager lyd.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Bruk &skjermsignal", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
LTEXT "Velg følgende varsling:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Høykontrast", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
- LTEXT "Velg dette alternativet hvis du vil at Reactos skal bruke farger og skrifter som er laget for å gjøre det lett leselig.",
+ LTEXT "Velg dette alternativet hvis du vil at ReactOS skal bruke farger og skrifter som er laget for å gjøre det lett leselig.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "&Bruk høykontrast", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "&Innstillinger", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Wysoki Kontrast", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
- LTEXT "Użyj tej funkcji, jeśli chcesz, żeby Reactos używał kolorów i czcionek zaprojektowanych do łatwego czytania",
+ LTEXT "Użyj tej funkcji, jeśli chcesz, żeby ReactOS używał kolorów i czcionek zaprojektowanych do łatwego czytania",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "&Użyj funkcji Wysoki Kontrast", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "U&stawienia", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
AUTOCHECKBOX "&Use StickyKeys", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "&Settings", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
GROUPBOX "FilterKeys", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
- LTEXT "Use FilterKeys if you want Reactos to ignore brief or repeated keystrokes, or slow the repeat rate.",
+ LTEXT "Use FilterKeys if you want ReactOS to ignore brief or repeated keystrokes, or slow the repeat rate.",
-1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Use &FilterKeys", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "S&ettings", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "SoundSentry", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
- LTEXT "Use SoundSentry if you want Reactos to generate visual warnings when your system makes a sound.",
+ LTEXT "Use SoundSentry if you want ReactOS to generate visual warnings when your system makes a sound.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Use &SoundSentry", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
LTEXT "Use the following warning:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Vysoký kontrast", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
- LTEXT "Use this option if you want Reactos to use colors and fonts designed for easy reading.",
+ LTEXT "Use this option if you want ReactOS to use colors and fonts designed for easy reading.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "&Use High Contrast", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "&Settings", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
AUTOCHECKBOX "&Perdor StickyKeys", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "Konfigurime", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
GROUPBOX "FilterKeys", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
- LTEXT "Perdp FilterKeys nese doni Reactos te injorohe ose perserise keystrokes, ose te ngadalsoje kohen e perseritjes.",
+ LTEXT "Perdp FilterKeys nese doni ReactOS te injorohe ose perserise keystrokes, ose te ngadalsoje kohen e perseritjes.",
-1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Perdor &FilterKeys", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "Konfigurime", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "SoundSentry", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
- LTEXT "Perdor SoundSentry nese doni qe Reactos te gjeneroj gabime vizuale kur sistemi juaj jep nje zë.",
+ LTEXT "Perdor SoundSentry nese doni qe ReactOS te gjeneroj gabime vizuale kur sistemi juaj jep nje zë.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Perdor &SoundSentry", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
LTEXT "Perdor gabimet e metejshme:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Kontrast i lartë", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
- LTEXT "Përdoreni këtë mundësi nëse doni Reactos të përdorni ngjyrat dhe gërmat projektuar për leximin e lehtë.",
+ LTEXT "Përdoreni këtë mundësi nëse doni ReactOS të përdorni ngjyrat dhe gërmat projektuar për leximin e lehtë.",
-1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
AUTOCHECKBOX "Perdor kontrast te larte", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
PUSHBUTTON "Konfigurime", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
CAPTION "Geluiden"
FONT 8, "MS Shell Dlg"
BEGIN
- LTEXT "Een geluidsschema is een verzameling geluiden die worden toegepast op Reactos- en programmagebeurtenissen. U kunt een bestaand schema slecteren of een aangepast schema opslaan.", -1, 8, 7, 230, 40
+ LTEXT "Een geluidsschema is een verzameling geluiden die worden toegepast op ReactOS- en programmagebeurtenissen. U kunt een bestaand schema slecteren of een aangepast schema opslaan.", -1, 8, 7, 230, 40
LTEXT "Geluid&sschema:", -1, 8, 42, 150, 17
COMBOBOX IDC_SOUND_SCHEME, 8, 53, 230, 46, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Opslaan als...", IDC_SAVEAS_BTN, 104, 70, 65, 15
@ stdcall RtlFirstFreeAce(ptr ptr)
@ stdcall RtlFlushSecureMemoryCache(ptr ptr)
@ stdcall RtlFormatCurrentUserKeyPath(ptr)
-@ stdcall RtlFormatMessage(ptr long long long long ptr ptr long)
-@ stdcall RtlFormatMessageEx(ptr long long long long ptr ptr long long)
+@ stdcall RtlFormatMessage(ptr long long long long ptr ptr long ptr)
+@ stdcall RtlFormatMessageEx(ptr long long long long ptr ptr long ptr long)
@ stdcall RtlFreeActivationContextStack(ptr)
@ stdcall RtlFreeAnsiString(long)
@ stdcall RtlFreeHandle(ptr ptr)
PCONSOLE_START_INFO ConsoleStartInfo)
{
BOOL Success = TRUE;
-#ifdef USE_CONSOLE_INIT_HANDLES
NTSTATUS Status;
-#endif
CONSOLE_API_MESSAGE ApiMessage;
PCONSOLE_ALLOCCONSOLE AllocConsoleRequest = &ApiMessage.Data.AllocConsoleRequest;
goto Quit;
}
-#ifdef USE_CONSOLE_INIT_HANDLES
- // Is AllocConsoleRequest->ConsoleStartInfo->Events aligned on handle boundary ????
- Status = NtWaitForMultipleObjects(2, AllocConsoleRequest->ConsoleStartInfo->Events,
+ // Is AllocConsoleRequest->ConsoleStartInfo->InitEvents aligned on handle boundary ????
+ Status = NtWaitForMultipleObjects(MAX_INIT_EVENTS,
+ AllocConsoleRequest->ConsoleStartInfo->InitEvents,
WaitAny, FALSE, NULL);
if (!NT_SUCCESS(Status))
{
goto Quit;
}
- NtClose(AllocConsoleRequest->ConsoleStartInfo->Events[0]);
- NtClose(AllocConsoleRequest->ConsoleStartInfo->Events[1]);
- if (Status != STATUS_SUCCESS)
+ NtClose(AllocConsoleRequest->ConsoleStartInfo->InitEvents[INIT_SUCCESS]);
+ NtClose(AllocConsoleRequest->ConsoleStartInfo->InitEvents[INIT_FAILURE]);
+ if (Status != INIT_SUCCESS)
{
NtCurrentPeb()->ProcessParameters->ConsoleHandle = NULL;
Success = FALSE;
}
else
-#endif
{
RtlCopyMemory(ConsoleStartInfo,
AllocConsoleRequest->ConsoleStartInfo,
PCONSOLE_START_INFO ConsoleStartInfo)
{
BOOL Success = TRUE;
-#ifdef USE_CONSOLE_INIT_HANDLES
NTSTATUS Status;
-#endif
CONSOLE_API_MESSAGE ApiMessage;
PCONSOLE_ATTACHCONSOLE AttachConsoleRequest = &ApiMessage.Data.AttachConsoleRequest;
goto Quit;
}
-#ifdef USE_CONSOLE_INIT_HANDLES
- // Is AttachConsoleRequest->ConsoleStartInfo->Events aligned on handle boundary ????
- Status = NtWaitForMultipleObjects(2, AttachConsoleRequest->ConsoleStartInfo->Events,
+ // Is AttachConsoleRequest->ConsoleStartInfo->InitEvents aligned on handle boundary ????
+ Status = NtWaitForMultipleObjects(MAX_INIT_EVENTS,
+ AttachConsoleRequest->ConsoleStartInfo->InitEvents,
WaitAny, FALSE, NULL);
if (!NT_SUCCESS(Status))
{
goto Quit;
}
- NtClose(AttachConsoleRequest->ConsoleStartInfo->Events[0]);
- NtClose(AttachConsoleRequest->ConsoleStartInfo->Events[1]);
- if (Status != STATUS_SUCCESS)
+ NtClose(AttachConsoleRequest->ConsoleStartInfo->InitEvents[INIT_SUCCESS]);
+ NtClose(AttachConsoleRequest->ConsoleStartInfo->InitEvents[INIT_FAILURE]);
+ if (Status != INIT_SUCCESS)
{
NtCurrentPeb()->ProcessParameters->ConsoleHandle = NULL;
Success = FALSE;
}
else
-#endif
{
RtlCopyMemory(ConsoleStartInfo,
AttachConsoleRequest->ConsoleStartInfo,
/* Nothing to do if this is not a console app */
if (!ConnectInfo->IsConsoleApp) return TRUE;
-#ifdef USE_CONSOLE_INIT_HANDLES
/* Wait for the connection to finish */
- Status = NtWaitForMultipleObjects(2, ConnectInfo->ConsoleStartInfo.Events,
+ // Is ConnectInfo->ConsoleStartInfo.InitEvents aligned on handle boundary ????
+ Status = NtWaitForMultipleObjects(MAX_INIT_EVENTS,
+ ConnectInfo->ConsoleStartInfo.InitEvents,
WaitAny, FALSE, NULL);
if (!NT_SUCCESS(Status))
{
return FALSE;
}
- NtClose(ConnectInfo->ConsoleStartInfo.Events[0]);
- NtClose(ConnectInfo->ConsoleStartInfo.Events[1]);
-
- if (Status != STATUS_SUCCESS)
+ NtClose(ConnectInfo->ConsoleStartInfo.InitEvents[INIT_SUCCESS]);
+ NtClose(ConnectInfo->ConsoleStartInfo.InitEvents[INIT_FAILURE]);
+ if (Status != INIT_SUCCESS)
{
NtCurrentPeb()->ProcessParameters->ConsoleHandle = NULL;
return FALSE;
}
-#endif
return TRUE;
}
if (!NT_SUCCESS(Status))
{
/* Bail out on failure */
- DPRINT1("Failed to reserved memory for VDM: %lx\n", Status);
+ DPRINT1("Failed to reserve memory for VDM: %lx\n", Status);
BaseSetLastNTError(Status);
Result = FALSE;
goto Quickie;
#define HANDLE_CREATE_NEW_CONSOLE (HANDLE)-2
#define HANDLE_CREATE_NO_WINDOW (HANDLE)-3
-// Enable (and then get rid of) this define when support for
-// console initialization handles is implemented in CONSRV.
-// #define USE_CONSOLE_INIT_HANDLES
-
/* FUNCTION PROTOTYPES ********************************************************/
CAPTION "ReactOS Setup"
FONT 8, "MS Shell Dlg"
BEGIN
- LTEXT "Welkom bij de Reactos installatiewizard.", IDC_WELCOMETITLE, 115, 8, 195, 24
- LTEXT "Deze wizard zal Reactos op je computer installeren. De wizard heeft informatie over jou en jouw computer nodig om Reactos correct in te stellen.", IDC_STATIC, 115, 40, 195, 100
+ LTEXT "Welkom bij de ReactOS installatiewizard.", IDC_WELCOMETITLE, 115, 8, 195, 24
+ LTEXT "Deze wizard zal ReactOS op je computer installeren. De wizard heeft informatie over jou en jouw computer nodig om ReactOS correct in te stellen.", IDC_STATIC, 115, 40, 195, 100
LTEXT "Klik op Volgende om voort te gaan met de installatie.", IDC_STATIC, 115, 169, 195, 17
END
return NULL;
}
+PFILENAME_ATTRIBUTE
+GetBestFileNameFromRecord(PFILE_RECORD_HEADER FileRecord)
+{
+ PFILENAME_ATTRIBUTE FileName;
+
+ FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX);
+ if (FileName == NULL)
+ {
+ FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
+ if (FileName == NULL)
+ {
+ FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
+ }
+ }
+
+ return FileName;
+}
+
/* EOF */
DPRINT("NtfsGetNameInformation() called\n");
- FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX);
- if (FileName == NULL)
- {
- FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
- if (FileName == NULL)
- {
- FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
- }
- }
+ FileName = GetBestFileNameFromRecord(FileRecord);
ASSERT(FileName != NULL);
Length = FileName->NameLength * sizeof (WCHAR);
DPRINT("NtfsGetDirectoryInformation() called\n");
- FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX);
- if (FileName == NULL)
- {
- FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
- if (FileName == NULL)
- {
- FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
- }
- }
+ FileName = GetBestFileNameFromRecord(FileRecord);
ASSERT(FileName != NULL);
Length = FileName->NameLength * sizeof (WCHAR);
DPRINT("NtfsGetFullDirectoryInformation() called\n");
- FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX);
- if (FileName == NULL)
- {
- FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
- if (FileName == NULL)
- {
- FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
- }
- }
+ FileName = GetBestFileNameFromRecord(FileRecord);
ASSERT(FileName != NULL);
Length = FileName->NameLength * sizeof (WCHAR);
DPRINT("NtfsGetBothDirectoryInformation() called\n");
- FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX);
- if (FileName == NULL)
- {
- FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
- if (FileName == NULL)
- {
- FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
- }
- }
+ FileName = GetBestFileNameFromRecord(FileRecord);
ASSERT(FileName != NULL);
ShortFileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
return STATUS_INSUFFICIENT_RESOURCES;
}
- Status = RtlUpcaseUnicodeString(&Pattern, SearchPattern, FALSE);
- if (!NT_SUCCESS(Status))
- {
- DPRINT1("RtlUpcaseUnicodeString('%wZ') failed with status 0x%08lx\n", &Pattern, Status);
- ExFreePoolWithTag(Ccb->DirectorySearchPattern, TAG_NTFS);
- Ccb->DirectorySearchPattern = NULL;
- return Status;
- }
+ memcpy(Ccb->DirectorySearchPattern, SearchPattern->Buffer, SearchPattern->Length);
Ccb->DirectorySearchPattern[SearchPattern->Length / sizeof(WCHAR)] = 0;
}
}
DPRINT1("NtfsMakeFCBFromDirEntry(%p, %p, %wZ, %p, %p)\n", Vcb, DirectoryFCB, Name, Record, fileFCB);
- FileName = GetFileNameFromRecord(Record, NTFS_FILE_NAME_WIN32);
+ FileName = GetBestFileNameFromRecord(Record);
if (!FileName)
{
return STATUS_OBJECT_NAME_NOT_FOUND; // Not sure that's the best here
StandardInfo->AllocationSize = Fcb->RFCB.AllocationSize;
StandardInfo->EndOfFile = Fcb->RFCB.FileSize;
- StandardInfo->NumberOfLinks = 0;
+ StandardInfo->NumberOfLinks = 0; /* FIXME */
StandardInfo->DeletePending = FALSE;
StandardInfo->Directory = NtfsFCBIsDirectory(Fcb);
PFILE_POSITION_INFORMATION PositionInfo,
PULONG BufferLength)
{
- UNREFERENCED_PARAMETER(FileObject);
-
DPRINT("NtfsGetPositionInformation() called\n");
if (*BufferLength < sizeof(FILE_POSITION_INFORMATION))
return STATUS_BUFFER_OVERFLOW;
- PositionInfo->CurrentByteOffset.QuadPart = 0;
-// FileObject->CurrentByteOffset.QuadPart;
+ PositionInfo->CurrentByteOffset.QuadPart = FileObject->CurrentByteOffset.QuadPart;
DPRINT("Getting position %I64x\n",
PositionInfo->CurrentByteOffset.QuadPart);
PFILE_BASIC_INFORMATION BasicInfo,
PULONG BufferLength)
{
+ PFILENAME_ATTRIBUTE FileName = &Fcb->Entry;
+
DPRINT("NtfsGetBasicInformation() called\n");
if (*BufferLength < sizeof(FILE_BASIC_INFORMATION))
return STATUS_BUFFER_OVERFLOW;
-#if 0
- CdfsDateTimeToFileTime(Fcb,
- &BasicInfo->CreationTime);
- CdfsDateTimeToFileTime(Fcb,
- &BasicInfo->LastAccessTime);
- CdfsDateTimeToFileTime(Fcb,
- &BasicInfo->LastWriteTime);
- CdfsDateTimeToFileTime(Fcb,
- &BasicInfo->ChangeTime);
-
- CdfsFileFlagsToAttributes(Fcb,
- &BasicInfo->FileAttributes);
-#else
- UNREFERENCED_PARAMETER(FileObject);
- UNREFERENCED_PARAMETER(Fcb);
- UNREFERENCED_PARAMETER(DeviceObject);
- UNREFERENCED_PARAMETER(BasicInfo);
-#endif
+ BasicInfo->CreationTime.QuadPart = FileName->CreationTime;
+ BasicInfo->LastAccessTime.QuadPart = FileName->LastAccessTime;
+ BasicInfo->LastWriteTime.QuadPart = FileName->LastWriteTime;
+ BasicInfo->ChangeTime.QuadPart = FileName->ChangeTime;
+
+ NtfsFileFlagsToAttributes(FileName->FileAttributes, &BasicInfo->FileAttributes);
*BufferLength -= sizeof(FILE_BASIC_INFORMATION);
PINDEX_ENTRY_ATTRIBUTE IndexEntry,
BOOLEAN DirSearch)
{
+ BOOLEAN Ret, Alloc = FALSE;
UNICODE_STRING EntryName;
EntryName.Buffer = IndexEntry->FileName.Name;
if (DirSearch)
{
- return FsRtlIsNameInExpression(FileName, &EntryName, (IndexEntry->FileName.NameType != NTFS_FILE_NAME_POSIX), NULL);
+ UNICODE_STRING IntFileName;
+ if (IndexEntry->FileName.NameType != NTFS_FILE_NAME_POSIX)
+ {
+ NT_VERIFY(NT_SUCCESS(RtlUpcaseUnicodeString(&IntFileName, FileName, TRUE)));
+ Alloc = TRUE;
+ }
+ else
+ {
+ IntFileName = *FileName;
+ }
+
+ Ret = FsRtlIsNameInExpression(&IntFileName, &EntryName, (IndexEntry->FileName.NameType != NTFS_FILE_NAME_POSIX), NULL);
+
+ if (Alloc)
+ {
+ RtlFreeUnicodeString(&IntFileName);
+ }
+
+ return Ret;
}
else
{
while (IndexEntry < IndexEntryEnd &&
!(IndexEntry->Flags & NTFS_INDEX_ENTRY_END))
{
+ UNICODE_STRING EntryName;
+ EntryName.Buffer = IndexEntry->FileName.Name;
+ EntryName.Length =
+ EntryName.MaximumLength = IndexEntry->FileName.NameLength * sizeof(WCHAR);
+
+ if (IndexEntry->Flags & NTFS_INDEX_ENTRY_NODE)
+ DPRINT1("Warning: sub-node browsing unimplemented! (%wZ)\n", &EntryName);
+
if ((IndexEntry->Data.Directory.IndexedFile & NTFS_MFT_MASK) > 0x10 &&
CurrentEntry >= *FirstEntry &&
CompareFileName(FileName, IndexEntry, DirSearch))
while (IndexEntry < IndexEntryEnd &&
!(IndexEntry->Flags & NTFS_INDEX_ENTRY_END))
{
+ UNICODE_STRING EntryName;
+ EntryName.Buffer = IndexEntry->FileName.Name;
+ EntryName.Length =
+ EntryName.MaximumLength = IndexEntry->FileName.NameLength * sizeof(WCHAR);
+
+ if (IndexEntry->Flags & NTFS_INDEX_ENTRY_NODE)
+ DPRINT1("Warning: sub-node browsing unimplemented! (%wZ)\n", &EntryName);
+
if ((IndexEntry->Data.Directory.IndexedFile & NTFS_MFT_MASK) > 0x10 &&
CurrentEntry >= *FirstEntry &&
CompareFileName(FileName, IndexEntry, DirSearch))
#define NTFS_FILE_TYPE_HIDDEN 0x2
#define NTFS_FILE_TYPE_SYSTEM 0x4
#define NTFS_FILE_TYPE_ARCHIVE 0x20
+#define NTFS_FILE_TYPE_REPARSE 0x400
#define NTFS_FILE_TYPE_COMPRESSED 0x800
#define NTFS_FILE_TYPE_DIRECTORY 0x10000000
ULONGLONG AllocatedSize;
ULONGLONG DataSize;
ULONG FileAttributes;
- ULONG AlignmentOrReserved;
+ union
+ {
+ struct
+ {
+ USHORT PackedEaSize;
+ USHORT AlignmentOrReserved;
+ } EaInfo;
+ ULONG ReparseTag;
+ } Extended;
UCHAR NameLength;
UCHAR NameType;
WCHAR Name[1];
ULONG Unknown2;
} VOLINFO_ATTRIBUTE, *PVOLINFO_ATTRIBUTE;
+typedef struct {
+ ULONG ReparseTag;
+ USHORT DataLength;
+ USHORT Reserved;
+ UCHAR Data[1];
+} REPARSE_POINT_ATTRIBUTE, *PREPARSE_POINT_ATTRIBUTE;
+
typedef struct
{
NTFSIDENTIFIER Identifier;
PFILENAME_ATTRIBUTE
GetFileNameFromRecord(PFILE_RECORD_HEADER FileRecord, UCHAR NameType);
+PFILENAME_ATTRIBUTE
+GetBestFileNameFromRecord(PFILE_RECORD_HEADER FileRecord);
+
/* blockdev.c */
NTSTATUS
#include <scsi.h>
#include <ntddscsi.h>
#include <ntdddisk.h>
+#include <mountdev.h>
#define NDEBUG
#include <debug.h>
break;
default:
- if ('M' == (Stack->Parameters.DeviceIoControl.IoControlCode >> 16)) {
- DPRINT1(" got ioctl intended for the mount manager: 0x%lX\n", Stack->Parameters.DeviceIoControl.IoControlCode);
+ if (DEVICE_TYPE_FROM_CTL_CODE(Stack->Parameters.DeviceIoControl.IoControlCode) == MOUNTDEVCONTROLTYPE)
+ {
+ switch (Stack->Parameters.DeviceIoControl.IoControlCode)
+ {
+ case IOCTL_MOUNTDEV_QUERY_DEVICE_NAME:
+ DPRINT1("Got unexpected IOCTL_MOUNTDEV_QUERY_DEVICE_NAME\n");
+ break;
+ case IOCTL_MOUNTDEV_QUERY_UNIQUE_ID:
+ DPRINT1("Got unexpected IOCTL_MOUNTDEV_QUERY_UNIQUE_ID\n");
+ break;
+ default:
+ DPRINT1(" got ioctl intended for the mount manager: 0x%lX\n", Stack->Parameters.DeviceIoControl.IoControlCode);
+ break;
+ }
} else {
DPRINT1(" unknown ioctl code: 0x%lX\n", Stack->Parameters.DeviceIoControl.IoControlCode);
}
#define REACTOS_VERSION_DLL
-#define REACTOS_STR_FILE_DESCRIPTION "Reactos audio mapper driver"
+#define REACTOS_STR_FILE_DESCRIPTION "ReactOS audio mapper driver"
#define REACTOS_STR_INTERNAL_NAME "wdmaud"
#define REACTOS_STR_ORIGINAL_FILENAME "wdmaud.sys"
#include <reactos/version.rc>
VDDTerminateVDM(VOID);
+/*
+ * IRQ services
+ */
+
+WORD
+WINAPI
+VDDReserveIrqLine
+(
+ IN HANDLE hVdd,
+ IN WORD IrqLine
+);
+
+BOOL
+WINAPI
+VDDReleaseIrqLine
+(
+ IN HANDLE hVdd,
+ IN WORD IrqLine
+);
+
+
/*
* I/O Port services
*/
WINAPI
VDDInstallIOHook
(
- HANDLE hVdd,
- WORD cPortRange,
- PVDD_IO_PORTRANGE pPortRange,
- PVDD_IO_HANDLERS IOhandler
+ IN HANDLE hVdd,
+ IN WORD cPortRange,
+ IN PVDD_IO_PORTRANGE pPortRange,
+ IN PVDD_IO_HANDLERS IOhandler
);
VOID
WINAPI
VDDDeInstallIOHook
(
- HANDLE hVdd,
- WORD cPortRange,
- PVDD_IO_PORTRANGE pPortRange
+ IN HANDLE hVdd,
+ IN WORD cPortRange,
+ IN PVDD_IO_PORTRANGE pPortRange
+);
+
+
+/*
+ * DMA services
+ */
+
+typedef struct _VDD_DMA_INFO
+{
+ WORD addr;
+ WORD count;
+ WORD page;
+ BYTE status;
+ BYTE mode;
+ BYTE mask;
+} VDD_DMA_INFO, *PVDD_DMA_INFO;
+
+#define VDD_DMA_ADDR 0x01
+#define VDD_DMA_COUNT 0x02
+#define VDD_DMA_PAGE 0x04
+#define VDD_DMA_STATUS 0x08
+#define VDD_DMA_ALL (VDD_DMA_ADDR | VDD_DMA_COUNT | VDD_DMA_PAGE | VDD_DMA_STATUS)
+
+DWORD
+WINAPI
+VDDRequestDMA
+(
+ IN HANDLE hVdd,
+ IN WORD iChannel,
+ IN OUT PVOID Buffer,
+ IN DWORD length
+);
+
+BOOL
+WINAPI
+VDDQueryDMA
+(
+ IN HANDLE hVdd,
+ IN WORD iChannel,
+ IN PVDD_DMA_INFO pDmaInfo
+);
+
+BOOL
+WINAPI
+VDDSetDMA
+(
+ IN HANDLE hVdd,
+ IN WORD iChannel,
+ IN WORD fDMA,
+ IN PVDD_DMA_INFO pDmaInfo
);
#define MAXULONG 0xffffffff
#define MAXLONGLONG (0x7fffffffffffffffLL)
-/* Multiplication and Shift Operations. Note: we don't use inline
- asm functions, the compiler can optimize this better. */
-#define Int32x32To64(a,b) (((__int64)(long)(a))*((__int64)(long)(b)))
-#define UInt32x32To64(a,b) ((unsigned __int64)(unsigned int)(a)*(unsigned __int64)(unsigned int)(b))
+/* 32 to 64 bit multiplication. GCC is really bad at optimizing the native math */
+#if defined(_M_IX86) && defined(__GNUC__) && \
+ !defined(MIDL_PASS)&& !defined(RC_INVOKED) && !defined(_M_CEE_PURE)
+ #define Int32x32To64(a,b) __emul(a,b)
+ #define UInt32x32To64(a,b) __emulu(a,b)
+#else
+ #define Int32x32To64(a,b) (((__int64)(long)(a))*((__int64)(long)(b)))
+ #define UInt32x32To64(a,b) ((unsigned __int64)(unsigned int)(a)*(unsigned __int64)(unsigned int)(b))
+#endif
#if defined(MIDL_PASS)|| defined(RC_INVOKED) || defined(_M_CEE_PURE)
/* Use native math */
#define SPQ_SCAN_INFORM_USER 0x00000010
#define SPQ_SCAN_PRUNE_COPY_QUEUE 0x00000020
#define SPRDI_FIND_DUPS 0x00000001
-#define SPSVCINST_TAGTOFRONT 0x00000001
-#define SPSVCINST_ASSOCSERVICE 0x00000002
-#define SPSVCINST_DELETEEVENTLOGENTRY 0x00000004
-#define SPSVCINST_NOCLOBBER_DISPLAYNAME 0x00000008
-#define SPSVCINST_NOCLOBBER_STARTTYPE 0x00000010
-#define SPSVCINST_NOCLOBBER_ERRORCONTROL 0x00000020
-#define SPSVCINST_NOCLOBBER_LOADORDERGROUP 0x00000040
-#define SPSVCINST_NOCLOBBER_DEPENDENCIES 0x00000080
-#define SPSVCINST_NOCLOBBER_DESCRIPTION 0x00000100
-#define SPSVCINST_STOPSERVICE 0x00000200
+
+#define SPSVCINST_TAGTOFRONT 0x00000001
+#define SPSVCINST_ASSOCSERVICE 0x00000002
+#define SPSVCINST_DELETEEVENTLOGENTRY 0x00000004
+#define SPSVCINST_NOCLOBBER_DISPLAYNAME 0x00000008
+#define SPSVCINST_NOCLOBBER_STARTTYPE 0x00000010
+#define SPSVCINST_NOCLOBBER_ERRORCONTROL 0x00000020
+#define SPSVCINST_NOCLOBBER_LOADORDERGROUP 0x00000040
+#define SPSVCINST_NOCLOBBER_DEPENDENCIES 0x00000080
+#define SPSVCINST_NOCLOBBER_DESCRIPTION 0x00000100
+#define SPSVCINST_STOPSERVICE 0x00000200
+#define SPSVCINST_CLOBBER_SECURITY 0x00000400
+#define SPSVCINST_STARTSERVICE 0x00000800
+
#define SPWPT_SELECTDEVICE 0x00000001
#define SPWP_USE_DEVINFO_DATA 0x00000001
#define SRCINFO_PATH 1
WINSETUPAPI VOID WINAPI SetupTermDefaultQueueCallback(_In_ PVOID);
WINSETUPAPI BOOL WINAPI SetupTerminateFileLog(_In_ HSPFILELOG);
+WINSETUPAPI
+BOOL
+WINAPI
+SetupUninstallOEMInfA(
+ _In_ PCSTR InfFileName,
+ _In_ DWORD Flags,
+ _In_ PVOID Reserved);
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupUninstallOEMInfW(
+ _In_ PCWSTR InfFileName,
+ _In_ DWORD Flags,
+ _In_ PVOID Reserved);
+
WINSETUPAPI DWORD WINAPI StampFileSecurity(PCWSTR, PSECURITY_DESCRIPTOR);
#define SetupSetFileQueueAlternatePlatform SetupSetFileQueueAlternatePlatformW
#define SetupSetPlatformPathOverride SetupSetPlatformPathOverrideW
#define SetupSetSourceList SetupSetSourceListW
+#define SetupUninstallOEMInf SetupUninstallOEMInfW
#else
#define PSP_FILE_CALLBACK PSP_FILE_CALLBACK_A
#define SetupAddInstallSectionToDiskSpaceList SetupAddInstallSectionToDiskSpaceListA
#define SetupSetFileQueueAlternatePlatform SetupSetFileQueueAlternatePlatformA
#define SetupSetPlatformPathOverride SetupSetPlatformPathOverrideA
#define SetupSetSourceList SetupSetSourceListA
+#define SetupUninstallOEMInf SetupUninstallOEMInfA
#endif /* UNICODE */
#endif /* RC_INVOKED */
#define MAXDWORD 0xffffffff
#define MAXLONGLONG (0x7fffffffffffffffLL)
-/* Multiplication and Shift Operations. Note: we don't use inline
- asm functions, the compiler can optimize this better. */
-#define Int32x32To64(a,b) (((__int64)(long)(a))*((__int64)(long)(b)))
-#define UInt32x32To64(a,b) ((unsigned __int64)(unsigned int)(a)*(unsigned __int64)(unsigned int)(b))
+/* 32 to 64 bit multiplication. GCC is really bad at optimizing the native math */
+#if defined(_M_IX86) && defined(__GNUC__) && \
+ !defined(MIDL_PASS)&& !defined(RC_INVOKED) && !defined(_M_CEE_PURE)
+ #define Int32x32To64(a,b) __emul(a,b)
+ #define UInt32x32To64(a,b) __emulu(a,b)
+#else
+ #define Int32x32To64(a,b) (((__int64)(long)(a))*((__int64)(long)(b)))
+ #define UInt32x32To64(a,b) ((unsigned __int64)(unsigned int)(a)*(unsigned __int64)(unsigned int)(b))
+#endif
#if defined(MIDL_PASS)|| defined(RC_INVOKED) || defined(_M_CEE_PURE)
/* Use native math */
ULONG WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
BOOLEAN WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
-NTSTATUS WINAPI RtlFormatMessage(LPWSTR,UCHAR,BOOLEAN,BOOLEAN,BOOLEAN,va_list *,LPWSTR,ULONG);
+NTSTATUS WINAPI RtlFormatMessage(PWSTR,ULONG,BOOLEAN,BOOLEAN,BOOLEAN,va_list *,PWSTR,ULONG,PULONG);
void WINAPI RtlFreeAnsiString(PANSI_STRING);
BOOLEAN WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *);
BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
UINT uCodePage;
} CONSOLE_PROPERTIES;
+enum
+{
+ INIT_SUCCESS, // STATUS_WAIT_0
+ INIT_FAILURE, // STATUS_WAIT_1
+ MAX_INIT_EVENTS
+};
+
typedef struct _CONSOLE_START_INFO
{
HANDLE ConsoleHandle;
HANDLE InputHandle;
HANDLE OutputHandle;
HANDLE ErrorHandle;
- HANDLE Events[2];
+ HANDLE InitEvents[MAX_INIT_EVENTS];
CONSOLE_PROPERTIES;
} CONSOLE_START_INFO, *PCONSOLE_START_INFO;
$endif(_WINNT_)
#define MAXLONGLONG (0x7fffffffffffffffLL)
-/* Multiplication and Shift Operations. Note: we don't use inline
- asm functions, the compiler can optimize this better. */
-#define Int32x32To64(a,b) (((__int64)(long)(a))*((__int64)(long)(b)))
-#define UInt32x32To64(a,b) ((unsigned __int64)(unsigned int)(a)*(unsigned __int64)(unsigned int)(b))
+/* 32 to 64 bit multiplication. GCC is really bad at optimizing the native math */
+#if defined(_M_IX86) && defined(__GNUC__) && \
+ !defined(MIDL_PASS)&& !defined(RC_INVOKED) && !defined(_M_CEE_PURE)
+ #define Int32x32To64(a,b) __emul(a,b)
+ #define UInt32x32To64(a,b) __emulu(a,b)
+#else
+ #define Int32x32To64(a,b) (((__int64)(long)(a))*((__int64)(long)(b)))
+ #define UInt32x32To64(a,b) ((unsigned __int64)(unsigned int)(a)*(unsigned __int64)(unsigned int)(b))
+#endif
#if defined(MIDL_PASS)|| defined(RC_INVOKED) || defined(_M_CEE_PURE)
/* Use native math */
#define THREAD_BASE_PRIORITY_MAX 2
#define THREAD_BASE_PRIORITY_MIN (-2)
#define THREAD_BASE_PRIORITY_IDLE (-15)
+
+#define PROCESS_SET_LIMITED_INFORMATION 0x2000
+#define THREAD_RESUME 0x1000
+
/*
* To prevent gcc compiler warnings, bracket these defines when initialising
* a SID_IDENTIFIER_AUTHORITY, eg.
State->PrefixFlags |= FAST486_PREFIX_OPSIZE;
}
- /* Check if the interrupt handler is more privileged */
- if (Fast486GetCurrentPrivLevel(State) > GET_SEGMENT_RPL(SegmentSelector))
+ /* Check if the interrupt handler is more privileged or if we're in V86 mode */
+ if ((Fast486GetCurrentPrivLevel(State) > GET_SEGMENT_RPL(SegmentSelector))
+ || State->Flags.Vm)
{
/* Read the TSS */
if (!Fast486ReadLinearMemory(State,
/* Switch to the new privilege level */
State->Cpl = GET_SEGMENT_RPL(SegmentSelector);
+ if (State->Flags.Vm)
+ {
+ /* Clear the VM flag */
+ State->Flags.Vm = FALSE;
+
+ /* Push GS, FS, DS and ES */
+ if (!Fast486StackPush(State, State->SegmentRegs[FAST486_REG_GS].Selector)) goto Cleanup;
+ if (!Fast486StackPush(State, State->SegmentRegs[FAST486_REG_FS].Selector)) goto Cleanup;
+ if (!Fast486StackPush(State, State->SegmentRegs[FAST486_REG_DS].Selector)) goto Cleanup;
+ if (!Fast486StackPush(State, State->SegmentRegs[FAST486_REG_ES].Selector)) goto Cleanup;
+
+ /* Now load them with NULL selectors, since they are useless in protected mode */
+ if (!Fast486LoadSegment(State, FAST486_REG_GS, 0)) goto Cleanup;
+ if (!Fast486LoadSegment(State, FAST486_REG_FS, 0)) goto Cleanup;
+ if (!Fast486LoadSegment(State, FAST486_REG_DS, 0)) goto Cleanup;
+ if (!Fast486LoadSegment(State, FAST486_REG_ES, 0)) goto Cleanup;
+ }
+
/* Check the new (higher) privilege level */
switch (State->Cpl)
{
BOOLEAN Size = State->SegmentRegs[FAST486_REG_CS].Size;
/* The OPSIZE prefix toggles the size */
- if (State->PrefixFlags & FAST486_PREFIX_OPSIZE) Size = !Size;
+ TOGGLE_OPSIZE(Size);
if (Size)
{
return FALSE;
}
+ /* Store the value in SS:[ESP - 4] */
+ if (!Fast486WriteMemory(State,
+ FAST486_REG_SS,
+ State->GeneralRegs[FAST486_REG_ESP].Long - sizeof(ULONG),
+ &Value,
+ sizeof(ULONG)))
+ {
+ /* Exception occurred */
+ return FALSE;
+ }
+
/* Subtract ESP by 4 */
State->GeneralRegs[FAST486_REG_ESP].Long -= sizeof(ULONG);
-
- /* Store the value in SS:ESP */
- return Fast486WriteMemory(State,
- FAST486_REG_SS,
- State->GeneralRegs[FAST486_REG_ESP].Long,
- &Value,
- sizeof(ULONG));
}
else
{
return FALSE;
}
+ /* Store the value in SS:[SP - 2] */
+ if (!Fast486WriteMemory(State,
+ FAST486_REG_SS,
+ LOWORD(State->GeneralRegs[FAST486_REG_ESP].LowWord - sizeof(USHORT)),
+ &ShortValue,
+ sizeof(USHORT)))
+ {
+ /* Exception occurred */
+ return FALSE;
+ }
+
/* Subtract SP by 2 */
State->GeneralRegs[FAST486_REG_ESP].LowWord -= sizeof(USHORT);
-
- /* Store the value in SS:SP */
- return Fast486WriteMemory(State,
- FAST486_REG_SS,
- State->GeneralRegs[FAST486_REG_ESP].LowWord,
- &ShortValue,
- sizeof(USHORT));
}
+
+ return TRUE;
}
FORCEINLINE
if (State->ControlRegisters[FAST486_REG_CR0] & FAST486_CR0_PE)
{
/* Check IOPL */
- if (State->Flags.Iopl >= State->SegmentRegs[FAST486_REG_CS].Dpl)
+ if (State->Flags.Iopl >= Fast486GetCurrentPrivLevel(State))
{
/* Clear the interrupt flag */
State->Flags.If = FALSE;
if (State->ControlRegisters[FAST486_REG_CR0] & FAST486_CR0_PE)
{
/* Check IOPL */
- if (State->Flags.Iopl >= State->SegmentRegs[FAST486_REG_CS].Dpl)
+ if (State->Flags.Iopl >= Fast486GetCurrentPrivLevel(State))
{
/* Set the interrupt flag */
State->Flags.If = TRUE;
{
UCHAR IntNum;
+ /* Check for V86 mode */
+ if (State->Flags.Vm && (State->Flags.Iopl != 3))
+ {
+ /* Call the V86 monitor */
+ Fast486Exception(State, FAST486_EXCEPTION_GP);
+ return;
+ }
+
switch (Opcode)
{
case 0xCC: // INT 3
/* Return to VM86 mode */
ULONG Es, Ds, Fs, Gs;
- /* Pop ESP, SS, ES, FS, GS */
+ /* Pop ESP, SS, ES, DS, FS, GS */
if (!Fast486StackPop(State, &StackPtr)) return;
if (!Fast486StackPop(State, &StackSel)) return;
if (!Fast486StackPop(State, &Es)) return;
NTSTATUS
NTAPI
RtlFindMessage(
- PVOID BaseAddress,
- ULONG Type,
- ULONG Language,
- ULONG MessageId,
- PMESSAGE_RESOURCE_ENTRY *MessageResourceEntry)
+ IN PVOID BaseAddress,
+ IN ULONG Type,
+ IN ULONG Language,
+ IN ULONG MessageId,
+ OUT PMESSAGE_RESOURCE_ENTRY* MessageResourceEntry)
{
LDR_RESOURCE_INFO ResourceInfo;
PIMAGE_RESOURCE_DATA_ENTRY ResourceDataEntry;
return STATUS_SUCCESS;
}
+/*
+ * @unimplemented
+ */
NTSTATUS
NTAPI
RtlFormatMessageEx(
- PWSTR Message,
- UCHAR MaxWidth,
- BOOLEAN IgnoreInserts,
- BOOLEAN Ansi,
- BOOLEAN ArgumentIsArray,
- va_list *Arguments,
- PWSTR Buffer,
- ULONG BufferSize,
- ULONG Flags)
+ IN PWSTR Message,
+ IN ULONG MaxWidth OPTIONAL,
+ IN BOOLEAN IgnoreInserts,
+ IN BOOLEAN ArgumentsAreAnsi,
+ IN BOOLEAN ArgumentsAreAnArray,
+ IN va_list* Arguments,
+ OUT PWSTR Buffer,
+ IN ULONG BufferSize,
+ OUT PULONG ReturnLength OPTIONAL,
+ IN ULONG Flags)
{
- DPRINT1("RtlFormatMessage(%S, %u, %s, %s, %s, %s, %p, %lu %lx)\n",
- Message, MaxWidth, IgnoreInserts ? "TRUE" : "FALSE", Ansi ? "TRUE" : "FALSE",
- ArgumentIsArray ? "TRUE" : "FALSE", (PSTR)Arguments, Buffer, BufferSize, Flags);
+ DPRINT1("RtlFormatMessage(%S, %lu, %s, %s, %s, %p, %p, %lu, %p, %lx)\n",
+ Message, MaxWidth, IgnoreInserts ? "TRUE" : "FALSE", ArgumentsAreAnsi ? "TRUE" : "FALSE",
+ ArgumentsAreAnArray ? "TRUE" : "FALSE", Arguments, Buffer, BufferSize,
+ ReturnLength, Flags);
UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/**********************************************************************
- * RtlFormatMessage (NTDLL.@)
+ * RtlFormatMessage (NTDLL.@)
*
* Formats a message (similar to sprintf).
*
* PARAMS
- * Message [I] Message to format.
- * MaxWidth [I] Maximum width in characters of each output line.
- * IgnoreInserts [I] Whether to copy the message without processing inserts.
- * Ansi [I] Whether Arguments may have ANSI strings.
- * ArgumentsIsArray [I] Whether Arguments is actually an array rather than a va_list *.
- * Arguments [I]
- * Buffer [O] Buffer to store processed message in.
- * BufferSize [I] Size of Buffer (in bytes?).
+ * Message [I] Message to format.
+ * MaxWidth [I] Maximum width in characters of each output line (optional).
+ * IgnoreInserts [I] Whether to copy the message without processing inserts.
+ * ArgumentsAreAnsi [I] Whether Arguments may have ANSI strings.
+ * ArgumentsAreAnArray [I] Whether Arguments is actually an array rather than a va_list *.
+ * Arguments [I]
+ * Buffer [O] Buffer to store processed message in.
+ * BufferSize [I] Size of Buffer (in bytes).
+ * ReturnLength [O] Size of the formatted message (in bytes; optional).
*
* RETURNS
* NTSTATUS code.
NTSTATUS
NTAPI
RtlFormatMessage(
- PWSTR Message,
- UCHAR MaxWidth,
- BOOLEAN IgnoreInserts,
- BOOLEAN Ansi,
- BOOLEAN ArgumentIsArray,
- va_list *Arguments,
- PWSTR Buffer,
- ULONG BufferSize)
+ IN PWSTR Message,
+ IN ULONG MaxWidth OPTIONAL,
+ IN BOOLEAN IgnoreInserts,
+ IN BOOLEAN ArgumentsAreAnsi,
+ IN BOOLEAN ArgumentsAreAnArray,
+ IN va_list* Arguments,
+ OUT PWSTR Buffer,
+ IN ULONG BufferSize,
+ OUT PULONG ReturnLength OPTIONAL)
{
- return RtlFormatMessageEx(Message, MaxWidth, IgnoreInserts, Ansi, ArgumentIsArray, Arguments, Buffer, BufferSize, 0);
+ /* Call the extended API */
+ return RtlFormatMessageEx(Message,
+ MaxWidth,
+ IgnoreInserts,
+ ArgumentsAreAnsi,
+ ArgumentsAreAnArray,
+ Arguments,
+ Buffer,
+ BufferSize,
+ ReturnLength,
+ 0);
}
/* EOF */
static
VOID FASTCALL EnvironmentStringToUnicodeString (PWCHAR wsIn, PUNICODE_STRING usOut)
{
- if (wsIn)
- {
- PWCHAR CurrentChar = wsIn;
-
- while (*CurrentChar)
- {
- while(*CurrentChar++);
- }
- /* double nullterm at end */
- CurrentChar++;
-
- usOut->Buffer = wsIn;
- /* FIXME: the last (double) nullterm should perhaps not be included in Length
- * but only in MaximumLength. -Gunnar */
- usOut->MaximumLength = usOut->Length = (CurrentChar-wsIn) * sizeof(WCHAR);
- }
- else
- {
- usOut->Buffer = NULL;
- usOut->Length = usOut->MaximumLength = 0;
- }
+ if (wsIn)
+ {
+ PWCHAR CurrentChar = wsIn;
+
+ while (*CurrentChar)
+ {
+ while(*CurrentChar++);
+ }
+ /* double nullterm at end */
+ CurrentChar++;
+
+ usOut->Buffer = wsIn;
+ /* FIXME: the last (double) nullterm should perhaps not be included in Length
+ * but only in MaximumLength. -Gunnar */
+ usOut->MaximumLength = usOut->Length = (CurrentChar-wsIn) * sizeof(WCHAR);
+ }
+ else
+ {
+ usOut->Buffer = NULL;
+ usOut->Length = usOut->MaximumLength = 0;
+ }
}
ArgumentList = RtlAllocateHeap(RtlGetProcessHeap(), 0, 512 * sizeof(PCHAR));
if (!ArgumentList)
{
- DPRINT1("ERR: no mem!");
- Status = STATUS_NO_MEMORY;
- goto fail;
+ DPRINT1("ERR: no mem!");
+ Status = STATUS_NO_MEMORY;
+ goto fail;
}
/* Use a null pointer as default */
Status = RtlUnicodeStringToAnsiString(&AnsiCmdLine, CmdLineString, TRUE);
if (!NT_SUCCESS(Status))
{
- DPRINT1("ERR: no mem(guess)\n");
- goto fail;
+ DPRINT1("ERR: no mem(guess)\n");
+ goto fail;
}
/* Save parameters for parsing */
{
/* Allocate a buffer for the destination */
Destination = RtlAllocateHeap(RtlGetProcessHeap(), 0, Length + sizeof(WCHAR));
- if (!Destination)
- {
- DPRINT1("ERR: no mem!");
- Status = STATUS_NO_MEMORY;
- goto fail;
- }
+ if (!Destination)
+ {
+ DPRINT1("ERR: no mem!");
+ Status = STATUS_NO_MEMORY;
+ goto fail;
+ }
/* Start parsing */
while (*Source)
/* Null terminate the token pointer list */
*ArgumentList++ = NULL;
- /* Now handle the enviornment, point the envp at our current list location. */
+ /* Now handle the environment, point the envp at our current list location. */
envp = ArgumentList;
if (ProcessParameters->Environment)
{
- EnvironmentStringToUnicodeString(ProcessParameters->Environment, &UnicodeEnvironment);
- Status = RtlUnicodeStringToAnsiString (& AnsiEnvironment, & UnicodeEnvironment, TRUE);
- if (!NT_SUCCESS(Status))
- {
- DPRINT1("ERR: no mem(guess)\n");
- goto fail;
- }
-
- ASSERT(AnsiEnvironment.Buffer);
-
- Source = AnsiEnvironment.Buffer;
- while (*Source)
- {
- /* Save a pointer to this token */
- *ArgumentList++ = Source;
-
- /* Keep looking for another variable */
- while (*Source++);
- }
-
- /* Null terminate the list again */
- *ArgumentList++ = NULL;
+ EnvironmentStringToUnicodeString(ProcessParameters->Environment, &UnicodeEnvironment);
+ Status = RtlUnicodeStringToAnsiString (& AnsiEnvironment, & UnicodeEnvironment, TRUE);
+ if (!NT_SUCCESS(Status))
+ {
+ DPRINT1("ERR: no mem(guess)\n");
+ goto fail;
+ }
+
+ ASSERT(AnsiEnvironment.Buffer);
+
+ Source = AnsiEnvironment.Buffer;
+ while (*Source)
+ {
+ /* Save a pointer to this token */
+ *ArgumentList++ = Source;
+
+ /* Keep looking for another variable */
+ while (*Source++);
+ }
+
+ /* Null terminate the list again */
+ *ArgumentList++ = NULL;
}
/* Breakpoint if we were requested to do so */
if (ProcessParameters->DebugFlags) DbgBreakPoint();
if (CcPinMappedData(FileObject, FileOffset, Length, Flags, Bcb))
return TRUE;
else
- CcUnpinData(Bcb);
+ CcUnpinData(*Bcb);
}
return FALSE;
}
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
- if (Name.Buffer) ExFreePool(Name.Buffer);
+ if (Name.Buffer)
+ {
+ ExFreePool(Name.Buffer);
+ }
Status = _SEH2_GetExceptionCode();
}
_SEH2_END;
MmMpwThreadMain(PVOID Parameter)
{
NTSTATUS Status;
+#ifndef NEWCC
ULONG PagesWritten;
+#endif
LARGE_INTEGER Timeout;
UNREFERENCED_PARAMETER(Parameter);
return;
}
+#ifndef NEWCC
PagesWritten = 0;
-#ifndef NEWCC
// XXX arty -- we flush when evicting pages or destorying cache
// sections.
CcRosFlushDirtyPages(128, &PagesWritten, FALSE);
if (SHARE_COUNT_FROM_SSE(Entry) == 0)
{
PFILE_OBJECT FileObject;
-#ifndef NEWCC
- PROS_SHARED_CACHE_MAP SharedCacheMap;
-#endif
SWAPENTRY SavedSwapEntry;
PFN_NUMBER Page;
+#ifndef NEWCC
+ PROS_SHARED_CACHE_MAP SharedCacheMap;
BOOLEAN IsImageSection;
LARGE_INTEGER FileOffset;
FileOffset.QuadPart = Offset->QuadPart + Segment->Image.FileOffset;
-
IsImageSection = Section->AllocationAttributes & SEC_IMAGE ? TRUE : FALSE;
+#endif
Page = PFN_FROM_SSE(Entry);
FileObject = Section->FileObject;
PFN_NUMBER Page;
MM_SECTION_PAGEOUT_CONTEXT Context;
SWAPENTRY SwapEntry;
- ULONGLONG FileOffset;
NTSTATUS Status;
- PFILE_OBJECT FileObject;
#ifndef NEWCC
+ ULONGLONG FileOffset;
+ PFILE_OBJECT FileObject;
PROS_SHARED_CACHE_MAP SharedCacheMap = NULL;
+ BOOLEAN IsImageSection;
#endif
BOOLEAN DirectMapped;
- BOOLEAN IsImageSection;
PEPROCESS Process = MmGetAddressSpaceOwner(AddressSpace);
KIRQL OldIrql;
Context.Offset.QuadPart = (ULONG_PTR)Address - (ULONG_PTR)MemoryArea->StartingAddress
+ MemoryArea->Data.SectionData.ViewOffset.QuadPart;
- FileOffset = Context.Offset.QuadPart + Context.Segment->Image.FileOffset;
- IsImageSection = Context.Section->AllocationAttributes & SEC_IMAGE ? TRUE : FALSE;
-
- FileObject = Context.Section->FileObject;
DirectMapped = FALSE;
MmLockSectionSegment(Context.Segment);
#ifndef NEWCC
+ FileOffset = Context.Offset.QuadPart + Context.Segment->Image.FileOffset;
+ IsImageSection = Context.Section->AllocationAttributes & SEC_IMAGE ? TRUE : FALSE;
+ FileObject = Context.Section->FileObject;
+
if (FileObject != NULL &&
!(Context.Segment->Image.Characteristics & IMAGE_SCN_MEM_SHARED))
{
BOOLEAN Private;
NTSTATUS Status;
PFILE_OBJECT FileObject;
+#ifndef NEWCC
PROS_SHARED_CACHE_MAP SharedCacheMap = NULL;
+#endif
BOOLEAN DirectMapped;
BOOLEAN IsImageSection;
PEPROCESS Process = MmGetAddressSpaceOwner(AddressSpace);
if (FileObject != NULL &&
!(Segment->Image.Characteristics & IMAGE_SCN_MEM_SHARED))
{
+#ifndef NEWCC
SharedCacheMap = FileObject->SectionObjectPointer->SharedCacheMap;
+#endif
/*
* If the file system is letting us go directly to the cache and the
PFN_NUMBER Page, SWAPENTRY SwapEntry, BOOLEAN Dirty)
{
ULONG_PTR Entry;
+#ifndef NEWCC
PFILE_OBJECT FileObject;
PROS_SHARED_CACHE_MAP SharedCacheMap;
+#endif
LARGE_INTEGER Offset;
SWAPENTRY SavedSwapEntry;
PROS_SECTION_OBJECT Section;
{
if (Page == PFN_FROM_SSE(Entry) && Dirty)
{
+#ifndef NEWCC
FileObject = MemoryArea->Data.SectionData.Section->FileObject;
SharedCacheMap = FileObject->SectionObjectPointer->SharedCacheMap;
-#ifndef NEWCC
CcRosMarkDirtyVacb(SharedCacheMap, Offset.QuadPart + Segment->Image.FileOffset);
#endif
ASSERT(SwapEntry == 0);
/* Note that modified pages should be written here (MiShutdownSystem) */
#ifdef NEWCC
- /* Flush all user files before we start shutting down IO */
- /* This is where modified pages are written back by the IO manager */
- CcShutdownSystem();
+ /* Flush all user files before we start shutting down IO */
+ /* This is where modified pages are written back by the IO manager */
+ CcShutdownSystem();
#endif
/* In this step, the I/O manager does last-chance shutdown notification */
Status = STATUS_SUCCESS;
break;
}
- case SystemPowerCapabilities:
+
+ case SystemPowerCapabilities:
{
PSYSTEM_POWER_CAPABILITIES PowerCapabilities = (PSYSTEM_POWER_CAPABILITIES)OutputBuffer;
NTSTATUS
NTAPI
NtSetSystemPowerState(IN POWER_ACTION SystemAction,
- IN SYSTEM_POWER_STATE MinSystemState,
- IN ULONG Flags)
+ IN SYSTEM_POWER_STATE MinSystemState,
+ IN ULONG Flags)
{
KPROCESSOR_MODE PreviousMode = KeGetPreviousMode();
POP_POWER_ACTION Action = {0};
}
/* Do it as a kernel-mode caller for consistency with system state */
- return ZwSetSystemPowerState (SystemAction, MinSystemState, Flags);
+ return ZwSetSystemPowerState(SystemAction, MinSystemState, Flags);
}
/* Read policy settings (partial shutdown vs. full shutdown) */
+PROJECT(NTVDM)
+
include_directories(${REACTOS_SOURCE_DIR}/include/reactos/libs/fast486)
+
spec2def(ntvdm.exe ntvdm.spec)
list(APPEND SOURCE
cpu/cpu.c
cpu/registers.c
hardware/cmos.c
+ hardware/dma.c
hardware/keyboard.c
hardware/mouse.c
hardware/pic.c
+ hardware/pit.c
hardware/ps2.c
- hardware/speaker.c
- hardware/timer.c
- hardware/vga.c
+ hardware/sound/speaker.c
+ hardware/video/vga.c
dos/dos32krnl/bios.c
dos/dos32krnl/dos.c
dos/dos32krnl/dosfiles.c
#include "io.h"
#include "hardware/cmos.h"
#include "hardware/pic.h"
-#include "hardware/timer.h"
+#include "hardware/pit.h"
/* Extra PSDK/NDK Headers */
#include <ndk/kefuncs.h>
{
switch (getAH())
{
+ /* OS Hooks for Multitasking */
+ case 0x80: // Device Open
+ case 0x81: // Device Close
+ case 0x82: // Program Termination
+ case 0x90: // Device Busy
+ case 0x91: // Device POST
+ {
+ /* Return success by default */
+ setAH(0x00);
+ Stack[STACK_FLAGS] &= ~EMULATOR_FLAG_CF;
+ break;
+ }
+
/* Keyboard intercept */
case 0x4F:
{
break;
}
+ /* Switch to Protected Mode */
+ case 0x89:
+ {
+ DPRINT1("BIOS INT 15h, AH=89h \"Switch to Protected Mode\" is UNIMPLEMENTED");
+
+ Stack[STACK_FLAGS] |= EMULATOR_FLAG_CF;
+ break;
+ }
+
/* Get Configuration */
case 0xC0:
{
// Stack[STACK_FLAGS] &= ~EMULATOR_FLAG_CF;
// setES(???);
+ UNIMPLEMENTED;
+
/* We do not support EBDA yet */
Stack[STACK_FLAGS] |= EMULATOR_FLAG_CF;
// #include "vidbios.h"
#include "io.h"
-#include "hardware/vga.h"
+#include "hardware/video/vga.h"
/* DEFINES ********************************************************************/
/* PRIVATE FUNCTIONS **********************************************************/
-static VOID VidBiosReadWindow(LPWORD Buffer, SMALL_RECT Rectangle, BYTE Page)
+static BOOLEAN VidBiosScrollWindow(SCROLL_DIRECTION Direction,
+ DWORD Amount,
+ SMALL_RECT Rectangle,
+ BYTE Page,
+ BYTE FillAttribute)
{
INT i, j;
- INT Counter = 0;
- WORD Character;
DWORD VideoAddress = TO_LINEAR(TEXT_VIDEO_SEG, Page * Bda->VideoPageSize);
+ WORD FillCharacter = MAKEWORD(' ', FillAttribute);
- for (i = Rectangle.Top; i <= Rectangle.Bottom; i++)
- {
- for (j = Rectangle.Left; j <= Rectangle.Right; j++)
- {
- /* Read from video memory */
- EmulatorReadMemory(&EmulatorContext,
- VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD),
- (LPVOID)&Character,
- sizeof(WORD));
+ WORD WindowWidth, WindowHeight;
- /* Write the data to the buffer in row order */
- Buffer[Counter++] = Character;
- }
- }
-}
-
-static VOID VidBiosWriteWindow(LPWORD Buffer, SMALL_RECT Rectangle, BYTE Page)
-{
- INT i, j;
- INT Counter = 0;
- WORD Character;
- DWORD VideoAddress = TO_LINEAR(TEXT_VIDEO_SEG, Page * Bda->VideoPageSize);
+ /* Fixup the rectangle if needed */
+ Rectangle.Left = min(max(Rectangle.Left , 0), Bda->ScreenColumns - 1);
+ Rectangle.Right = min(max(Rectangle.Right , 0), Bda->ScreenColumns - 1);
+ Rectangle.Top = min(max(Rectangle.Top , 0), Bda->ScreenRows);
+ Rectangle.Bottom = min(max(Rectangle.Bottom, 0), Bda->ScreenRows);
- for (i = Rectangle.Top; i <= Rectangle.Bottom; i++)
- {
- for (j = Rectangle.Left; j <= Rectangle.Right; j++)
- {
- Character = Buffer[Counter++];
-
- /* Write to video memory */
- EmulatorWriteMemory(&EmulatorContext,
- VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD),
- (LPVOID)&Character,
- sizeof(WORD));
- }
- }
-}
+ WindowWidth = Rectangle.Right - Rectangle.Left + 1;
+ WindowHeight = Rectangle.Bottom - Rectangle.Top + 1;
-static BOOLEAN VidBiosScrollWindow(INT Direction,
- DWORD Amount,
- SMALL_RECT Rectangle,
- BYTE Page,
- BYTE FillAttribute)
-{
- DWORD i;
- LPWORD WindowData;
- WORD WindowWidth = Rectangle.Right - Rectangle.Left + 1;
- WORD WindowHeight = Rectangle.Bottom - Rectangle.Top + 1;
- DWORD WindowSize = WindowWidth * WindowHeight;
-
- /* Allocate a buffer for the window */
- WindowData = (LPWORD)HeapAlloc(GetProcessHeap(),
- HEAP_ZERO_MEMORY,
- WindowSize * sizeof(WORD));
- if (WindowData == NULL) return FALSE;
-
- /* Read the window data */
- VidBiosReadWindow(WindowData, Rectangle, Page);
-
- if ((Amount == 0)
- || (((Direction == SCROLL_DIRECTION_UP)
- || (Direction == SCROLL_DIRECTION_DOWN))
- && (Amount >= WindowHeight))
- || (((Direction == SCROLL_DIRECTION_LEFT)
- || (Direction == SCROLL_DIRECTION_RIGHT))
- && (Amount >= WindowWidth)))
+ /* Amount == 0 means we clear all the rectangle */
+ if ((Amount == 0) ||
+ (((Direction == SCROLL_UP ) || (Direction == SCROLL_DOWN )) && (Amount >= WindowHeight)) ||
+ (((Direction == SCROLL_LEFT) || (Direction == SCROLL_RIGHT)) && (Amount >= WindowWidth )))
{
- /* Fill the window */
- for (i = 0; i < WindowSize; i++)
+ /* Fill the rectangle */
+ for (i = Rectangle.Top; i <= Rectangle.Bottom; i++)
{
- WindowData[i] = MAKEWORD(' ', FillAttribute);
+ for (j = Rectangle.Left; j <= Rectangle.Right; j++)
+ {
+ EmulatorWriteMemory(&EmulatorContext,
+ VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD),
+ (LPVOID)&FillCharacter,
+ sizeof(FillCharacter));
+ }
}
- goto Done;
+ return TRUE;
}
switch (Direction)
{
- case SCROLL_DIRECTION_UP:
+ case SCROLL_UP:
{
- RtlMoveMemory(WindowData,
- &WindowData[WindowWidth * Amount],
- (WindowSize - WindowWidth * Amount) * sizeof(WORD));
+ /* Move text lines up */
+ for (i = Rectangle.Top + Amount; i <= Rectangle.Bottom; i++)
+ {
+ EmulatorWriteMemory(&EmulatorContext,
+ VideoAddress + ((i - Amount) * Bda->ScreenColumns + Rectangle.Left) * sizeof(WORD),
+ REAL_TO_PHYS(VideoAddress + ( i * Bda->ScreenColumns + Rectangle.Left) * sizeof(WORD)),
+ (Rectangle.Right - Rectangle.Left + 1) * sizeof(WORD));
+ }
- for (i = 0; i < Amount * WindowWidth; i++)
+ /* Fill the bottom of the rectangle */
+ for (i = Rectangle.Bottom - Amount + 1; i <= Rectangle.Bottom; i++)
{
- WindowData[WindowSize - i - 1] = MAKEWORD(' ', FillAttribute);
+ for (j = Rectangle.Left; j <= Rectangle.Right; j++)
+ {
+ EmulatorWriteMemory(&EmulatorContext,
+ VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD),
+ (LPVOID)&FillCharacter,
+ sizeof(FillCharacter));
+ }
}
break;
}
- case SCROLL_DIRECTION_DOWN:
+ case SCROLL_DOWN:
{
- RtlMoveMemory(&WindowData[WindowWidth * Amount],
- WindowData,
- (WindowSize - WindowWidth * Amount) * sizeof(WORD));
+ /* Move text lines down */
+ for (i = Rectangle.Bottom - Amount; i >= Rectangle.Top; i--)
+ {
+ EmulatorWriteMemory(&EmulatorContext,
+ VideoAddress + ((i + Amount) * Bda->ScreenColumns + Rectangle.Left) * sizeof(WORD),
+ REAL_TO_PHYS(VideoAddress + ( i * Bda->ScreenColumns + Rectangle.Left) * sizeof(WORD)),
+ (Rectangle.Right - Rectangle.Left + 1) * sizeof(WORD));
+ }
- for (i = 0; i < Amount * WindowWidth; i++)
+ /* Fill the top of the rectangle */
+ for (i = Rectangle.Top; i <= Rectangle.Top + Amount - 1; i++)
{
- WindowData[i] = MAKEWORD(' ', FillAttribute);
+ for (j = Rectangle.Left; j <= Rectangle.Right; j++)
+ {
+ EmulatorWriteMemory(&EmulatorContext,
+ VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD),
+ (LPVOID)&FillCharacter,
+ sizeof(FillCharacter));
+ }
}
break;
}
- default:
+ case SCROLL_LEFT:
{
- // TODO: NOT IMPLEMENTED!
- UNIMPLEMENTED;
+ /* Move text lines left */
+ for (i = Rectangle.Top; i <= Rectangle.Bottom; i++)
+ {
+ EmulatorWriteMemory(&EmulatorContext,
+ VideoAddress + (i * Bda->ScreenColumns + Rectangle.Left ) * sizeof(WORD),
+ REAL_TO_PHYS(VideoAddress + (i * Bda->ScreenColumns + Rectangle.Left + Amount) * sizeof(WORD)),
+ (Rectangle.Right - Rectangle.Left - Amount + 1) * sizeof(WORD));
+ }
+
+ /* Fill the right of the rectangle */
+ for (i = Rectangle.Top; i <= Rectangle.Bottom; i++)
+ {
+ for (j = Rectangle.Right - Amount + 1; j <= Rectangle.Right; j++)
+ {
+ EmulatorWriteMemory(&EmulatorContext,
+ VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD),
+ (LPVOID)&FillCharacter,
+ sizeof(FillCharacter));
+ }
+ }
+
+ break;
}
- }
-Done:
- /* Write back the window data */
- VidBiosWriteWindow(WindowData, Rectangle, Page);
+ case SCROLL_RIGHT:
+ {
+ /* Move text lines right */
+ for (i = Rectangle.Top; i <= Rectangle.Bottom; i++)
+ {
+ EmulatorWriteMemory(&EmulatorContext,
+ VideoAddress + (i * Bda->ScreenColumns + Rectangle.Left + Amount) * sizeof(WORD),
+ REAL_TO_PHYS(VideoAddress + (i * Bda->ScreenColumns + Rectangle.Left ) * sizeof(WORD)),
+ (Rectangle.Right - Rectangle.Left - Amount + 1) * sizeof(WORD));
+ }
+
+ /* Fill the left of the rectangle */
+ for (i = Rectangle.Top; i <= Rectangle.Bottom; i++)
+ {
+ for (j = Rectangle.Left; j <= Rectangle.Left + Amount - 1; j++)
+ {
+ EmulatorWriteMemory(&EmulatorContext,
+ VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD),
+ (LPVOID)&FillCharacter,
+ sizeof(FillCharacter));
+ }
+ }
- /* Free the window buffer */
- HeapFree(GetProcessHeap(), 0, WindowData);
+ break;
+ }
+ }
return TRUE;
}
VidBiosSetCursorPosition(Row, Column, Bda->VideoPage);
}
-static BYTE VidBiosGetVideoMode(VOID)
+static inline BYTE VidBiosGetVideoMode(VOID)
{
/* Bit 7 of VideoMode is determined by bit 7 of VGAOptions */
return Bda->VideoMode | (Bda->VGAOptions & 0x80);
// FIXME: We need to reset the fonts and the font vectors. (INT 1Fh and 43h).
+ // HACK: We clear here all the text memory. TODO: Do it better!
+ if (!DoNotClear && ((ModeNumber >= 0x00 && ModeNumber <= 0x03) || (ModeNumber == 0x07)))
+ {
+ INT i, j;
+ DWORD VideoAddress;
+ WORD FillCharacter = MAKEWORD(' ', DEFAULT_ATTRIBUTE);
+
+ for (Page = 0; Page < BIOS_MAX_PAGES; ++Page)
+ {
+ VideoAddress = TO_LINEAR(TEXT_VIDEO_SEG, Page * Bda->VideoPageSize);
+
+ for (i = 0; i <= Bda->ScreenRows; i++)
+ {
+ for (j = 0; j <= Bda->ScreenColumns - 1; j++)
+ {
+ /* Write to video memory */
+ EmulatorWriteMemory(&EmulatorContext,
+ VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD),
+ (LPVOID)&FillCharacter,
+ sizeof(FillCharacter));
+ }
+ }
+ }
+ }
+
/* Refresh display */
VgaRefreshDisplay();
{
/* The screen must be scrolled up */
SMALL_RECT Rectangle = { 0, 0, Bda->ScreenColumns - 1, Bda->ScreenRows };
-
- VidBiosScrollWindow(SCROLL_DIRECTION_UP,
- 1,
- Rectangle,
- Page,
- DEFAULT_ATTRIBUTE);
-
+ VidBiosScrollWindow(SCROLL_UP, 1, Rectangle, Page, DEFAULT_ATTRIBUTE/*Attribute*/);
Row--;
}
{
SMALL_RECT Rectangle = { getCL(), getCH(), getDL(), getDH() };
- /* Call the internal function */
- VidBiosScrollWindow((getAH() == 0x06) ? SCROLL_DIRECTION_UP
- : SCROLL_DIRECTION_DOWN,
- getAL(),
- Rectangle,
- Bda->VideoPage,
- getBH());
+ VidBiosScrollWindow((getAH() == 0x06) ? SCROLL_UP : SCROLL_DOWN,
+ getAL(), Rectangle, Bda->VideoPage, getBH());
break;
}
break;
}
- /* Display combination code */
+ /* Get/Set Display combination code */
case 0x1A:
{
switch (getAL())
{
- case 0x00: /* Get Display combiantion code */
+ case 0x00: /* Get Display combination code */
setAX(MAKEWORD(0x1A, 0x1A));
setBX(MAKEWORD(0x08, 0x00)); /* VGA w/ color analog display */
break;
#define FONT_8x16_OFFSET 0x0800
#define FONT_8x14_OFFSET 0x1800
-enum
+typedef enum
{
- SCROLL_DIRECTION_UP,
- SCROLL_DIRECTION_DOWN,
- SCROLL_DIRECTION_LEFT,
- SCROLL_DIRECTION_RIGHT
-};
+ SCROLL_UP,
+ SCROLL_DOWN,
+ SCROLL_LEFT,
+ SCROLL_RIGHT
+} SCROLL_DIRECTION;
/* FUNCTIONS ******************************************************************/
#include "hardware/cmos.h"
#include "hardware/ps2.h"
-#include "hardware/timer.h"
-#include "hardware/vga.h"
+#include "hardware/pit.h"
+#include "hardware/video/vga.h"
/* Extra PSDK/NDK Headers */
#include <ndk/kefuncs.h>
#include "hardware/mouse.h"
#include "hardware/pic.h"
#include "hardware/ps2.h"
-#include "hardware/speaker.h"
-#include "hardware/timer.h"
-#include "hardware/vga.h"
+#include "hardware/sound/speaker.h"
+#include "hardware/pit.h"
+#include "hardware/video/vga.h"
#include "io.h"
{
/* Expand the environment size */
EnvSize = CommandInfo.EnvLen;
- Env = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, Env, EnvSize);
+ CommandInfo.Env = Env = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, Env, EnvSize);
/* Repeat the request */
goto Command;
RegisterBop(BOP_START_DOS, NULL);
/* Load the mouse driver */
- DosMouseInitialize();
+ // DosMouseInitialize();
#ifndef STANDALONE
Mcb->OwnerPsp = NewOwner;
}
-static WORD DosCopyEnvironmentBlock(LPCSTR Environment, LPCSTR ProgramName)
+static WORD DosCopyEnvironmentBlock(LPCSTR Environment OPTIONAL,
+ LPCSTR ProgramName)
{
PCHAR Ptr, DestBuffer = NULL;
ULONG TotalSize = 0;
WORD DestSegment;
- Ptr = (PCHAR)Environment;
+ /* If we have an environment strings list, compute its size */
+ if (Environment)
+ {
+ /* Calculate the size of the environment block */
+ Ptr = (PCHAR)Environment;
+ while (*Ptr) Ptr += strlen(Ptr) + 1;
+ TotalSize = (ULONG_PTR)Ptr - (ULONG_PTR)Environment;
+ }
+ else
+ {
+ /* Empty environment string */
+ TotalSize = 1;
+ }
+ /* Add the final environment block NULL-terminator */
+ TotalSize++;
- /* Calculate the size of the environment block */
- while (*Ptr) Ptr += strlen(Ptr) + 1;
- TotalSize = (ULONG_PTR)Ptr - (ULONG_PTR)Environment + 1; // Add final NULL-terminator
+ /* Add the two bytes for the program name tag */
+ TotalSize += 2;
/* Add the string buffer size */
TotalSize += strlen(ProgramName) + 1;
- /* Add the two extra bytes */
- TotalSize += 2;
-
/* Allocate the memory for the environment block */
DestSegment = DosAllocateMemory((WORD)((TotalSize + 0x0F) >> 4), NULL);
if (!DestSegment) return 0;
- Ptr = (PCHAR)Environment;
-
DestBuffer = (PCHAR)SEG_OFF_TO_PTR(DestSegment, 0);
- while (*Ptr)
+
+ /* If we have an environment strings list, copy it */
+ if (Environment)
{
- /* Copy the string and NULL-terminate it */
- strcpy(DestBuffer, Ptr);
- DestBuffer += strlen(Ptr);
- *(DestBuffer++) = '\0';
+ Ptr = (PCHAR)Environment;
+ while (*Ptr)
+ {
+ /* Copy the string and NULL-terminate it */
+ strcpy(DestBuffer, Ptr);
+ DestBuffer += strlen(Ptr);
+ *(DestBuffer++) = '\0';
- /* Move to the next string */
- Ptr += strlen(Ptr) + 1;
+ /* Move to the next string */
+ Ptr += strlen(Ptr) + 1;
+ }
+ }
+ else
+ {
+ /* Empty environment string */
+ *(DestBuffer++) = '\0';
}
/* NULL-terminate the environment block */
*(DestBuffer++) = '\0';
DWORD DosLoadExecutable(IN DOS_EXEC_TYPE LoadType,
IN LPCSTR ExecutablePath,
IN LPCSTR CommandLine,
- IN LPCSTR Environment,
+ IN LPCSTR Environment OPTIONAL,
OUT PDWORD StackLocation OPTIONAL,
OUT PDWORD EntryPoint OPTIONAL)
{
LoadType,
ExecutablePath,
CommandLine,
- Environment,
+ Environment ? Environment : "n/a",
StackLocation,
EntryPoint);
DWORD DosStartProcess(IN LPCSTR ExecutablePath,
IN LPCSTR CommandLine,
- IN LPCSTR Environment)
+ IN LPCSTR Environment OPTIONAL)
{
DWORD Result;
IN DOS_EXEC_TYPE LoadType,
IN LPCSTR ExecutablePath,
IN LPCSTR CommandLine,
- IN LPCSTR Environment,
+ IN LPCSTR Environment OPTIONAL,
OUT PDWORD StackLocation OPTIONAL,
OUT PDWORD EntryPoint OPTIONAL
);
DWORD DosStartProcess(
IN LPCSTR ExecutablePath,
IN LPCSTR CommandLine,
- IN LPCSTR Environment
+ IN LPCSTR Environment OPTIONAL
);
VOID DosTerminateProcess(WORD Psp, BYTE ReturnCode);
BOOLEAN DosHandleIoctl(BYTE ControlCode, WORD FileHandle);
#include "clock.h"
#include "bios/rom.h"
#include "hardware/cmos.h"
+#include "hardware/dma.h"
#include "hardware/keyboard.h"
#include "hardware/mouse.h"
#include "hardware/pic.h"
#include "hardware/ps2.h"
-#include "hardware/speaker.h"
-#include "hardware/timer.h"
-#include "hardware/vga.h"
+#include "hardware/sound/speaker.h"
+#include "hardware/pit.h"
+#include "hardware/video/vga.h"
#include "vddsup.h"
#include "io.h"
CpuInitialize();
/* Initialize DMA */
+ DmaInitialize();
/* Initialize the PIC, the PIT, the CMOS and the PC Speaker */
PicInitialize();
// PitCleanup();
// PicCleanup();
+ // DmaCleanup();
+
CpuCleanup();
#ifdef STANDALONE
--- /dev/null
+/*
+ * COPYRIGHT: GPL - See COPYING in the top level directory
+ * PROJECT: ReactOS Virtual DOS Machine
+ * FILE: dma.c
+ * PURPOSE: Direct Memory Access Controller emulation -
+ * i8237A compatible with 74LS612 Memory Mapper extension
+ * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
+ */
+
+/* INCLUDES *******************************************************************/
+
+#define NDEBUG
+
+#include "emulator.h"
+#include "io.h"
+#include "dma.h"
+
+/* PRIVATE VARIABLES **********************************************************/
+
+/*
+ * DMA Controller 0 (Channels 0..3): Slave controller
+ * DMA Controller 1 (Channels 4..7): Master controller
+ */
+static DMA_CONTROLLER DmaControllers[DMA_CONTROLLERS];
+
+/* External page registers for each channel of the two DMA controllers */
+static DMA_PAGE_REGISTER DmaPageRegisters[DMA_CONTROLLERS * DMA_CONTROLLER_CHANNELS];
+
+/* PRIVATE FUNCTIONS **********************************************************/
+
+#define READ_ADDR(CtrlIndex, ChanIndex, Data) \
+do { \
+ (Data) = \
+ *((PBYTE)&DmaControllers[(CtrlIndex)].DmaChannel[(ChanIndex)].CurrAddress + \
+ (DmaControllers[(CtrlIndex)].FlipFlop & 0x01)); \
+ DmaControllers[(CtrlIndex)].FlipFlop ^= 1; \
+} while(0)
+
+#define READ_CNT(CtrlIndex, ChanIndex, Data) \
+do { \
+ (Data) = \
+ *((PBYTE)&DmaControllers[(CtrlIndex)].DmaChannel[(ChanIndex)].CurrWordCnt + \
+ (DmaControllers[(CtrlIndex)].FlipFlop & 0x01)); \
+ DmaControllers[(CtrlIndex)].FlipFlop ^= 1; \
+} while(0)
+
+static BYTE WINAPI DmaReadPort(USHORT Port)
+{
+ BYTE ReadValue = 0xFF;
+
+ switch (Port)
+ {
+ /* Start Address Registers */
+ {
+ case 0x00:
+ READ_ADDR(0, 0, ReadValue);
+ return ReadValue;
+ case 0x02:
+ READ_ADDR(0, 1, ReadValue);
+ return ReadValue;
+ case 0x04:
+ READ_ADDR(0, 2, ReadValue);
+ return ReadValue;
+ case 0x06:
+ READ_ADDR(0, 3, ReadValue);
+ return ReadValue;
+ case 0xC0:
+ READ_ADDR(1, 0, ReadValue);
+ return ReadValue;
+ case 0xC4:
+ READ_ADDR(1, 1, ReadValue);
+ return ReadValue;
+ case 0xC8:
+ READ_ADDR(1, 2, ReadValue);
+ return ReadValue;
+ case 0xCC:
+ READ_ADDR(1, 3, ReadValue);
+ return ReadValue;
+ }
+
+ /* Count Address Registers */
+ {
+ case 0x01:
+ READ_CNT(0, 0, ReadValue);
+ return ReadValue;
+ case 0x03:
+ READ_CNT(0, 1, ReadValue);
+ return ReadValue;
+ case 0x05:
+ READ_CNT(0, 2, ReadValue);
+ return ReadValue;
+ case 0x07:
+ READ_CNT(0, 3, ReadValue);
+ return ReadValue;
+ case 0xC2:
+ READ_CNT(1, 0, ReadValue);
+ return ReadValue;
+ case 0xC6:
+ READ_CNT(1, 1, ReadValue);
+ return ReadValue;
+ case 0xCA:
+ READ_CNT(1, 2, ReadValue);
+ return ReadValue;
+ case 0xCE:
+ READ_CNT(1, 3, ReadValue);
+ return ReadValue;
+ }
+
+ /* Status Registers */
+ {
+ case 0x08:
+ return DmaControllers[0].Status;
+ case 0xD0:
+ return DmaControllers[1].Status;
+ }
+
+ /* DMA Intermediate (Temporary) Registers */
+ {
+ case 0x0D:
+ return DmaControllers[0].TempReg;
+ case 0xDA:
+ return DmaControllers[1].TempReg;
+ }
+ }
+
+ return 0x00;
+}
+
+#define WRITE_ADDR(CtrlIndex, ChanIndex, Data) \
+do { \
+ *((PBYTE)&DmaControllers[(CtrlIndex)].DmaChannel[(ChanIndex)].BaseAddress + \
+ (DmaControllers[(CtrlIndex)].FlipFlop & 0x01)) = (Data); \
+ *((PBYTE)&DmaControllers[(CtrlIndex)].DmaChannel[(ChanIndex)].CurrAddress + \
+ (DmaControllers[(CtrlIndex)].FlipFlop & 0x01)) = (Data); \
+ DmaControllers[(CtrlIndex)].FlipFlop ^= 1; \
+} while(0)
+
+#define WRITE_CNT(CtrlIndex, ChanIndex, Data) \
+do { \
+ *((PBYTE)&DmaControllers[(CtrlIndex)].DmaChannel[(ChanIndex)].BaseWordCnt + \
+ (DmaControllers[(CtrlIndex)].FlipFlop & 0x01)) = (Data); \
+ *((PBYTE)&DmaControllers[(CtrlIndex)].DmaChannel[(ChanIndex)].CurrWordCnt + \
+ (DmaControllers[(CtrlIndex)].FlipFlop & 0x01)) = (Data); \
+ DmaControllers[(CtrlIndex)].FlipFlop ^= 1; \
+} while(0)
+
+static VOID WINAPI DmaWritePort(USHORT Port, BYTE Data)
+{
+ switch (Port)
+ {
+ /* Start Address Registers */
+ {
+ case 0x00:
+ WRITE_ADDR(0, 0, Data);
+ break;
+ case 0x02:
+ WRITE_ADDR(0, 1, Data);
+ break;
+ case 0x04:
+ WRITE_ADDR(0, 2, Data);
+ break;
+ case 0x06:
+ WRITE_ADDR(0, 3, Data);
+ break;
+ case 0xC0:
+ WRITE_ADDR(1, 0, Data);
+ break;
+ case 0xC4:
+ WRITE_ADDR(1, 1, Data);
+ break;
+ case 0xC8:
+ WRITE_ADDR(1, 2, Data);
+ break;
+ case 0xCC:
+ WRITE_ADDR(1, 3, Data);
+ break;
+ }
+
+ /* Count Address Registers */
+ {
+ case 0x01:
+ WRITE_CNT(0, 0, Data);
+ break;
+ case 0x03:
+ WRITE_CNT(0, 1, Data);
+ break;
+ case 0x05:
+ WRITE_CNT(0, 2, Data);
+ break;
+ case 0x07:
+ WRITE_CNT(0, 3, Data);
+ break;
+ case 0xC2:
+ WRITE_CNT(1, 0, Data);
+ break;
+ case 0xC6:
+ WRITE_CNT(1, 1, Data);
+ break;
+ case 0xCA:
+ WRITE_CNT(1, 2, Data);
+ break;
+ case 0xCE:
+ WRITE_CNT(1, 3, Data);
+ break;
+ }
+
+ /* Command Registers */
+ {
+ case 0x08:
+ DmaControllers[0].Command = Data;
+ break;
+ case 0xD0:
+ DmaControllers[1].Command = Data;
+ break;
+ }
+
+ /* Request Registers */
+ {
+ case 0x09:
+ DmaControllers[0].Request = Data;
+ break;
+ case 0xD2:
+ DmaControllers[1].Request = Data;
+ break;
+ }
+
+ /* Flip-Flop Reset */
+ {
+ case 0x0C:
+ DmaControllers[0].FlipFlop = 0;
+ break;
+ case 0xD8:
+ DmaControllers[1].FlipFlop = 0;
+ break;
+ }
+
+ /* DMA Master Reset */
+ {
+ case 0x0D:
+ DmaControllers[0].Command = 0x00;
+ DmaControllers[0].Status = 0x00;
+ DmaControllers[0].Request = 0x00;
+ DmaControllers[0].TempReg = 0x00;
+ DmaControllers[0].FlipFlop = 0;
+ DmaControllers[0].Mask = 0x0F;
+ break;
+ case 0xDA:
+ DmaControllers[1].Command = 0x00;
+ DmaControllers[1].Status = 0x00;
+ DmaControllers[1].Request = 0x00;
+ DmaControllers[1].TempReg = 0x00;
+ DmaControllers[1].FlipFlop = 0;
+ DmaControllers[1].Mask = 0x0F;
+ break;
+ }
+ }
+}
+
+/* Page Address Registers */
+
+static BYTE WINAPI DmaPageReadPort(USHORT Port)
+{
+ switch (Port)
+ {
+ case 0x87:
+ return DmaPageRegisters[0].Page;
+ case 0x83:
+ return DmaPageRegisters[1].Page;
+ case 0x81:
+ return DmaPageRegisters[2].Page;
+ case 0x82:
+ return DmaPageRegisters[3].Page;
+ case 0x8F:
+ return DmaPageRegisters[4].Page;
+ case 0x8B:
+ return DmaPageRegisters[5].Page;
+ case 0x89:
+ return DmaPageRegisters[6].Page;
+ case 0x8A:
+ return DmaPageRegisters[7].Page;
+ }
+
+ return 0x00;
+}
+
+static VOID WINAPI DmaPageWritePort(USHORT Port, BYTE Data)
+{
+ switch (Port)
+ {
+ case 0x87:
+ DmaPageRegisters[0].Page = Data;
+ break;
+ case 0x83:
+ DmaPageRegisters[1].Page = Data;
+ break;
+ case 0x81:
+ DmaPageRegisters[2].Page = Data;
+ break;
+ case 0x82:
+ DmaPageRegisters[3].Page = Data;
+ break;
+ case 0x8F:
+ DmaPageRegisters[4].Page = Data;
+ break;
+ case 0x8B:
+ DmaPageRegisters[5].Page = Data;
+ break;
+ case 0x89:
+ DmaPageRegisters[6].Page = Data;
+ break;
+ case 0x8A:
+ DmaPageRegisters[7].Page = Data;
+ break;
+ }
+}
+
+/* PUBLIC FUNCTIONS ***********************************************************/
+
+VOID DmaInitialize(VOID)
+{
+ /* Register the I/O Ports */
+
+ /* Channels 0(Reserved)..3 */
+ RegisterIoPort(0x00, NULL, DmaWritePort); /* Start Address Register 0 (Reserved) */
+ RegisterIoPort(0x01, NULL, DmaWritePort); /* Count Address Register 0 (Reserved) */
+ RegisterIoPort(0x02, NULL, DmaWritePort); /* Start Address Register 1 */
+ RegisterIoPort(0x03, NULL, DmaWritePort); /* Count Address Register 1 */
+ RegisterIoPort(0x04, NULL, DmaWritePort); /* Start Address Register 2 */
+ RegisterIoPort(0x05, NULL, DmaWritePort); /* Count Address Register 2 */
+ RegisterIoPort(0x06, NULL, DmaWritePort); /* Start Address Register 3 */
+ RegisterIoPort(0x07, NULL, DmaWritePort); /* Count Address Register 3 */
+
+ RegisterIoPort(0x08, DmaReadPort, DmaWritePort); /* Status (Read) / Command (Write) Registers */
+ RegisterIoPort(0x09, NULL, DmaWritePort); /* Request Register */
+ RegisterIoPort(0x0A, NULL, DmaWritePort); /* Single Channel Mask Register */
+ RegisterIoPort(0x0B, NULL, DmaWritePort); /* Mode Register */
+ RegisterIoPort(0x0C, NULL, DmaWritePort); /* Flip-Flop Reset Register */
+ RegisterIoPort(0x0D, DmaReadPort, DmaWritePort); /* Intermediate (Read) / Master Reset (Write) Registers */
+ RegisterIoPort(0x0E, NULL, DmaWritePort); /* Mask Reset Register */
+ RegisterIoPort(0x0F, DmaReadPort, DmaWritePort); /* Multi-Channel Mask Reset Register */
+
+
+ /* Channels 4(Reserved)..7 */
+ RegisterIoPort(0xC0, NULL, DmaWritePort); /* Start Address Register 4 (Reserved) */
+ RegisterIoPort(0xC2, NULL, DmaWritePort); /* Count Address Register 4 (Reserved) */
+ RegisterIoPort(0xC4, NULL, DmaWritePort); /* Start Address Register 5 */
+ RegisterIoPort(0xC6, NULL, DmaWritePort); /* Count Address Register 5 */
+ RegisterIoPort(0xC8, NULL, DmaWritePort); /* Start Address Register 6 */
+ RegisterIoPort(0xCA, NULL, DmaWritePort); /* Count Address Register 6 */
+ RegisterIoPort(0xCC, NULL, DmaWritePort); /* Start Address Register 7 */
+ RegisterIoPort(0xCE, NULL, DmaWritePort); /* Count Address Register 7 */
+
+ RegisterIoPort(0xD0, DmaReadPort, DmaWritePort); /* Status (Read) / Command (Write) Registers */
+ RegisterIoPort(0xD2, NULL, DmaWritePort); /* Request Register */
+ RegisterIoPort(0xD4, NULL, DmaWritePort); /* Single Channel Mask Register */
+ RegisterIoPort(0xD6, NULL, DmaWritePort); /* Mode Register */
+ RegisterIoPort(0xD8, NULL, DmaWritePort); /* Flip-Flop Reset Register */
+ RegisterIoPort(0xDA, DmaReadPort, DmaWritePort); /* Intermediate (Read) / Master Reset (Write) Registers */
+ RegisterIoPort(0xDC, NULL, DmaWritePort); /* Mask Reset Register */
+ RegisterIoPort(0xDE, DmaReadPort, DmaWritePort); /* Multi-Channel Mask Reset Register */
+
+
+ /* Channels Page Address Registers */
+ RegisterIoPort(0x87, DmaPageReadPort, DmaPageWritePort); /* Channel 0 (Reserved) */
+ RegisterIoPort(0x83, DmaPageReadPort, DmaPageWritePort); /* Channel 1 */
+ RegisterIoPort(0x81, DmaPageReadPort, DmaPageWritePort); /* Channel 2 */
+ RegisterIoPort(0x82, DmaPageReadPort, DmaPageWritePort); /* Channel 3 */
+ RegisterIoPort(0x8F, DmaPageReadPort, DmaPageWritePort); /* Channel 4 (Reserved) */
+ RegisterIoPort(0x8B, DmaPageReadPort, DmaPageWritePort); /* Channel 5 */
+ RegisterIoPort(0x89, DmaPageReadPort, DmaPageWritePort); /* Channel 6 */
+ RegisterIoPort(0x8A, DmaPageReadPort, DmaPageWritePort); /* Channel 7 */
+}
+
+
+
+DWORD
+WINAPI
+VDDRequestDMA(IN HANDLE hVdd,
+ IN WORD iChannel,
+ IN OUT PVOID Buffer,
+ IN DWORD length)
+{
+ UNREFERENCED_PARAMETER(hVdd);
+
+ if (iChannel >= DMA_CONTROLLERS * DMA_CONTROLLER_CHANNELS)
+ {
+ SetLastError(ERROR_INVALID_ADDRESS);
+ return FALSE;
+ }
+
+ UNIMPLEMENTED;
+ return 0;
+}
+
+BOOL
+WINAPI
+VDDQueryDMA(IN HANDLE hVdd,
+ IN WORD iChannel,
+ IN PVDD_DMA_INFO pDmaInfo)
+{
+ PDMA_CONTROLLER pDcp;
+ WORD Channel;
+
+ UNREFERENCED_PARAMETER(hVdd);
+
+ if (iChannel >= DMA_CONTROLLERS * DMA_CONTROLLER_CHANNELS)
+ {
+ SetLastError(ERROR_INVALID_ADDRESS);
+ return FALSE;
+ }
+
+ pDcp = &DmaControllers[iChannel / DMA_CONTROLLER_CHANNELS];
+ Channel = iChannel % DMA_CONTROLLER_CHANNELS;
+
+ pDmaInfo->addr = pDcp->DmaChannel[Channel].CurrAddress;
+ pDmaInfo->count = pDcp->DmaChannel[Channel].CurrWordCnt;
+
+ // pDmaInfo->page = DmaPageRegisters[iChannel].Page;
+ pDmaInfo->status = pDcp->Status;
+ pDmaInfo->mode = pDcp->DmaChannel[Channel].Mode;
+ pDmaInfo->mask = pDcp->Mask;
+
+ return TRUE;
+}
+
+BOOL
+WINAPI
+VDDSetDMA(IN HANDLE hVdd,
+ IN WORD iChannel,
+ IN WORD fDMA,
+ IN PVDD_DMA_INFO pDmaInfo)
+{
+ PDMA_CONTROLLER pDcp;
+ WORD Channel;
+
+ UNREFERENCED_PARAMETER(hVdd);
+
+ if (iChannel >= DMA_CONTROLLERS * DMA_CONTROLLER_CHANNELS)
+ {
+ SetLastError(ERROR_INVALID_ADDRESS);
+ return FALSE;
+ }
+
+ pDcp = &DmaControllers[iChannel / DMA_CONTROLLER_CHANNELS];
+ Channel = iChannel % DMA_CONTROLLER_CHANNELS;
+
+ if (fDMA & VDD_DMA_ADDR)
+ pDcp->DmaChannel[Channel].CurrAddress = pDmaInfo->addr;
+
+ if (fDMA & VDD_DMA_COUNT)
+ pDcp->DmaChannel[Channel].CurrWordCnt = pDmaInfo->count;
+
+ // if (fDMA & VDD_DMA_PAGE)
+ // DmaPageRegisters[iChannel].Page = pDmaInfo->page;
+
+ if (fDMA & VDD_DMA_STATUS)
+ pDcp->Status = pDmaInfo->status;
+
+ return TRUE;
+}
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: GPL - See COPYING in the top level directory
+ * PROJECT: ReactOS Virtual DOS Machine
+ * FILE: dma.h
+ * PURPOSE: Direct Memory Access Controller emulation -
+ * i8237A compatible with 74LS612 Memory Mapper extension
+ * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
+ */
+
+#ifndef _DMA_H_
+#define _DMA_H_
+
+/* INCLUDES *******************************************************************/
+
+#include "ntvdm.h"
+
+/* DEFINES ********************************************************************/
+
+#define DMA_CONTROLLERS 2
+#define DMA_CONTROLLER_CHANNELS 4 // Each DMA controller has 4 channels
+
+typedef struct _DMA_CHANNEL
+{
+ WORD BaseAddress;
+ WORD BaseWordCnt;
+ WORD CurrAddress;
+ WORD CurrWordCnt;
+ BYTE Mode;
+} DMA_CHANNEL, *PDMA_CHANNEL;
+
+typedef struct _DMA_CONTROLLER
+{
+ DMA_CHANNEL DmaChannel[DMA_CONTROLLER_CHANNELS];
+
+ WORD TempAddress;
+ WORD TempWordCnt;
+
+ BYTE TempReg;
+
+ BYTE Command;
+ BYTE Request;
+ BYTE Mask;
+ BYTE Status;
+
+ BOOLEAN FlipFlop; // 0: LSB ; 1: MSB
+
+} DMA_CONTROLLER, *PDMA_CONTROLLER;
+
+/* 74LS612 Memory Mapper extension */
+typedef struct _DMA_PAGE_REGISTER
+{
+ BYTE Page;
+} DMA_PAGE_REGISTER, *PDMA_PAGE_REGISTER;
+
+// The 74LS612 contains 16 bytes, each of them being a page register.
+// They are accessible via ports 0x80 through 0x8F .
+
+/* FUNCTIONS ******************************************************************/
+
+VOID DmaInitialize(VOID);
+
+#endif // _DMA_H_
+
+/* EOF */
}
}
+WORD
+WINAPI
+VDDReserveIrqLine(IN HANDLE hVdd,
+ IN WORD IrqLine)
+{
+ UNIMPLEMENTED;
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return 0xFFFF;
+}
+
+BOOL
+WINAPI
+VDDReleaseIrqLine(IN HANDLE hVdd,
+ IN WORD IrqLine)
+{
+ UNIMPLEMENTED;
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+}
+
/* EOF */
/*
* COPYRIGHT: GPL - See COPYING in the top level directory
* PROJECT: ReactOS Virtual DOS Machine
- * FILE: timer.c
+ * FILE: pit.c
* PURPOSE: Programmable Interval Timer emulation -
* i82C54/8254 compatible
* PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
#include "emulator.h"
#include "io.h"
-#include "timer.h"
+#include "pit.h"
#include "pic.h"
/* PRIVATE VARIABLES **********************************************************/
/*
* COPYRIGHT: GPL - See COPYING in the top level directory
* PROJECT: ReactOS Virtual DOS Machine
- * FILE: timer.h
+ * FILE: pit.h
* PURPOSE: Programmable Interval Timer emulation -
* i82C54/8254 compatible
* PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
* Hermes Belusca-Maito (hermes.belusca@sfr.fr)
*/
-#ifndef _TIMER_H_
-#define _TIMER_H_
+#ifndef _PIT_H_
+#define _PIT_H_
/* INCLUDES *******************************************************************/
VOID PitInitialize(VOID);
-#endif // _TIMER_H_
+#endif // _PIT_H_
/* EOF */
#include "emulator.h"
#include "speaker.h"
-#include "timer.h"
+#include "hardware/pit.h"
/* Extra PSDK/NDK Headers */
#include <ndk/iofuncs.h>
#include "emulator.h"
#include "cpu/cpu.h"
-#include "clock.h"
-#include "hardware/ps2.h"
-#include "hardware/vga.h"
#include "bios/bios.h"
-#include "dos/dem.h"
#include "resource.h"
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; NTVDM Registers exports ;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;
+;; NTVDM Registers ;;
+;;;;;;;;;;;;;;;;;;;;;
@ stdcall getAF()
@ stdcall getAH()
@ stdcall setZF(long)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; NTVDM CCPU MIPS exports ;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; NTVDM CCPU MIPS Compatibility ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ stdcall c_getAF() getAF
@ stdcall c_getAH() getAH
@ stdcall c_setZF(long) setZF
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; NTVDM DOS-32 Emulation exports ;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; NTVDM DOS-32 Emulation ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ stdcall demClientErrorEx(long long long)
@ stdcall demFileDelete(ptr)
;@ stdcall demWOWLFNInit
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; NTVDM Miscellaneous exports ;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;
+;; NTVDM Miscellaneous ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;
@ stdcall MGetVdmPointer(long long long)
@ stdcall Sim32pGetVDMPointer(long long)
;@ stdcall VdmUnmapFlat(long long ptr long) ; Not exported on x86
@ stdcall call_ica_hw_interrupt(long long long)
+@ stdcall VDDReserveIrqLine(long long)
+@ stdcall VDDReleaseIrqLine(long long)
+
@ stdcall VDDInstallIOHook(long long ptr ptr)
@ stdcall VDDDeInstallIOHook(long long ptr)
+@ stdcall VDDRequestDMA(long long ptr long)
+@ stdcall VDDQueryDMA(long long ptr)
+@ stdcall VDDSetDMA(long long long ptr)
+
@ stdcall VDDSimulate16()
@ stdcall host_simulate() VDDSimulate16
@ stdcall VDDTerminateVDM()
// TODO: Maybe use a linked list.
// But the number of elements must be <= MAXUSHORT (MAXWORD)
#define MAX_VDD_MODULES 0xFF + 1
-VDD_MODULE VDDList[MAX_VDD_MODULES] = {{NULL}};
+static VDD_MODULE VDDList[MAX_VDD_MODULES] = {{NULL}};
// Valid handles of VDD DLLs start at 1 and finish at MAX_VDD_MODULES
#define ENTRY_TO_HANDLE(Entry) ((Entry) + 1)
/* PRIVATE FUNCTIONS **********************************************************/
-USHORT GetNextFreeVDDEntry(VOID)
+static USHORT GetNextFreeVDDEntry(VOID)
{
USHORT Entry = MAX_VDD_MODULES;
for (Entry = 0; Entry < sizeof(VDDList)/sizeof(VDDList[0]); ++Entry)
return Entry;
}
-VOID WINAPI ThirdPartyVDDBop(LPWORD Stack)
+static VOID WINAPI ThirdPartyVDDBop(LPWORD Stack)
{
/* Get the Function Number and skip it */
BYTE FuncNum = *(PBYTE)SEG_OFF_TO_PTR(getCS(), getIP());
}
}
-BOOL LoadInstallableVDD(VOID)
+static BOOL LoadInstallableVDD(VOID)
{
#define ERROR_MEMORYVDD L"Insufficient memory to load installable Virtual Device Drivers."
#define ERROR_REGVDD L"Virtual Device Driver format in the registry is invalid."
sizeof(ThreadInfo),
NULL);
if (!NT_SUCCESS(Status)) return Status;
- if (ThreadInfo == TRUE) return STATUS_THREAD_IS_TERMINATING;
+ if (ThreadInfo) return STATUS_THREAD_IS_TERMINATING;
/* Insert it into the Regular List */
InsertTailList(&Process->ThreadList, &Thread->Link);
return XFORMOBJ_UpdateAccel(pxoDst);
}
-
-BOOL
+static
+VOID
NTAPI
-XFORMOBJ_bXformFixPoints(
+XFORMOBJ_vXformFixPoints(
IN XFORMOBJ *pxo,
IN ULONG cPoints,
IN PPOINTL pptIn,
}
while (--i >= 0);
}
-
- return TRUE;
}
/** Public functions **********************************************************/
{
MATRIX mx;
XFORMOBJ xoInv;
- POINTL *pptl;
+ PPOINTL pptlIn, pptlOut;
INT i;
/* Check parameters */
/* Convert POINTL to POINTFIX? */
if (iMode == XF_LTOFX || iMode == XF_LTOL || iMode == XF_INV_LTOL)
{
- pptl = pvIn;
+ pptlIn = pvIn;
+ pptlOut = pvOut;
for (i = cPoints - 1; i >= 0; i--)
{
- pptl[i].x = LONG2FIX(pptl[i].x);
- pptl[i].y = LONG2FIX(pptl[i].y);
+ pptlOut[i].x = LONG2FIX(pptlIn[i].x);
+ pptlOut[i].y = LONG2FIX(pptlIn[i].y);
}
+
+ /* The input is in the out buffer now! */
+ pvIn = pvOut;
}
/* Do the actual fixpoint transformation */
- if (!XFORMOBJ_bXformFixPoints(pxo, cPoints, pvIn, pvOut))
- {
- return FALSE;
- }
+ XFORMOBJ_vXformFixPoints(pxo, cPoints, pvIn, pvOut);
/* Convert POINTFIX to POINTL? */
if (iMode == XF_INV_FXTOL || iMode == XF_INV_LTOL || iMode == XF_LTOL)
{
- pptl = pvOut;
+ pptlOut = pvOut;
for (i = cPoints - 1; i >= 0; i--)
{
- pptl[i].x = FIX2LONG(pptl[i].x);
- pptl[i].y = FIX2LONG(pptl[i].y);
+ pptlOut[i].x = FIX2LONG(pptlOut[i].x);
+ pptlOut[i].y = FIX2LONG(pptlOut[i].y);
}
}
* is the logon application itself
*/
if((pdesk->rpwinstaParent->Flags & WSS_LOCKED) &&
- LogonProcess != PsGetCurrentProcessWin32Process())
+ gpidLogon != PsGetCurrentProcessId())
{
ObDereferenceObject(pdesk);
ERR("Switching desktop 0x%p denied because the window station is locked!\n", hdesk);
Msg.lParam |= KF_MENUMODE << 16;
}
+ // Post mouse move before posting key buttons, to keep it syned.
+ if (pFocusQueue->QF_flags & QF_MOUSEMOVED)
+ {
+ IntCoalesceMouseMove(pti);
+ }
+
/* Post a keyboard message */
TRACE("Posting keyboard msg %u wParam 0x%x lParam 0x%x\n", Msg.message, Msg.wParam, Msg.lParam);
if (!Wnd) {ERR("Window is NULL\n");}
- MsqPostMessage(pti, &Msg, TRUE, QS_KEY, 0);
+ MsqPostMessage(pti, &Msg, TRUE, QS_KEY, 0, dwExtraInfo);
}
return TRUE;
NewMsg.message = (lpMsg->message == WM_KEYDOWN) ? WM_CHAR : WM_SYSCHAR;
NewMsg.wParam = HIWORD(lpMsg->lParam);
NewMsg.lParam = LOWORD(lpMsg->lParam);
- MsqPostMessage(pti, &NewMsg, FALSE, QS_KEY, 0);
+ MsqPostMessage(pti, &NewMsg, FALSE, QS_KEY, 0, 0);
return TRUE;
}
{
TRACE("Msg: %x '%lc' (%04x) %08x\n", NewMsg.message, wch[i], wch[i], NewMsg.lParam);
NewMsg.wParam = wch[i];
- MsqPostMessage(pti, &NewMsg, FALSE, QS_KEY, 0);
+ MsqPostMessage(pti, &NewMsg, FALSE, QS_KEY, 0, 0);
}
bResult = TRUE;
}
/*
* Deregister logon application automatically
*/
- if(LogonProcess == ppiCurrent)
- {
- LogonProcess = NULL;
- }
+ if (gpidLogon == ppiCurrent->peProcess->UniqueProcessId)
+ gpidLogon = 0;
/* Close the current window station */
UserSetProcessWindowStation(NULL);
/* Assign a default window station and desktop to the process */
/* Do not try to open a desktop or window station before winlogon initializes */
- if(ptiCurrent->ppi->hdeskStartup == NULL && LogonProcess != NULL)
+ if (ptiCurrent->ppi->hdeskStartup == NULL && gpidLogon != 0)
{
HWINSTA hWinSta = NULL;
HDESK hDesk = NULL;
/* Register Object Manager Callbacks */
CalloutData.ProcessCallout = Win32kProcessCallback;
CalloutData.ThreadCallout = Win32kThreadCallback;
- CalloutData.WindowStationParseProcedure = IntWinStaObjectParse;
- CalloutData.WindowStationDeleteProcedure = IntWinStaObjectDelete;
- CalloutData.WindowStationOkToCloseProcedure = IntWinstaOkToClose;
+ // CalloutData.GlobalAtomTableCallout = NULL;
+ // CalloutData.PowerEventCallout = NULL;
+ // CalloutData.PowerStateCallout = NULL;
+ // CalloutData.JobCallout = NULL;
+ CalloutData.BatchFlushRoutine = NtGdiFlushUserBatch;
+ CalloutData.DesktopOpenProcedure = IntDesktopObjectOpen;
CalloutData.DesktopOkToCloseProcedure = IntDesktopOkToClose;
- CalloutData.DesktopDeleteProcedure = IntDesktopObjectDelete;
CalloutData.DesktopCloseProcedure = IntDesktopObjectClose;
- CalloutData.DesktopOpenProcedure = IntDesktopObjectOpen;
- CalloutData.BatchFlushRoutine = NtGdiFlushUserBatch;
+ CalloutData.DesktopDeleteProcedure = IntDesktopObjectDelete;
+ CalloutData.WindowStationOkToCloseProcedure = IntWinstaOkToClose;
+ // CalloutData.WindowStationCloseProcedure = NULL;
+ CalloutData.WindowStationDeleteProcedure = IntWinStaObjectDelete;
+ CalloutData.WindowStationParseProcedure = IntWinStaObjectParse;
+ // CalloutData.WindowStationOpenProcedure = NULL;
/* Register our per-process and per-thread structures. */
- PsEstablishWin32Callouts((PWIN32_CALLOUTS_FPNS)&CalloutData);
+ PsEstablishWin32Callouts(&CalloutData);
/* Register service hook callbacks */
#if DBG
break;
case WM_COPYDATA:
- Size = sizeof(COPYDATASTRUCT) + ((PCOPYDATASTRUCT)lParam)->cbData;
+ {
+ COPYDATASTRUCT *cds = (COPYDATASTRUCT *)lParam;
+ Size = sizeof(COPYDATASTRUCT) + cds->cbData;
+ }
break;
default:
return Status;
}
}
-
+ if (KernelModeMsg->message == WM_COPYDATA)
+ {
+ // Only the current process or thread can free the message lParam pointer.
+ return STATUS_SUCCESS;
+ }
ExFreePool((PVOID) KernelModeMsg->lParam);
}
pti->timeLast = LargeTickCount.u.LowPart;
pti->pcti->tickLastMsgChecked = LargeTickCount.u.LowPart;
+ // Post mouse moves while looping through peek messages.
+ if (pti->MessageQueue->QF_flags & QF_MOUSEMOVED)
+ {
+ IntCoalesceMouseMove(pti);
+ }
+
/* Dispatch sent messages here. */
while ( co_MsqDispatchOneSentMessage(pti) )
{
return TRUE;
}
- if ((ProcessMask & QS_MOUSE) &&
- co_MsqPeekMouseMove( pti,
- RemoveMessages,
- Window,
- MsgFilterMin,
- MsgFilterMax,
- Msg ))
- {
- return TRUE;
- }
-
/* Check for hardware events. */
if ((ProcessMask & QS_INPUT) &&
co_MsqPeekHardwareMessage( pti,
KeQueryTickCount(&LargeTickCount);
Message.time = MsqCalculateMessageTime(&LargeTickCount);
- MsqPostMessage(pti, &Message, FALSE, QS_POSTMESSAGE, 0);
+ MsqPostMessage(pti, &Message, FALSE, QS_POSTMESSAGE, 0, 0);
return TRUE;
}
}
else
{
- MsqPostMessage(pti, &Message, FALSE, QS_POSTMESSAGE, 0);
+ MsqPostMessage(pti, &Message, FALSE, QS_POSTMESSAGE, 0, 0);
}
}
return TRUE;
CLEANUP:
if (Window) UserDerefObjectCo(Window);
+ // Current Thread and it's a Copy Data message, then free kernel memory.
+ if ( !ptiSendTo && Msg == WM_COPYDATA )
+ {
+ ExFreePool((PVOID) lParam);
+ }
END_CLEANUP;
}
END_CLEANUP;
}
-
+#if 0
/*
This HACK function posts a message if the destination's message queue belongs to
another thread, otherwise it sends the message. It does not support broadcast
return (LRESULT)Result;
}
+#endif
static LRESULT FASTCALL
co_IntDoSendMessage( HWND hWnd,
static PPAGED_LOOKASIDE_LIST pgMessageLookasideList;
PUSER_MESSAGE_QUEUE gpqCursor;
+ULONG_PTR gdwMouseMoveExtraInfo = 0;
+DWORD gdwMouseMoveTimeStamp = 0;
+
/* FUNCTIONS *****************************************************************/
return(STATUS_SUCCESS);
}
-PWND FASTCALL
-IntChildrenWindowFromPoint(PWND pWndTop, INT x, INT y)
-{
- PWND pWnd, pWndChild;
-
- if ( !pWndTop )
- {
- pWndTop = UserGetDesktopWindow();
- if ( !pWndTop ) return NULL;
- }
-
- if (!(pWndTop->style & WS_VISIBLE)) return NULL;
- if ((pWndTop->style & WS_DISABLED)) return NULL;
- if (!IntPtInWindow(pWndTop, x, y)) return NULL;
-
- if (RECTL_bPointInRect(&pWndTop->rcClient, x, y))
- {
- for (pWnd = pWndTop->spwndChild;
- pWnd != NULL;
- pWnd = pWnd->spwndNext)
- {
- if (pWnd->state2 & WNDS2_INDESTROY || pWnd->state & WNDS_DESTROYED )
- {
- TRACE("The Window is in DESTROY!\n");
- continue;
- }
-
- pWndChild = IntChildrenWindowFromPoint(pWnd, x, y);
-
- if (pWndChild)
- {
- return pWndChild;
- }
- }
- }
- return pWndTop;
-}
-
PWND FASTCALL
IntTopLevelWindowFromPoint(INT x, INT y)
{
}
}
+/*
+ Get down key states from the queue of prior processed input message key states.
+
+ This fixes the left button dragging on the desktop and release sticking outline issue.
+ USB Tablet pointer seems to stick the most and leaves the box outline displayed.
+ */
+WPARAM FASTCALL
+MsqGetDownKeyState(PUSER_MESSAGE_QUEUE MessageQueue)
+{
+ WPARAM ret = 0;
+
+ if (gspv.bMouseBtnSwap)
+ {
+ if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_RBUTTON)) ret |= MK_LBUTTON;
+ if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_LBUTTON)) ret |= MK_RBUTTON;
+ }
+ else
+ {
+ if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_LBUTTON)) ret |= MK_LBUTTON;
+ if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_RBUTTON)) ret |= MK_RBUTTON;
+ }
+
+ if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_MBUTTON)) ret |= MK_MBUTTON;
+ if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_SHIFT)) ret |= MK_SHIFT;
+ if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_CONTROL)) ret |= MK_CONTROL;
+ if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_XBUTTON1)) ret |= MK_XBUTTON1;
+ if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_XBUTTON2)) ret |= MK_XBUTTON2;
+ return ret;
+}
+
HANDLE FASTCALL
IntMsqSetWakeMask(DWORD WakeMask)
{
VOID FASTCALL
ClearMsgBitsMask(PTHREADINFO pti, UINT MessageBits)
{
- PUSER_MESSAGE_QUEUE Queue;
UINT ClrMask = 0;
- Queue = pti->MessageQueue;
-
if (MessageBits & QS_KEY)
{
if (--pti->nCntsQBits[QSRosKey] == 0) ClrMask |= QS_KEY;
}
- if (MessageBits & QS_MOUSEMOVE) // ReactOS hard coded.
+ if (MessageBits & QS_MOUSEMOVE)
{ // Account for tracking mouse moves..
- if (--pti->nCntsQBits[QSRosMouseMove] == 0) ClrMask |= QS_MOUSEMOVE;
- // Handle mouse move bits here.
- if (Queue->MouseMoved) ClrMask |= QS_MOUSEMOVE;
+ if (pti->nCntsQBits[QSRosMouseMove])
+ {
+ pti->nCntsQBits[QSRosMouseMove] = 0; // Throttle down count. Up to > 3:1 entries are ignored.
+ ClrMask |= QS_MOUSEMOVE;
+ }
}
if (MessageBits & QS_MOUSEBUTTON)
{
ClearMsgBitsMask(pti, QS_PAINT);
}
+/*
+ Post the move or update the message still pending to be processed.
+ Do not overload the queue with mouse move messages.
+ */
VOID FASTCALL
-MsqPostMouseMove(PTHREADINFO pti, MSG* Msg)
+MsqPostMouseMove(PTHREADINFO pti, MSG* Msg, LONG_PTR ExtraInfo)
{
- pti->MessageQueue->MouseMoveMsg = *Msg;
- pti->MessageQueue->MouseMoved = TRUE;
- MsqWakeQueue(pti, QS_MOUSEMOVE, TRUE);
+ PUSER_MESSAGE Message;
+ PLIST_ENTRY ListHead;
+ PUSER_MESSAGE_QUEUE MessageQueue = pti->MessageQueue;
+
+ ListHead = &MessageQueue->HardwareMessagesListHead;
+
+ // Do nothing if empty.
+ if (!IsListEmpty(ListHead->Flink))
+ {
+ // Look at the end of the list,
+ Message = CONTAINING_RECORD(ListHead->Blink, USER_MESSAGE, ListEntry);
+
+ // If the mouse move message is existing on the list,
+ if (Message->Msg.message == WM_MOUSEMOVE)
+ {
+ // Overwrite the message with updated data!
+ Message->Msg = *Msg;
+
+ MsqWakeQueue(pti, QS_MOUSEMOVE, TRUE);
+ return;
+ }
+ }
+
+ MsqPostMessage(pti, Msg, TRUE, QS_MOUSEMOVE, 0, ExtraInfo);
+}
+
+/*
+ Bring together the mouse move message.
+ Named "Coalesce" from Amine email ;^) (jt).
+ */
+VOID FASTCALL
+IntCoalesceMouseMove(PTHREADINFO pti)
+{
+ MSG Msg;
+ LARGE_INTEGER LargeTickCount;
+
+ // Force time stamp to update, keeping message time in sync.
+ if (gdwMouseMoveTimeStamp == 0)
+ {
+ KeQueryTickCount(&LargeTickCount);
+ gdwMouseMoveTimeStamp = MsqCalculateMessageTime(&LargeTickCount);
+ }
+
+ // Build mouse move message.
+ Msg.hwnd = NULL;
+ Msg.message = WM_MOUSEMOVE;
+ Msg.wParam = 0;
+ Msg.lParam = MAKELONG(gpsi->ptCursor.x, gpsi->ptCursor.y);
+ Msg.time = gdwMouseMoveTimeStamp;
+ Msg.pt = gpsi->ptCursor;
+
+ // Post the move.
+ MsqPostMouseMove(pti, &Msg, gdwMouseMoveExtraInfo);
+
+ // Zero the time stamp.
+ gdwMouseMoveTimeStamp = 0;
+
+ // Clear flag since the move was posted.
+ pti->MessageQueue->QF_flags &= ~QF_MOUSEMOVED;
}
VOID FASTCALL
{
pti = pwnd->head.pti;
MessageQueue = pti->MessageQueue;
- // MessageQueue->ptiMouse = pti;
- if ( pti->TIF_flags & TIF_INCLEANUP || MessageQueue->QF_flags & QF_INDESTROY)
+ if (MessageQueue->QF_flags & QF_INDESTROY)
{
- ERR("Mouse is over the Window Thread is Dead!\n");
+ ERR("Mouse is over a Window with a Dead Message Queue!\n");
return;
}
+ MessageQueue->ptiMouse = pti;
+
if (Msg->message == WM_MOUSEMOVE)
{
/* Check if cursor should be visible */
gpqCursor = MessageQueue;
/* Mouse move is a special case */
- MsqPostMouseMove(pti, Msg);
+ MessageQueue->QF_flags |= QF_MOUSEMOVED;
+ gdwMouseMoveExtraInfo = dwExtraInfo;
+ gdwMouseMoveTimeStamp = Msg->time;
+ MsqWakeQueue(pti, QS_MOUSEMOVE, TRUE);
}
else
{
{
// ERR("ptiLastInput is set\n");
// ptiLastInput = pti; // Once this is set during Reboot or Shutdown, this prevents the exit window having foreground.
+ // Find all the Move Mouse calls and fix mouse set active focus issues......
+ }
+
+ // Post mouse move before posting mouse buttons, keep it in sync.
+ if (pti->MessageQueue->QF_flags & QF_MOUSEMOVED)
+ {
+ IntCoalesceMouseMove(pti);
}
+
TRACE("Posting mouse message to hwnd=%p!\n", UserHMGetHandle(pwnd));
- MsqPostMessage(pti, Msg, TRUE, QS_MOUSEBUTTON, 0);
+ MsqPostMessage(pti, Msg, TRUE, QS_MOUSEBUTTON, 0, dwExtraInfo);
}
}
else if (hdcScreen)
MSG* Msg,
BOOLEAN HardwareMessage,
DWORD MessageBits,
- DWORD dwQEvent)
+ DWORD dwQEvent,
+ LONG_PTR ExtraInfo)
{
PUSER_MESSAGE Message;
PUSER_MESSAGE_QUEUE MessageQueue;
if (Msg->message == WM_HOTKEY) MessageBits |= QS_HOTKEY; // Justin Case, just set it.
Message->dwQEvent = dwQEvent;
+ Message->ExtraInfo = ExtraInfo;
Message->QS_Flags = MessageBits;
Message->pti = pti;
MsqWakeQueue(pti, MessageBits, TRUE);
}
else
{
- pwndMsg = co_WinPosWindowFromPoint(NULL, &msg->pt, &hittest, FALSE);//TRUE);
+ pwndMsg = co_WinPosWindowFromPoint(pwndMsg, &msg->pt, &hittest, FALSE);
}
TRACE("Got mouse message for %p, hittest: 0x%x\n", msg->hwnd, hittest);
- if (pwndMsg == NULL || pwndMsg->head.pti != pti)
+ // Null window or not the same "Hardware" message queue.
+ if (pwndMsg == NULL || pwndMsg->head.pti->MessageQueue != pti->MessageQueue)
{
/* Remove and ignore the message */
*RemoveMessages = TRUE;
TRACE("Message out of range!!!\n");
RETURN(FALSE);
}
+
+ // Update mouse move down keys.
+ if (message == WM_MOUSEMOVE)
+ {
+ msg->wParam = MsqGetDownKeyState(MessageQueue);
+ }
}
if(gspv.bMouseClickLock)
return TRUE;
}
-BOOL APIENTRY
-co_MsqPeekMouseMove(IN PTHREADINFO pti,
- IN BOOL Remove,
- IN PWND Window,
- IN UINT MsgFilterLow,
- IN UINT MsgFilterHigh,
- OUT MSG* pMsg)
-{
- BOOL AcceptMessage;
- MSG msg;
- PUSER_MESSAGE_QUEUE MessageQueue = pti->MessageQueue;
-
- if(!(MessageQueue->MouseMoved))
- return FALSE;
-
- if (!MessageQueue->ptiSysLock)
- {
- MessageQueue->ptiSysLock = pti;
- pti->pcti->CTI_flags |= CTI_THREADSYSLOCK;
- }
-
- if (MessageQueue->ptiSysLock != pti)
- {
- ERR("MsqPeekMouseMove: Thread Q is locked to another pti!\n");
- return FALSE;
- }
-
- msg = MessageQueue->MouseMoveMsg;
-
- AcceptMessage = co_IntProcessMouseMessage(&msg, &Remove, MsgFilterLow, MsgFilterHigh);
-
- if(AcceptMessage)
- *pMsg = msg;
-
- if(Remove)
- {
- ClearMsgBitsMask(pti, QS_MOUSEMOVE);
- MessageQueue->MouseMoved = FALSE;
- }
-
- MessageQueue->ptiSysLock = NULL;
- pti->pcti->CTI_flags &= ~CTI_THREADSYSLOCK;
- return AcceptMessage;
-}
-
/* check whether a message filter contains at least one potential hardware message */
static INT FASTCALL
filter_contains_hw_range( UINT first, UINT last )
*/
if ( ( !Window || // 1
( Window == PWND_BOTTOM && CurrentMessage->Msg.hwnd == NULL ) || // 2
- ( Window != PWND_BOTTOM && Window->head.h == CurrentMessage->Msg.hwnd ) ) && // 3
+ ( Window != PWND_BOTTOM && Window->head.h == CurrentMessage->Msg.hwnd ) || // 3
+ ( CurrentMessage->Msg.message == WM_MOUSEMOVE ) ) && // Null window for mouse moves.
( ( ( MsgFilterLow == 0 && MsgFilterHigh == 0 ) && CurrentMessage->QS_Flags & QSflags ) ||
( MsgFilterLow <= CurrentMessage->Msg.message && MsgFilterHigh >= CurrentMessage->Msg.message ) ) )
{
/* Queue for hardware messages for the queue. */
LIST_ENTRY HardwareMessagesListHead;
- /* True if a WM_MOUSEMOVE is pending */
- BOOLEAN MouseMoved;
- /* Current WM_MOUSEMOVE message */
- MSG MouseMoveMsg;
/* Last click message for translating double clicks */
MSG msgDblClk;
/* Current capture window for this queue. */
#define QF_FMENUSTATUSBREAK 0x00000004
#define QF_FMENUSTATUS 0x00000008
#define QF_FF10STATUS 0x00000010
-#define QF_MOUSEMOVED 0x00000020 // See MouseMoved.
+#define QF_MOUSEMOVED 0x00000020
#define QF_ACTIVATIONCHANGE 0x00000040
#define QF_TABSWITCHING 0x00000080
#define QF_KEYSTATERESET 0x00000100
UINT uTimeout, BOOL Block, INT HookMessage, ULONG_PTR *uResult);
PUSER_MESSAGE FASTCALL MsqCreateMessage(LPMSG Msg);
VOID FASTCALL MsqDestroyMessage(PUSER_MESSAGE Message);
-VOID FASTCALL MsqPostMessage(PTHREADINFO, MSG*, BOOLEAN, DWORD, DWORD);
+VOID FASTCALL MsqPostMessage(PTHREADINFO, MSG*, BOOLEAN, DWORD, DWORD, LONG_PTR);
VOID FASTCALL MsqPostQuitMessage(PTHREADINFO pti, ULONG ExitCode);
BOOLEAN APIENTRY
MsqPeekMessage(IN PTHREADINFO pti,
IN UINT MsgFilterHigh,
IN UINT QSflags,
OUT MSG* pMsg);
-BOOL APIENTRY
-co_MsqPeekMouseMove(IN PTHREADINFO pti,
- IN BOOL Remove,
- IN PWND Window,
- IN UINT MsgFilterLow,
- IN UINT MsgFilterHigh,
- OUT MSG* pMsg);
BOOLEAN FASTCALL MsqInitializeMessageQueue(PTHREADINFO, PUSER_MESSAGE_QUEUE);
PUSER_MESSAGE_QUEUE FASTCALL MsqCreateMessageQueue(PTHREADINFO);
VOID FASTCALL MsqCleanupThreadMsgs(PTHREADINFO);
BOOL HasPackedLParam,
INT HookMessage);
+VOID FASTCALL IntCoalesceMouseMove(PTHREADINFO);
LRESULT FASTCALL IntDispatchMessage(MSG* Msg);
BOOL FASTCALL IntTranslateKbdMessage(LPMSG lpMsg, UINT flags);
VOID FASTCALL co_MsqInsertMouseMessage(MSG* Msg, DWORD flags, ULONG_PTR dwExtraInfo, BOOL Hook);
VOID FASTCALL MsqWakeQueue(PTHREADINFO,DWORD,BOOL);
VOID FASTCALL ClearMsgBitsMask(PTHREADINFO,UINT);
BOOL FASTCALL IntCallMsgFilter(LPMSG,INT);
+WPARAM FASTCALL MsqGetDownKeyState(PUSER_MESSAGE_QUEUE);
int UserShowCursor(BOOL bShow);
PCURICON_OBJECT
DBG_DEFAULT_CHANNEL(UserMisc);
-/* registered Logon process */
-PPROCESSINFO LogonProcess = NULL;
+/* Registered logon process ID */
+HANDLE gpidLogon = 0;
BOOL FASTCALL
co_IntRegisterLogonProcess(HANDLE ProcessId, BOOL Register)
NTSTATUS Status;
PEPROCESS Process;
- Status = PsLookupProcessByProcessId(ProcessId,
- &Process);
+ Status = PsLookupProcessByProcessId(ProcessId, &Process);
if (!NT_SUCCESS(Status))
{
EngSetLastError(RtlNtStatusToDosError(Status));
return FALSE;
}
+ ProcessId = Process->UniqueProcessId;
+
+ ObDereferenceObject(Process);
+
if (Register)
{
/* Register the logon process */
- if (LogonProcess != NULL)
- {
- ObDereferenceObject(Process);
+ if (gpidLogon != 0)
return FALSE;
- }
- LogonProcess = (PPROCESSINFO)Process->Win32Process;
+ gpidLogon = ProcessId;
}
else
{
/* Deregister the logon process */
- if (LogonProcess != (PPROCESSINFO)Process->Win32Process)
- {
- ObDereferenceObject(Process);
+ if (gpidLogon != ProcessId)
return FALSE;
- }
- LogonProcess = NULL;
+ gpidLogon = 0;
}
- ObDereferenceObject(Process);
-
return TRUE;
}
STUB
RETURN( 0);
-
case TWOPARAM_ROUTINE_SETCARETPOS:
RETURN( (DWORD_PTR)co_IntSetCaretPos((int)Param1, (int)Param2));
if ( pDesk->dwDTFlags & DF_TME_HOVER &&
pWnd == pDesk->spwndTrack )
{
- Point = pWnd->head.pti->MessageQueue->MouseMoveMsg.pt;
+ Point = gpsi->ptCursor;
if ( RECTL_bPointInRect(&pDesk->rcMouseHover, Point.x, Point.y) )
{
if (pDesk->htEx == HTCLIENT) // In a client area.
{
- wParam = UserGetMouseButtonsState();
+ wParam = MsqGetDownKeyState(pWnd->head.pti->MessageQueue);
Msg = WM_MOUSEHOVER;
if (pWnd->ExStyle & WS_EX_LAYOUTRTL)
Msg.wParam = (WPARAM) pTmr->nID;
Msg.lParam = (LPARAM) pTmr->pfn;
- MsqPostMessage(pti, &Msg, FALSE, (QS_POSTMESSAGE|QS_ALLPOSTMESSAGE), 0);
+ MsqPostMessage(pti, &Msg, FALSE, (QS_POSTMESSAGE|QS_ALLPOSTMESSAGE), 0, 0);
pTmr->flags &= ~TMRF_READY;
ClearMsgBitsMask(pti, QS_TIMER);
Hit = TRUE;
TRACE("About to set process window station with handle (%p)\n",
hWindowStation);
- if(PsGetCurrentProcessWin32Process() != LogonProcess)
+ if (gpidLogon != PsGetCurrentProcessId())
{
ERR("Unauthorized process attempted to lock the window station!\n");
EngSetLastError(ERROR_ACCESS_DENIED);
TRACE("About to set process window station with handle (%p)\n",
hWindowStation);
- if(PsGetCurrentProcessWin32Process() != LogonProcess)
+ if (gpidLogon != PsGetCurrentProcessId())
{
ERR("Unauthorized process attempted to unlock the window station!\n");
EngSetLastError(ERROR_ACCESS_DENIED);
BOOL APIENTRY
NtUserSetLogonNotifyWindow(HWND hWnd)
{
- if(LogonProcess != PsGetCurrentProcessWin32Process())
+ if (gpidLogon != PsGetCurrentProcessId())
{
return FALSE;
}
- if(!IntIsWindow(hWnd))
+ if (!IntIsWindow(hWnd))
{
return FALSE;
}
} WINSTATION_OBJECT, *PWINSTATION_OBJECT;
extern WINSTATION_OBJECT *InputWindowStation;
-extern PPROCESSINFO LogonProcess;
+extern HANDLE gpidLogon;
extern HWND hwndSAS;
extern UNICODE_STRING gustrWindowStationsDir;
consrv/lineinput.c
consrv/popup.c
consrv/settings.c
+ consrv/shutdown.c
consrv/subsysreg.c
consrv/condrv/coninput.c
consrv/condrv/conoutput.c
Status = STATUS_SUCCESS;
}
- if (SetWaitEvent) SetEvent(Console->InputBuffer.ActiveEvent);
+ if (SetWaitEvent) NtSetEvent(Console->InputBuffer.ActiveEvent, NULL);
Done:
if (NumEventsWritten) *NumEventsWritten = i;
ConDrvInitInputBuffer(IN PCONSOLE Console,
IN ULONG InputBufferSize)
{
- SECURITY_ATTRIBUTES SecurityAttributes;
+ NTSTATUS Status;
+ OBJECT_ATTRIBUTES ObjectAttributes;
ConSrvInitObject(&Console->InputBuffer.Header, INPUT_BUFFER, Console);
- SecurityAttributes.nLength = sizeof(SECURITY_ATTRIBUTES);
- SecurityAttributes.lpSecurityDescriptor = NULL;
- SecurityAttributes.bInheritHandle = TRUE;
+ InitializeObjectAttributes(&ObjectAttributes,
+ NULL,
+ OBJ_INHERIT,
+ NULL,
+ NULL);
- Console->InputBuffer.ActiveEvent = CreateEventW(&SecurityAttributes, TRUE, FALSE, NULL);
- if (Console->InputBuffer.ActiveEvent == NULL) return STATUS_UNSUCCESSFUL;
+ Status = NtCreateEvent(&Console->InputBuffer.ActiveEvent, EVENT_ALL_ACCESS,
+ &ObjectAttributes, NotificationEvent, FALSE);
+ if (!NT_SUCCESS(Status))
+ {
+ return STATUS_UNSUCCESSFUL;
+ // return Status;
+ }
Console->InputBuffer.InputBufferSize = InputBufferSize;
InitializeListHead(&Console->InputBuffer.InputEvents);
ConDrvPause(PCONSOLE Console)
{
if (!Console->UnpauseEvent)
- Console->UnpauseEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+ {
+ NtCreateEvent(&Console->UnpauseEvent, EVENT_ALL_ACCESS,
+ NULL, NotificationEvent, FALSE);
+ }
}
VOID NTAPI
{
if (Console->UnpauseEvent)
{
- SetEvent(Console->UnpauseEvent);
- CloseHandle(Console->UnpauseEvent);
+ NtSetEvent(Console->UnpauseEvent, NULL);
+ NtClose(Console->UnpauseEvent);
Console->UnpauseEvent = NULL;
}
}
#include "consrv.h"
-#include <ndk/psfuncs.h>
-
/* This is for COM usage */
#define COBJMACROS
#include <shlobj.h>
ASSERT(Console);
*Console = NULL;
- // RtlEnterCriticalSection(&ProcessData->HandleTableLock);
-
if (ConSrvValidateConsole(&GrabConsole,
ProcessData->ConsoleHandle,
CONSOLE_RUNNING,
Status = STATUS_SUCCESS;
}
- // RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
return Status;
}
/* Colour table */
memcpy(Console->Colors, ConsoleInfo.Colors, sizeof(ConsoleInfo.Colors));
+ /* Create the Initialization Events */
+ Status = NtCreateEvent(&Console->InitEvents[INIT_SUCCESS], EVENT_ALL_ACCESS,
+ NULL, NotificationEvent, FALSE);
+ if (!NT_SUCCESS(Status))
+ {
+ DPRINT1("NtCreateEvent(InitEvents[INIT_SUCCESS]) failed: %lu\n", Status);
+ ConDrvDeleteConsole(Console);
+ ConSrvDeinitTerminal(&Terminal);
+ return Status;
+ }
+ Status = NtCreateEvent(&Console->InitEvents[INIT_FAILURE], EVENT_ALL_ACCESS,
+ NULL, NotificationEvent, FALSE);
+ if (!NT_SUCCESS(Status))
+ {
+ DPRINT1("NtCreateEvent(InitEvents[INIT_FAILURE]) failed: %lu\n", Status);
+ NtClose(Console->InitEvents[INIT_SUCCESS]);
+ ConDrvDeleteConsole(Console);
+ ConSrvDeinitTerminal(&Terminal);
+ return Status;
+ }
+
/*
* Attach the ConSrv terminal to the console.
* This call makes a copy of our local Terminal variable.
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to register terminal to the given console, Status = 0x%08lx\n", Status);
+ NtClose(Console->InitEvents[INIT_FAILURE]);
+ NtClose(Console->InitEvents[INIT_SUCCESS]);
ConDrvDeleteConsole(Console);
ConSrvDeinitTerminal(&Terminal);
return Status;
/* All went right, so add the console to the list */
Status = InsertConsole(&ConsoleHandle, Console);
+ // FIXME! We do not support at all asynchronous console creation!
+ NtSetEvent(Console->InitEvents[INIT_SUCCESS], NULL);
+ // NtSetEvent(Console->InitEvents[INIT_FAILURE], NULL);
+
/* Return the newly created console to the caller and a success code too */
*NewConsoleHandle = ConsoleHandle;
*NewConsole = Console;
/* Remove the console from the list */
RemoveConsoleByPointer(Console);
+ /* Destroy the Initialization Events */
+ NtClose(Console->InitEvents[INIT_FAILURE]);
+ NtClose(Console->InitEvents[INIT_SUCCESS]);
+
/* Clean the Input Line Discipline */
if (Console->LineBuffer) ConsoleFreeHeap(Console->LineBuffer);
/* Initialize the console initialization info structure */
ConsoleInitInfo.ConsoleStartInfo = AllocConsoleRequest->ConsoleStartInfo;
+ ConsoleInitInfo.IsWindowVisible = TRUE; // The console window is always visible.
ConsoleInitInfo.TitleLength = AllocConsoleRequest->TitleLength;
ConsoleInitInfo.ConsoleTitle = AllocConsoleRequest->ConsoleTitle;
ConsoleInitInfo.DesktopLength = AllocConsoleRequest->DesktopLength;
return Status;
}
- /* Mark the process as having a console */
- ProcessData->ConsoleApp = TRUE;
- CsrProcess->Flags |= CsrProcessIsConsoleApp;
-
- /* Return the console handle and the input wait handle to the caller */
- AllocConsoleRequest->ConsoleStartInfo->ConsoleHandle = ProcessData->ConsoleHandle;
- AllocConsoleRequest->ConsoleStartInfo->InputWaitHandle = ProcessData->InputWaitHandle;
-
/* Set the Property-Dialog and Control-Dispatcher handlers */
ProcessData->PropRoutine = AllocConsoleRequest->PropRoutine;
ProcessData->CtrlRoutine = AllocConsoleRequest->CtrlRoutine;
TRUE,
&AttachConsoleRequest->ConsoleStartInfo->InputHandle,
&AttachConsoleRequest->ConsoleStartInfo->OutputHandle,
- &AttachConsoleRequest->ConsoleStartInfo->ErrorHandle);
+ &AttachConsoleRequest->ConsoleStartInfo->ErrorHandle,
+ AttachConsoleRequest->ConsoleStartInfo);
if (!NT_SUCCESS(Status))
{
DPRINT1("Console inheritance failed\n");
goto Quit;
}
- /* Mark the process as having a console */
- TargetProcessData->ConsoleApp = TRUE;
- TargetProcess->Flags |= CsrProcessIsConsoleApp;
-
- /* Return the console handle and the input wait handle to the caller */
- AttachConsoleRequest->ConsoleStartInfo->ConsoleHandle = TargetProcessData->ConsoleHandle;
- AttachConsoleRequest->ConsoleStartInfo->InputWaitHandle = TargetProcessData->InputWaitHandle;
-
/* Set the Property-Dialog and Control-Dispatcher handlers */
TargetProcessData->PropRoutine = AttachConsoleRequest->PropRoutine;
TargetProcessData->CtrlRoutine = AttachConsoleRequest->CtrlRoutine;
CSR_API(SrvFreeConsole)
{
- PCSR_PROCESS CsrProcess = CsrGetClientThread()->Process;
- PCONSOLE_PROCESS_DATA ProcessData = ConsoleGetPerProcessData(CsrProcess);
-
- ConSrvRemoveConsole(ConsoleGetPerProcessData(CsrGetClientThread()->Process));
-
- /* Mark the process as not having a console anymore */
- ProcessData->ConsoleApp = FALSE;
- CsrProcess->Flags &= ~CsrProcessIsConsoleApp;
-
- return STATUS_SUCCESS;
+ return ConSrvRemoveConsole(ConsoleGetPerProcessData(CsrGetClientThread()->Process));
}
NTSTATUS NTAPI
typedef struct _CONSOLE_INIT_INFO
{
PCONSOLE_START_INFO ConsoleStartInfo;
+ BOOLEAN IsWindowVisible;
ULONG TitleLength;
PWCHAR ConsoleTitle;
#ifndef __CONSRV_H__
#define __CONSRV_H__
+/* Main header */
+#include "../winsrv.h"
+
/* PSDK/NDK Headers */
-#include <stdarg.h>
#define WIN32_NO_STATUS
#define _INC_WINDOWS
#define COM_NO_WINDOWS_H
-#include <windef.h>
-#include <winbase.h>
+
#include <winnls.h>
#include <winreg.h>
#include <wincon.h>
-#include <winuser.h>
+
#define NTOS_MODE_USER
#include <ndk/exfuncs.h>
#include <ndk/mmfuncs.h>
-#include <ndk/obfuncs.h>
-#include <ndk/rtlfuncs.h>
-
-/* Public Win32K Headers */
-#include <ntuser.h>
-
-/* PSEH for SEH Support */
-#include <pseh/pseh2.h>
-
-/* CSRSS Header */
-#include <csr/csrsrv.h>
/* CONSOLE Headers */
#include <win/conmsg.h>
PCSR_PROCESS Process; // Process owning this structure.
HANDLE ConsoleHandle;
- HANDLE InputWaitHandle;
-
- BOOLEAN ConsoleApp; // TRUE if it is a CUI app, FALSE otherwise.
+ BOOLEAN ConsoleApp; // TRUE if it is a CUI app, FALSE otherwise.
RTL_CRITICAL_SECTION HandleTableLock;
ULONG HandleTableSize;
#include "handle.h"
#include "lineinput.h"
+/* shutdown.c */
+ULONG
+NTAPI
+ConsoleClientShutdown(IN PCSR_PROCESS CsrProcess,
+ IN ULONG Flags,
+ IN BOOLEAN FirstPhase);
+
#endif /* __CONSRV_H__ */
{
DPRINT1("GuiConsoleNcCreate: InitFonts failed\n");
GuiData->hWindow = NULL;
- SetEvent(GuiData->hGuiInitEvent);
+ NtSetEvent(GuiData->hGuiInitEvent, NULL);
return FALSE;
}
SetWindowLongPtrW(GuiData->hWindow, GWLP_USERDATA, (DWORD_PTR)GuiData);
- SetTimer(GuiData->hWindow, CONGUI_UPDATE_TIMER, CONGUI_UPDATE_TIME, NULL);
+ if (GuiData->IsWindowVisible)
+ {
+ SetTimer(GuiData->hWindow, CONGUI_UPDATE_TIMER, CONGUI_UPDATE_TIME, NULL);
+ }
+
// FIXME: HACK: Potential HACK for CORE-8129; see revision 63595.
//CreateSysMenu(GuiData->hWindow);
DPRINT("OnNcCreate - setting start event\n");
- SetEvent(GuiData->hGuiInitEvent);
+ NtSetEvent(GuiData->hGuiInitEvent, NULL);
return (BOOL)DefWindowProcW(GuiData->hWindow, WM_NCCREATE, 0, (LPARAM)Create);
}
PAINTSTRUCT ps;
RECT rcPaint;
+ /* Do nothing if the window is hidden */
+ if (!GuiData->IsWindowVisible) return;
+
BeginPaint(GuiData->hWindow, &ps);
if (ps.hdc != NULL &&
ps.rcPaint.left < ps.rcPaint.right &&
{
PCONSOLE_SCREEN_BUFFER ActiveBuffer = GuiData->ActiveBuffer;
+ /* Do nothing if the window is hidden */
+ if (!GuiData->IsWindowVisible) return;
+
// See WM_PALETTECHANGED message
// if ((HWND)wParam == hWnd) break;
PCONSRV_CONSOLE Console = GuiData->Console;
PCONSOLE_SCREEN_BUFFER Buff;
+ /* Do nothing if the window is hidden */
+ if (!GuiData->IsWindowVisible) return;
+
SetTimer(GuiData->hWindow, CONGUI_UPDATE_TIMER, CURSOR_BLINK_TIME, NULL);
if (!ConDrvValidateConsoleUnsafe(Console, CONSOLE_RUNNING, TRUE)) return;
{
PGUI_CONSOLE_DATA GuiData = GuiGetGuiData(hWnd);
- KillTimer(hWnd, CONGUI_UPDATE_TIMER);
+ if (GuiData->IsWindowVisible)
+ {
+ KillTimer(hWnd, CONGUI_UPDATE_TIMER);
+ }
+
GetSystemMenu(hWnd, TRUE);
if (GuiData)
{
PCONSRV_CONSOLE Console = GuiData->Console;
+ /* Do nothing if the window is hidden */
+ if (!GuiData->IsWindowVisible) return;
+
if (!ConDrvValidateConsoleUnsafe(Console, CONSOLE_RUNNING, TRUE)) return;
if ((GuiData->WindowSizeLock == FALSE) &&
case WM_SETCURSOR:
{
+ /* Do nothing if the window is hidden */
+ if (!GuiData->IsWindowVisible) goto Default;
+
/*
* The message was sent because we are manually triggering a change.
* Check whether the mouse is indeed present on this console window
case WM_CONTEXTMENU:
{
+ /* Do nothing if the window is hidden */
+ if (!GuiData->IsWindowVisible) break;
+
if (DefWindowProcW(hWnd /*GuiData->hWindow*/, WM_NCHITTEST, 0, lParam) == HTCLIENT)
{
HMENU hMenu = CreatePopupMenu();
DWORD Width, Height;
UINT WidthUnit, HeightUnit;
+ /* Do nothing if the window is hidden */
+ if (!GuiData->IsWindowVisible) break;
+
GetScreenBufferSizeUnits(Buff, GuiData, &WidthUnit, &HeightUnit);
Width = Buff->ScreenBufferSize.X * WidthUnit ;
HANDLE hGuiInitEvent;
HANDLE hGuiTermEvent;
+ BOOLEAN IsWindowVisible;
+
POINT OldCursor;
LONG_PTR WndStyle;
PCONSOLE_INFO ConsoleInfo;
PCONSOLE_START_INFO ConsoleStartInfo;
ULONG ProcessId;
+ BOOLEAN IsWindowVisible;
} GUI_INIT_INFO, *PGUI_INIT_INFO;
static BOOL ConsInitialized = FALSE;
MSG msg;
/*
- * This thread dispatches all the console notifications to the notify window.
- * It is common for all the console windows.
+ * This thread dispatches all the console notifications to the
+ * notification window. It is common for all the console windows.
*/
/* The thread has been initialized, set the event */
- SetEvent(*GraphicsStartupEvent);
+ NtSetEvent(*GraphicsStartupEvent, NULL);
while (GetMessageW(&msg, NULL, 0, 0))
{
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
- NULL,
+ GuiData->IsWindowVisible ? HWND_DESKTOP : HWND_MESSAGE,
NULL,
ConSrvDllInstance,
(PVOID)GuiData);
GuiData->GuiInfo.WindowOrigin.x = rcWnd.left;
GuiData->GuiInfo.WindowOrigin.y = rcWnd.top;
- /* Move and resize the window to the user's values */
- /* CAN WE DEADLOCK ?? */
- GuiConsoleMoveWindow(GuiData); // FIXME: This MUST be done via the CreateWindowExW call.
- SendMessageW(GuiData->hWindow, PM_RESIZE_TERMINAL, 0, 0);
+ if (GuiData->IsWindowVisible)
+ {
+ /* Move and resize the window to the user's values */
+ /* CAN WE DEADLOCK ?? */
+ GuiConsoleMoveWindow(GuiData); // FIXME: This MUST be done via the CreateWindowExW call.
+ SendMessageW(GuiData->hWindow, PM_RESIZE_TERMINAL, 0, 0);
+ }
// FIXME: HACK: Potential HACK for CORE-8129; see revision 63595.
CreateSysMenu(GuiData->hWindow);
- /* Switch to full-screen mode if necessary */
- // FIXME: Move elsewhere, it cause misdrawings of the window.
- if (GuiData->GuiInfo.FullScreen) SwitchFullScreen(GuiData, TRUE);
-
- DPRINT("PM_CREATE_CONSOLE -- showing window\n");
- // ShowWindow(NewWindow, (int)GuiData->GuiInfo.ShowWindow);
- ShowWindowAsync(NewWindow, (int)GuiData->GuiInfo.ShowWindow);
- DPRINT("Window showed\n");
+ if (GuiData->IsWindowVisible)
+ {
+ /* Switch to full-screen mode if necessary */
+ // FIXME: Move elsewhere, it cause misdrawings of the window.
+ if (GuiData->GuiInfo.FullScreen) SwitchFullScreen(GuiData, TRUE);
+
+ DPRINT("PM_CREATE_CONSOLE -- showing window\n");
+ // ShowWindow(NewWindow, (int)GuiData->GuiInfo.ShowWindow);
+ ShowWindowAsync(NewWindow, (int)GuiData->GuiInfo.ShowWindow);
+ DPRINT("Window showed\n");
+ }
+ else
+ {
+ DPRINT("PM_CREATE_CONSOLE -- hidden window\n");
+ ShowWindowAsync(NewWindow, SW_HIDE);
+ }
continue;
}
DestroyWindow(GuiData->hWindow);
PrivateCsrssManualGuiCheck(+1); // RemoveGuiApp
- SetEvent(GuiData->hGuiTermEvent);
+ NtSetEvent(GuiData->hGuiTermEvent, NULL);
if (InterlockedDecrement(&WindowCount) == 0)
{
*/
if (hInputThread == NULL)
{
- HANDLE GraphicsStartupEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
- if (GraphicsStartupEvent == NULL) return FALSE;
+ HANDLE GraphicsStartupEvent;
+ NTSTATUS Status;
+
+ Status = NtCreateEvent(&GraphicsStartupEvent, EVENT_ALL_ACCESS,
+ NULL, SynchronizationEvent, FALSE);
+ if (!NT_SUCCESS(Status)) return FALSE;
hInputThread = CreateThread(NULL,
0,
&dwInputThreadId);
if (hInputThread == NULL)
{
- CloseHandle(GraphicsStartupEvent);
+ NtClose(GraphicsStartupEvent);
DPRINT1("CONSRV: Failed to create graphics console thread.\n");
return FALSE;
}
CloseHandle(hInputThread);
WaitForSingleObject(GraphicsStartupEvent, INFINITE);
- CloseHandle(GraphicsStartupEvent);
+ NtClose(GraphicsStartupEvent);
}
// ConsInitialized = TRUE;
GuiData->Console = Console;
GuiData->ActiveBuffer = Console->ActiveBuffer;
GuiData->hWindow = NULL;
+ GuiData->IsWindowVisible = GuiInitInfo->IsWindowVisible;
/* The console can be resized */
Console->FixedSize = FALSE;
/* 1. Load the default settings */
GuiConsoleGetDefaultSettings(&TermInfo, GuiInitInfo->ProcessId);
- /* 3. Load the remaining console settings via the registry */
- if ((ConsoleStartInfo->dwStartupFlags & STARTF_TITLEISLINKNAME) == 0)
+ if (GuiData->IsWindowVisible)
{
- /* Load the terminal infos from the registry */
- GuiConsoleReadUserSettings(&TermInfo,
- ConsoleInfo->ConsoleTitle,
- GuiInitInfo->ProcessId);
-
- /*
- * Now, update them with the properties the user might gave to us
- * via the STARTUPINFO structure before calling CreateProcess
- * (and which was transmitted via the ConsoleStartInfo structure).
- * We therefore overwrite the values read in the registry.
- */
- if (ConsoleStartInfo->dwStartupFlags & STARTF_USESHOWWINDOW)
- {
- TermInfo.ShowWindow = ConsoleStartInfo->wShowWindow;
- }
- if (ConsoleStartInfo->dwStartupFlags & STARTF_USEPOSITION)
+ /* 2. Load the remaining console settings via the registry */
+ if ((ConsoleStartInfo->dwStartupFlags & STARTF_TITLEISLINKNAME) == 0)
{
- TermInfo.AutoPosition = FALSE;
- TermInfo.WindowOrigin.x = ConsoleStartInfo->dwWindowOrigin.X;
- TermInfo.WindowOrigin.y = ConsoleStartInfo->dwWindowOrigin.Y;
- }
- if (ConsoleStartInfo->dwStartupFlags & STARTF_RUNFULLSCREEN)
- {
- TermInfo.FullScreen = TRUE;
+ /* Load the terminal infos from the registry */
+ GuiConsoleReadUserSettings(&TermInfo,
+ ConsoleInfo->ConsoleTitle,
+ GuiInitInfo->ProcessId);
+
+ /*
+ * Now, update them with the properties the user might gave to us
+ * via the STARTUPINFO structure before calling CreateProcess
+ * (and which was transmitted via the ConsoleStartInfo structure).
+ * We therefore overwrite the values read in the registry.
+ */
+ if (ConsoleStartInfo->dwStartupFlags & STARTF_USESHOWWINDOW)
+ {
+ TermInfo.ShowWindow = ConsoleStartInfo->wShowWindow;
+ }
+ if (ConsoleStartInfo->dwStartupFlags & STARTF_USEPOSITION)
+ {
+ TermInfo.AutoPosition = FALSE;
+ TermInfo.WindowOrigin.x = ConsoleStartInfo->dwWindowOrigin.X;
+ TermInfo.WindowOrigin.y = ConsoleStartInfo->dwWindowOrigin.Y;
+ }
+ if (ConsoleStartInfo->dwStartupFlags & STARTF_RUNFULLSCREEN)
+ {
+ TermInfo.FullScreen = TRUE;
+ }
}
}
* Ideally we could use SendNotifyMessage for this but its not
* yet implemented.
*/
- GuiData->hGuiInitEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
- GuiData->hGuiTermEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
+ NtCreateEvent(&GuiData->hGuiInitEvent, EVENT_ALL_ACCESS,
+ NULL, SynchronizationEvent, FALSE);
+ NtCreateEvent(&GuiData->hGuiTermEvent, EVENT_ALL_ACCESS,
+ NULL, SynchronizationEvent, FALSE);
DPRINT("GUI - Checkpoint\n");
/* Wait until initialization has finished */
WaitForSingleObject(GuiData->hGuiInitEvent, INFINITE);
DPRINT("OK we created the console window\n");
- CloseHandle(GuiData->hGuiInitEvent);
+ NtClose(GuiData->hGuiInitEvent);
GuiData->hGuiInitEvent = NULL;
/* Check whether we really succeeded in initializing the terminal window */
PostThreadMessageW(dwInputThreadId, PM_DESTROY_CONSOLE, 0, (LPARAM)GuiData);
WaitForSingleObject(GuiData->hGuiTermEvent, INFINITE);
DPRINT("hGuiTermEvent set\n");
- CloseHandle(GuiData->hGuiTermEvent);
+ NtClose(GuiData->hGuiTermEvent);
GuiData->hGuiTermEvent = NULL;
DPRINT("Destroying icons !! - GuiData->hIcon = 0x%p ; ghDefaultIcon = 0x%p ; GuiData->hIconSm = 0x%p ; ghDefaultIconSm = 0x%p\n",
SMALL_RECT* Region)
{
PGUI_CONSOLE_DATA GuiData = This->Data;
+
+ /* Do nothing if the window is hidden */
+ if (!GuiData->IsWindowVisible) return;
+
DrawRegion(GuiData, Region);
}
if (NULL == GuiData || NULL == GuiData->hWindow) return;
+ /* Do nothing if the window is hidden */
+ if (!GuiData->IsWindowVisible) return;
+
Buff = GuiData->ActiveBuffer;
if (GetType(Buff) != TEXTMODE_BUFFER) return;
{
PGUI_CONSOLE_DATA GuiData = This->Data;
+ /* Do nothing if the window is hidden */
+ if (!GuiData->IsWindowVisible) return TRUE;
+
if (GuiData->ActiveBuffer == Buff)
{
InvalidateCell(GuiData, Buff->CursorPosition.X, Buff->CursorPosition.Y);
{
PGUI_CONSOLE_DATA GuiData = This->Data;
+ /* Do nothing if the window is hidden */
+ if (!GuiData->IsWindowVisible) return TRUE;
+
if (GuiData->ActiveBuffer == Buff)
{
/* Redraw char at old position (remove cursor) */
if (NewMode & ~(CONSOLE_FULLSCREEN_MODE | CONSOLE_WINDOWED_MODE))
return FALSE;
+ /* Do nothing if the window is hidden */
+ if (!GuiData->IsWindowVisible) return TRUE;
+
FullScreen = ((NewMode & CONSOLE_FULLSCREEN_MODE) != 0);
if (FullScreen != GuiData->GuiInfo.FullScreen)
{
PGUI_CONSOLE_DATA GuiData = This->Data;
- /* Set the reference count */
- if (Show) ++GuiData->MouseCursorRefCount;
- else --GuiData->MouseCursorRefCount;
+ if (GuiData->IsWindowVisible)
+ {
+ /* Set the reference count */
+ if (Show) ++GuiData->MouseCursorRefCount;
+ else --GuiData->MouseCursorRefCount;
- /* Effectively show (or hide) the cursor (use special values for (w|l)Param) */
- PostMessageW(GuiData->hWindow, WM_SETCURSOR, -1, -1);
+ /* Effectively show (or hide) the cursor (use special values for (w|l)Param) */
+ PostMessageW(GuiData->hWindow, WM_SETCURSOR, -1, -1);
+ }
return GuiData->MouseCursorRefCount;
}
{
PGUI_CONSOLE_DATA GuiData = This->Data;
+ /* Do nothing if the window is hidden */
+ if (!GuiData->IsWindowVisible) return TRUE;
+
/*
* Set the cursor's handle. If the given handle is NULL,
* then restore the default cursor.
GuiInitInfo->ConsoleInfo = ConsoleInfo;
GuiInitInfo->ConsoleStartInfo = ConsoleInitInfo->ConsoleStartInfo;
GuiInitInfo->ProcessId = ProcessId;
+ GuiInitInfo->IsWindowVisible = ConsoleInitInfo->IsWindowVisible;
/* Finally, initialize the frontend structure */
FrontEnd->Vtbl = &GuiVtbl;
return Status;
}
+ /* Duplicate the Initialization Events */
+ Status = NtDuplicateObject(NtCurrentProcess(),
+ Console->InitEvents[INIT_SUCCESS],
+ ProcessData->Process->ProcessHandle,
+ &ConsoleInitInfo->ConsoleStartInfo->InitEvents[INIT_SUCCESS],
+ EVENT_ALL_ACCESS, 0, 0);
+ if (!NT_SUCCESS(Status))
+ {
+ DPRINT1("NtDuplicateObject(InitEvents[INIT_SUCCESS]) failed: %lu\n", Status);
+ ConSrvFreeHandlesTable(ProcessData);
+ ConSrvDeleteConsole(Console);
+ ProcessData->ConsoleHandle = NULL;
+ return Status;
+ }
+
+ Status = NtDuplicateObject(NtCurrentProcess(),
+ Console->InitEvents[INIT_FAILURE],
+ ProcessData->Process->ProcessHandle,
+ &ConsoleInitInfo->ConsoleStartInfo->InitEvents[INIT_FAILURE],
+ EVENT_ALL_ACCESS, 0, 0);
+ if (!NT_SUCCESS(Status))
+ {
+ DPRINT1("NtDuplicateObject(InitEvents[INIT_FAILURE]) failed: %lu\n", Status);
+ NtClose(ConsoleInitInfo->ConsoleStartInfo->InitEvents[INIT_SUCCESS]);
+ ConSrvFreeHandlesTable(ProcessData);
+ ConSrvDeleteConsole(Console);
+ ProcessData->ConsoleHandle = NULL;
+ return Status;
+ }
+
/* Duplicate the Input Event */
Status = NtDuplicateObject(NtCurrentProcess(),
Console->InputBuffer.ActiveEvent,
ProcessData->Process->ProcessHandle,
- &ProcessData->InputWaitHandle,
+ &ConsoleInitInfo->ConsoleStartInfo->InputWaitHandle,
EVENT_ALL_ACCESS, 0, 0);
if (!NT_SUCCESS(Status))
{
- DPRINT1("NtDuplicateObject() failed: %lu\n", Status);
+ DPRINT1("NtDuplicateObject(InputWaitHandle) failed: %lu\n", Status);
+ NtClose(ConsoleInitInfo->ConsoleStartInfo->InitEvents[INIT_FAILURE]);
+ NtClose(ConsoleInitInfo->ConsoleStartInfo->InitEvents[INIT_SUCCESS]);
ConSrvFreeHandlesTable(ProcessData);
ConSrvDeleteConsole(Console);
ProcessData->ConsoleHandle = NULL;
return Status;
}
+ /* Mark the process as having a console */
+ ProcessData->ConsoleApp = TRUE;
+ ProcessData->Process->Flags |= CsrProcessIsConsoleApp;
+
+ /* Return the console handle to the caller */
+ ConsoleInitInfo->ConsoleStartInfo->ConsoleHandle = ProcessData->ConsoleHandle;
+
/* Insert the process into the processes list of the console */
InsertHeadList(&Console->ProcessList, &ProcessData->ConsoleLink);
BOOLEAN CreateNewHandlesTable,
PHANDLE pInputHandle,
PHANDLE pOutputHandle,
- PHANDLE pErrorHandle)
+ PHANDLE pErrorHandle,
+ PCONSOLE_START_INFO ConsoleStartInfo)
{
NTSTATUS Status = STATUS_SUCCESS;
PCONSOLE Console;
}
}
+ /* Duplicate the Initialization Events */
+ Status = NtDuplicateObject(NtCurrentProcess(),
+ Console->InitEvents[INIT_SUCCESS],
+ ProcessData->Process->ProcessHandle,
+ &ConsoleStartInfo->InitEvents[INIT_SUCCESS],
+ EVENT_ALL_ACCESS, 0, 0);
+ if (!NT_SUCCESS(Status))
+ {
+ DPRINT1("NtDuplicateObject(InitEvents[INIT_SUCCESS]) failed: %lu\n", Status);
+ ConSrvFreeHandlesTable(ProcessData);
+ ProcessData->ConsoleHandle = NULL;
+ goto Quit;
+ }
+
+ Status = NtDuplicateObject(NtCurrentProcess(),
+ Console->InitEvents[INIT_FAILURE],
+ ProcessData->Process->ProcessHandle,
+ &ConsoleStartInfo->InitEvents[INIT_FAILURE],
+ EVENT_ALL_ACCESS, 0, 0);
+ if (!NT_SUCCESS(Status))
+ {
+ DPRINT1("NtDuplicateObject(InitEvents[INIT_FAILURE]) failed: %lu\n", Status);
+ NtClose(ConsoleStartInfo->InitEvents[INIT_SUCCESS]);
+ ConSrvFreeHandlesTable(ProcessData);
+ ProcessData->ConsoleHandle = NULL;
+ goto Quit;
+ }
+
/* Duplicate the Input Event */
Status = NtDuplicateObject(NtCurrentProcess(),
Console->InputBuffer.ActiveEvent,
ProcessData->Process->ProcessHandle,
- &ProcessData->InputWaitHandle,
+ &ConsoleStartInfo->InputWaitHandle,
EVENT_ALL_ACCESS, 0, 0);
if (!NT_SUCCESS(Status))
{
- DPRINT1("NtDuplicateObject() failed: %lu\n", Status);
+ DPRINT1("NtDuplicateObject(InputWaitHandle) failed: %lu\n", Status);
+ NtClose(ConsoleStartInfo->InitEvents[INIT_FAILURE]);
+ NtClose(ConsoleStartInfo->InitEvents[INIT_SUCCESS]);
ConSrvFreeHandlesTable(ProcessData); // NOTE: Always free the handles table.
ProcessData->ConsoleHandle = NULL;
goto Quit;
}
+ /* Mark the process as having a console */
+ ProcessData->ConsoleApp = TRUE;
+ ProcessData->Process->Flags |= CsrProcessIsConsoleApp;
+
+ /* Return the console handle to the caller */
+ ConsoleStartInfo->ConsoleHandle = ProcessData->ConsoleHandle;
+
/* Insert the process into the processes list of the console */
InsertHeadList(&Console->ProcessList, &ProcessData->ConsoleLink);
return Status;
}
-VOID
+NTSTATUS
ConSrvRemoveConsole(PCONSOLE_PROCESS_DATA ProcessData)
{
PCONSOLE Console;
+ PCONSOLE_PROCESS_DATA ConsoleLeaderProcess;
DPRINT("ConSrvRemoveConsole\n");
- // RtlEnterCriticalSection(&ProcessData->HandleTableLock);
+ /* Mark the process as not having a console anymore */
+ ProcessData->ConsoleApp = FALSE;
+ ProcessData->Process->Flags &= ~CsrProcessIsConsoleApp;
/* Validate and lock the console */
- if (ConSrvValidateConsole(&Console,
- ProcessData->ConsoleHandle,
- CONSOLE_RUNNING, TRUE))
+ if (!ConSrvValidateConsole(&Console,
+ ProcessData->ConsoleHandle,
+ CONSOLE_RUNNING, TRUE))
{
- /* Retrieve the console leader process */
- PCONSOLE_PROCESS_DATA ConsoleLeaderProcess = ConSrvGetConsoleLeaderProcess(Console);
+ // FIXME: Find another status code
+ return STATUS_UNSUCCESSFUL;
+ }
- DPRINT("ConSrvRemoveConsole - Locking OK\n");
+ DPRINT("ConSrvRemoveConsole - Locking OK\n");
- /* Close all console handles and free the handles table */
- ConSrvFreeHandlesTable(ProcessData);
+ /* Retrieve the console leader process */
+ ConsoleLeaderProcess = ConSrvGetConsoleLeaderProcess(Console);
- /* Detach the process from the console */
- ProcessData->ConsoleHandle = NULL;
+ /* Close all console handles and free the handles table */
+ ConSrvFreeHandlesTable(ProcessData);
- /* Remove the process from the console's list of processes */
- RemoveEntryList(&ProcessData->ConsoleLink);
+ /* Detach the process from the console */
+ ProcessData->ConsoleHandle = NULL;
- /* Check whether the console should send a last close notification */
- if (Console->NotifyLastClose)
+ /* Remove the process from the console's list of processes */
+ RemoveEntryList(&ProcessData->ConsoleLink);
+
+ /* Check whether the console should send a last close notification */
+ if (Console->NotifyLastClose)
+ {
+ /* If we are removing the process which wants the last close notification... */
+ if (ProcessData == Console->NotifiedLastCloseProcess)
+ {
+ /* ... just reset the flag and the pointer... */
+ Console->NotifyLastClose = FALSE;
+ Console->NotifiedLastCloseProcess = NULL;
+ }
+ /*
+ * ... otherwise, if we are removing the console leader process
+ * (that cannot be the process wanting the notification, because
+ * the previous case already dealt with it)...
+ */
+ else if (ProcessData == ConsoleLeaderProcess)
{
- /* If we are removing the process which wants the last close notification... */
- if (ProcessData == Console->NotifiedLastCloseProcess)
- {
- /* ... just reset the flag and the pointer... */
- Console->NotifyLastClose = FALSE;
- Console->NotifiedLastCloseProcess = NULL;
- }
/*
- * ... otherwise, if we are removing the console leader process
- * (that cannot be the process wanting the notification, because
- * the previous case already dealt with it)...
+ * ... reset the flag first (so that we avoid multiple notifications)
+ * and then send the last close notification.
*/
- else if (ProcessData == ConsoleLeaderProcess)
- {
- /*
- * ... reset the flag first (so that we avoid multiple notifications)
- * and then send the last close notification.
- */
- Console->NotifyLastClose = FALSE;
- ConSrvConsoleCtrlEvent(CTRL_LAST_CLOSE_EVENT, Console->NotifiedLastCloseProcess);
-
- /* Only now, reset the pointer */
- Console->NotifiedLastCloseProcess = NULL;
- }
+ Console->NotifyLastClose = FALSE;
+ ConSrvConsoleCtrlEvent(CTRL_LAST_CLOSE_EVENT, Console->NotifiedLastCloseProcess);
+
+ /* Only now, reset the pointer */
+ Console->NotifiedLastCloseProcess = NULL;
}
+ }
- /* Update the internal info of the terminal */
- TermRefreshInternalInfo(Console);
+ /* Update the internal info of the terminal */
+ TermRefreshInternalInfo(Console);
- /* Release the console */
- DPRINT("ConSrvRemoveConsole - Decrement Console->ReferenceCount = %lu\n", Console->ReferenceCount);
- ConSrvReleaseConsole(Console, TRUE);
- //CloseHandle(ProcessData->InputWaitHandle);
- //ProcessData->InputWaitHandle = NULL;
- }
+ /* Release the console */
+ DPRINT("ConSrvRemoveConsole - Decrement Console->ReferenceCount = %lu\n", Console->ReferenceCount);
+ ConSrvReleaseConsole(Console, TRUE);
- // RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
+ return STATUS_SUCCESS;
}
// CRITICAL_SECTION Lock;
// CONSOLE_STATE State; /* State of the console */
+ HANDLE InitEvents[MAX_INIT_EVENTS]; /* Initialization events */
+
FRONTEND FrontEndIFace; /* Frontend-specific interface */
/******************************* Process support ******************************/
/* Initialize the new (target) process */
RtlZeroMemory(TargetProcessData, sizeof(*TargetProcessData));
TargetProcessData->Process = TargetProcess;
- TargetProcessData->InputWaitHandle = NULL;
TargetProcessData->ConsoleHandle = NULL;
TargetProcessData->ConsoleApp = FALSE;
/* Initialize the console initialization info structure */
ConsoleInitInfo.ConsoleStartInfo = &ConnectInfo->ConsoleStartInfo;
+ ConsoleInitInfo.IsWindowVisible = ConnectInfo->IsWindowVisible;
ConsoleInitInfo.TitleLength = ConnectInfo->TitleLength;
ConsoleInitInfo.ConsoleTitle = ConnectInfo->ConsoleTitle;
ConsoleInitInfo.DesktopLength = ConnectInfo->DesktopLength;
Status = ConSrvInheritConsole(ProcessData,
ConnectInfo->ConsoleStartInfo.ConsoleHandle,
FALSE,
- NULL, // &ConnectInfo->ConsoleStartInfo.InputHandle,
- NULL, // &ConnectInfo->ConsoleStartInfo.OutputHandle,
- NULL); // &ConnectInfo->ConsoleStartInfo.ErrorHandle);
+ NULL, // &ConnectInfo->ConsoleStartInfo.InputHandle,
+ NULL, // &ConnectInfo->ConsoleStartInfo.OutputHandle,
+ NULL, // &ConnectInfo->ConsoleStartInfo.ErrorHandle,
+ &ConnectInfo->ConsoleStartInfo);
if (!NT_SUCCESS(Status))
{
DPRINT1("Console inheritance failed\n");
}
}
- /* Mark the process as having a console */
- ProcessData->ConsoleApp = TRUE;
- // ProcessData->Flags |= CsrProcessIsConsoleApp;
-
- /* Return the console handle and the input wait handle to the caller */
- ConnectInfo->ConsoleStartInfo.ConsoleHandle = ProcessData->ConsoleHandle;
- ConnectInfo->ConsoleStartInfo.InputWaitHandle = ProcessData->InputWaitHandle;
-
/* Set the Property-Dialog and Control-Dispatcher handlers */
ProcessData->PropRoutine = ConnectInfo->PropRoutine;
ProcessData->CtrlRoutine = ConnectInfo->CtrlRoutine;
{
DPRINT("ConSrvDisconnect - calling ConSrvRemoveConsole\n");
ConSrvRemoveConsole(ProcessData);
-
- /* Mark the process as not having a console anymore */
- ProcessData->ConsoleApp = FALSE;
- Process->Flags &= ~CsrProcessIsConsoleApp;
}
RtlDeleteCriticalSection(&ProcessData->HandleTableLock);
LoadedServerDll->DisconnectCallback = ConSrvDisconnect;
LoadedServerDll->NewProcessCallback = ConSrvNewProcess;
// LoadedServerDll->HardErrorCallback = ConSrvHardError;
- LoadedServerDll->ShutdownProcessCallback = NULL;
+ LoadedServerDll->ShutdownProcessCallback = ConsoleClientShutdown;
ConSrvDllInstance = LoadedServerDll->ServerHandle;
BOOLEAN CreateNewHandlesTable,
PHANDLE pInputHandle,
PHANDLE pOutputHandle,
- PHANDLE pErrorHandle);
-VOID ConSrvRemoveConsole(PCONSOLE_PROCESS_DATA ProcessData);
+ PHANDLE pErrorHandle,
+ PCONSOLE_START_INFO ConsoleStartInfo);
+NTSTATUS ConSrvRemoveConsole(PCONSOLE_PROCESS_DATA ProcessData);
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS Console Server DLL
+ * FILE: win32ss/user/winsrv/consrv/shutdown.c
+ * PURPOSE: Processes Shutdown
+ * PROGRAMMERS: Alex Ionescu
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include "consrv.h"
+
+#define NDEBUG
+#include <debug.h>
+
+/* FUNCTIONS ******************************************************************/
+
+// NOTE: See http://blogs.msdn.com/b/ntdebugging/archive/2007/06/09/how-windows-shuts-down.aspx
+ULONG
+NTAPI
+ConsoleClientShutdown(IN PCSR_PROCESS CsrProcess,
+ IN ULONG Flags,
+ IN BOOLEAN FirstPhase)
+{
+ PCONSOLE_PROCESS_DATA ProcessData = ConsoleGetPerProcessData(CsrProcess);
+
+ if ( ProcessData->ConsoleHandle != NULL ||
+ ProcessData->HandleTable != NULL )
+ {
+ DPRINT1("ConsoleClientShutdown(0x%p, 0x%x, %s) - Console process [0x%x, 0x%x]\n",
+ CsrProcess, Flags, FirstPhase ? "FirstPhase" : "LastPhase",
+ CsrProcess->ClientId.UniqueProcess, CsrProcess->ClientId.UniqueThread);
+
+ /* We are done with the process itself */
+ CsrDereferenceProcess(CsrProcess);
+ return CsrShutdownCsrProcess;
+ }
+ else
+ {
+ DPRINT1("ConsoleClientShutdown(0x%p, 0x%x, %s) - Non-console process [0x%x, 0x%x]\n",
+ CsrProcess, Flags, FirstPhase ? "FirstPhase" : "LastPhase",
+ CsrProcess->ClientId.UniqueProcess, CsrProcess->ClientId.UniqueThread);
+
+ /* On first pass, ignore the process since the GUI server should take it... */
+ if (FirstPhase) return CsrShutdownNonCsrProcess;
+
+ /* ... otherwise, call the generic handler */
+ // FIXME: Should call a generic shutdown handler!!
+ CsrDereferenceProcess(CsrProcess);
+ return CsrShutdownCsrProcess;
+ }
+
+ return CsrShutdownNonCsrProcess;
+}
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS User API Server DLL
+ * FILE: win32ss/user/winsrv/winsrv.h
+ * PURPOSE: Main header - Definitions
+ * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
+ */
+
+#ifndef __WINSRV_H__
+#define __WINSRV_H__
+
+#include <stdarg.h>
+
+/* PSDK/NDK Headers */
+
+#define WIN32_NO_STATUS
+#define _INC_WINDOWS
+#define COM_NO_WINDOWS_H
+
+#include <windef.h>
+#include <winbase.h>
+#include <wingdi.h>
+#include <winuser.h>
+/* Undocumented user definitions */
+#include <undocuser.h>
+
+#define NTOS_MODE_USER
+#include <ndk/cmfuncs.h>
+#include <ndk/obfuncs.h>
+#include <ndk/psfuncs.h>
+#include <ndk/rtlfuncs.h>
+
+/* Public Win32K Headers */
+#include <ntuser.h>
+
+/* PSEH for SEH Support */
+#include <pseh/pseh2.h>
+
+/* CSRSS Header */
+#include <csr/csrsrv.h>
+
+#endif /* __WINSRV_H__ */