sync with trunk r47227

svn path=/branches/reactos-yarotows/; revision=47228
This commit is contained in:
Jérôme Gardou 2010-05-15 22:30:01 +00:00
commit 63b50165b2
120 changed files with 2678 additions and 18856 deletions

View file

@ -472,11 +472,6 @@ rgenstat: $(RGENSTAT_TARGET)
$(ECHO_RGENSTAT) $(ECHO_RGENSTAT)
$(Q)$(RGENSTAT_TARGET) apistatus.lst apistatus.xml $(Q)$(RGENSTAT_TARGET) apistatus.lst apistatus.xml
.PHONY: cb
cb: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) cb
.PHONY: msbuild .PHONY: msbuild
msbuild: $(ROS_BUILDENGINE) msbuild: $(ROS_BUILDENGINE)
$(ECHO_RBUILD) $(ECHO_RBUILD)

View file

@ -0,0 +1,78 @@
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
IDS_HELP, "ファイルのアクセス制御リスト(ACL) を表\示または変更します。\n\n\
CACLS ファイル名 [/T] [/E] [/C] [/G ユーザー名:アクセス権]\n\
[/R ユーザー名 [...]] [/P ユーザー名:アクセス権 [...]]\n\
[/D ユーザー名 [...]]\n\
ファイル名 ACL を表\示します。\n\
/T 現在のディレクトリとすべてのサブディレクトリにある\n\
指定されたファイルの ACL を変更します。\n\
/E ACL を置き換えずに、ACL を編集します。\n\
/C アクセス拒否エラーを無視して、ACL の変更を続行します。\n\
/G ユーザー名:アクセス権\n\
指定されたユーザーにアクセス権を与えます。\n\
アクセス権: R 読み取り\n\
W 書き込み\n\
C 変更 (書き込み)\n\
F フル コントロール\n\
/R ユーザー名 指定されたユーザーのアクセス権を失効させます。\n\
(/E オプションと共に使用)。\n\
/P ユーザー名:アクセス権\n\
指定されたユーザーのアクセス権を置き換えます。\n\
アクセス権: N なし\n\
W 書き込み\n\
R 読み取り\n\
C 変更 (書き込み)\n\
F フル コントロール\n\
/D ユーザー名 指定されたユーザーのアクセスを拒否します。\n\
複数のファイルを指定するには、ワイルドカードを使用できます。\n\
複数のユーザーを指定できます。\n\n\
省略形:\n\
CI - コンテナ継承。\n\
ACE はディレクトリに継承されます。\n\
OI - オブジェクト継承。\n\
ACE はファイルに継承されます。\n\
IO - 継承のみ。\n\
ACE は現在のファイル/ディレクトリに適用されません。\n"
IDS_ABBR_CI, "(CI)"
IDS_ABBR_OI, "(OI)"
IDS_ABBR_IO, "(IO)"
IDS_ABBR_FULL, "F"
IDS_ABBR_READ, "R"
IDS_ABBR_WRITE, "W"
IDS_ABBR_CHANGE, "C"
IDS_ABBR_NONE, "N"
IDS_ALLOW, ""
IDS_DENY, "(DENY)"
IDS_SPECIAL_ACCESS, "(special access:)"
IDS_GENERIC_READ, "GENERIC_READ"
IDS_GENERIC_WRITE, "GENERIC_WRITE"
IDS_GENERIC_EXECUTE, "GENERIC_EXECUTE"
IDS_GENERIC_ALL, "GENERIC_ALL"
IDS_FILE_GENERIC_EXECUTE, "FILE_GENERIC_EXECUTE"
IDS_FILE_GENERIC_READ, "FILE_GENERIC_READ"
IDS_FILE_GENERIC_WRITE, "FILE_GENERIC_WRITE"
IDS_FILE_READ_DATA, "FILE_READ_DATA"
IDS_FILE_WRITE_DATA, "FILE_WRITE_DATA"
IDS_FILE_APPEND_DATA, "FILE_APPEND_DATA"
IDS_FILE_READ_EA, "FILE_READ_EA"
IDS_FILE_WRITE_EA, "FILE_WRITE_EA"
IDS_FILE_EXECUTE, "FILE_EXECUTE"
IDS_FILE_DELETE_CHILD, "FILE_DELETE_CHILD"
IDS_FILE_READ_ATTRIBUTES, "FILE_READ_ATTRIBUTES"
IDS_FILE_WRITE_ATTRIBUTES, "FILE_WRITE_ATTRIBUTES"
IDS_MAXIMUM_ALLOWED, "MAXIMUM_ALLOWED"
IDS_ACCESS_SYSTEM_SECURITY, "ACCESS_SYSTEM_SECURITY"
IDS_SPECIFIC_RIGHTS_ALL, "SPECIFIC_RIGHTS_ALL"
IDS_STANDARD_RIGHTS_REQUIRED, "STANDARD_RIGHTS_REQUIRED"
IDS_SYNCHRONIZE, "SYNCHRONIZE"
IDS_WRITE_OWNER, "WRITE_OWNER"
IDS_WRITE_DAC, "WRITE_DAC"
IDS_READ_CONTROL, "READ_CONTROL"
IDS_DELETE, "DELETE"
IDS_STANDARD_RIGHTS_ALL, "STANDARD_RIGHTS_ALL"
END

View file

@ -10,6 +10,7 @@
#include "lang/fr-FR.rc" #include "lang/fr-FR.rc"
#include "lang/id-ID.rc" #include "lang/id-ID.rc"
#include "lang/it-IT.rc" #include "lang/it-IT.rc"
#include "lang/ja-JP.rc"
#include "lang/ko-KR.rc" #include "lang/ko-KR.rc"
#include "lang/no-NO.rc" #include "lang/no-NO.rc"
#include "lang/nl-NL.rc" #include "lang/nl-NL.rc"

View file

@ -0,0 +1,193 @@
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
IDR_MAINMENU MENU
BEGIN
POPUP "&File"
BEGIN
MENUITEM "&Preferenze", ID_SETTINGS
MENUITEM SEPARATOR
MENUITEM "E&sci", ID_EXIT
END
POPUP "&Programmi"
BEGIN
MENUITEM "&Installa", ID_INSTALL
MENUITEM "&Disinstalla",ID_UNINSTALL
MENUITEM "&Modifica", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "&Remuovi da Registry", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "&Aggiorna", ID_REFRESH
END
POPUP "?"
BEGIN
MENUITEM "Guida", ID_HELP, GRAYED
MENUITEM "Informazioni", ID_ABOUT
END
END
IDR_LINKMENU MENU
BEGIN
POPUP "popup"
BEGIN
MENUITEM "&Apri il collegamento in un browser", ID_OPEN_LINK
MENUITEM "&Copia il collegamento negli appunti", ID_COPY_LINK
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP "popup"
BEGIN
MENUITEM "&Installa", ID_INSTALL
MENUITEM "&Disinstalla", ID_UNINSTALL
MENUITEM "&Modifica", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "&Rimuovi da Registry", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "&Aggiorna", ID_REFRESH
END
END
IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 250, 144
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Impostazioni"
FONT 8, "MS Shell Dlg"
BEGIN
GROUPBOX "Generale", -1, 4, 2, 240, 61
AUTOCHECKBOX "&Salva la posizione della finestra", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
AUTOCHECKBOX "&Aggiorna la lista dei programmi accessibili", IDC_UPDATE_AVLIST, 15, 29, 219, 12
AUTOCHECKBOX "&Registra la installazione o disinstallazione dei programmi", IDC_LOG_ENABLED, 15, 46, 219, 12
GROUPBOX "Downloading", -1, 4, 65, 240, 51
LTEXT "Cartella:", -1, 16, 75, 100, 9
EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "&Scegli", IDC_CHOOSE, 187, 85, 50, 14
AUTOCHECKBOX "&Rimuovere la procedura di installazione dopo l'uso", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12
PUSHBUTTON "Predefiniti", IDC_DEFAULT_SETTINGS, 8, 124, 60, 14
PUSHBUTTON "OK", IDOK, 116, 124, 60, 14
PUSHBUTTON "Annulla", IDCANCEL, 181, 124, 60, 14
END
IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 216, 97
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Installazione"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
AUTORADIOBUTTON "&Installa da un disco (CD o DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP
AUTORADIOBUTTON "&Scarica e installa", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP
PUSHBUTTON "OK", IDOK, 86, 78, 60, 14
PUSHBUTTON "Annulla", IDCANCEL, 150, 78, 60, 14
END
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
CAPTION "Download in corso"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12
LTEXT "", IDC_DOWNLOAD_STATUS, 10, 30, 200, 10, SS_CENTER
PUSHBUTTON "Annulla", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
END
IDD_ABOUT_DIALOG DIALOGEX 22, 16, 190, 66
STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
CAPTION "Informazioni"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Gestione applicazioni di ReactOS \nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39
PUSHBUTTON "Chiudi", IDOK, 133, 46, 50, 14
ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_TOOLTIP_INSTALL "Installa"
IDS_TOOLTIP_UNINSTALL "Disinstalla"
IDS_TOOLTIP_MODIFY "Modifica"
IDS_TOOLTIP_SETTINGS "Impostazioni"
IDS_TOOLTIP_REFRESH "Aggiorna"
IDS_TOOLTIP_EXIT "Esci"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_APP_NAME "Nome"
IDS_APP_INST_VERSION "Versione"
IDS_APP_DESCRIPTION "Descrizione"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_INFO_VERSION "\nVersione: "
IDS_INFO_DESCRIPTION "\nDescrizione: "
IDS_INFO_PUBLISHER "\nPubblicato da: "
IDS_INFO_HELPLINK "\nHelp Link: "
IDS_INFO_HELPPHONE "\nHelp Telefono: "
IDS_INFO_README "\nLeggimi: "
IDS_INFO_REGOWNER "\nProprietario registrato: "
IDS_INFO_PRODUCTID "\nID prodotto: "
IDS_INFO_CONTACT "\nContatto: "
IDS_INFO_UPDATEINFO "\nInformazioni di aggiornamento: "
IDS_INFO_INFOABOUT "\nInformazioni: "
IDS_INFO_COMMENTS "\nCommenti: "
IDS_INFO_INSTLOCATION "\nInstallato in: "
IDS_INFO_INSTALLSRC "\nProvenienza Installazione: "
IDS_INFO_UNINSTALLSTR "\nStringa di disinstallazione: "
IDS_INFO_MODIFYPATH "\nModifica percorso: "
IDS_INFO_INSTALLDATE "\nData installazione: "
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_AINFO_VERSION "\nVersione: "
IDS_AINFO_DESCRIPTION "\nDescrizione: "
IDS_AINFO_SIZE "\nDimensione: "
IDS_AINFO_URLSITE "\nHome Page: "
IDS_AINFO_LICENCE "\nLicenza: "
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_CAT_AUDIO "Audio"
IDS_CAT_DEVEL "Sviluppo"
IDS_CAT_DRIVERS "Drivers"
IDS_CAT_EDU "Edutainment"
IDS_CAT_ENGINEER "Engineering"
IDS_CAT_FINANCE "Finanza"
IDS_CAT_GAMES "Giochi e divertimento"
IDS_CAT_GRAPHICS "Graphica"
IDS_CAT_INTERNET "Internet & rete"
IDS_CAT_LIBS "Librerie"
IDS_CAT_OFFICE "Ufficio"
IDS_CAT_OTHER "Altro"
IDS_CAT_SCIENCE "Scienza"
IDS_CAT_TOOLS "Strumenti"
IDS_CAT_VIDEO "Video"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_APPTITLE "ReactOS Applications Manager"
IDS_SEARCH_TEXT "Cerca..."
IDS_INSTALL "Installa"
IDS_UNINSTALL "Disinstall"
IDS_MODIFY "Modifica"
IDS_APPS_COUNT "Numero applicazioni: %d"
IDS_WELCOME_TITLE "Benvenuto!\n\n"
IDS_WELCOME_TEXT "Scegliere una categoria a sinistra, poi scegliere una applicazione da installare o disinstallare.\nReactOS Web Site: "
IDS_WELCOME_URL "http://www.reactos.org"
IDS_INSTALLED "Installato"
IDS_AVAILABLEFORINST "Disponibile"
IDS_UPDATES "Aggiornamenti"
IDS_APPLICATIONS "Applicazioni"
IDS_CHOOSE_FOLDER_TEXT "Scegliere una cartella dove scaricare le applicazioni:"
IDS_CHOOSE_FOLDER_ERROR "La cartella indicata non esiste."
IDS_USER_NOT_ADMIN "Dovete essere Amministratore per avviare ""ReactOS Applications Manager""!"
IDS_APP_REG_REMOVE "Sicuro di voler cancellare dal registry i dati sui programmi installati?"
IDS_INFORMATION "Informazioni"
IDS_UNABLE_TO_REMOVE "Impossibile cancellare i dati dal registry!"
END

View file

@ -8,35 +8,35 @@ Description = The most popular and one of the best free Web Browsers out there.
Size = 7.2M Size = 7.2M
Category = 5 Category = 5
URLSite = http://www.mozilla.com/en-US/ URLSite = http://www.mozilla.com/en-US/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real/win32/en-US/Firefox%20Setup%203.0.19.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real-real/win32/en-US/Firefox%20Setup%203.0.19.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]
Description = Der populärste und einer der besten freien Webbrowser. Description = Der populärste und einer der besten freien Webbrowser.
Size = 7.0M Size = 7.0M
URLSite = http://www.mozilla-europe.org/de/ URLSite = http://www.mozilla-europe.org/de/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real/win32/de/Firefox%20Setup%203.0.19.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real-real/win32/de/Firefox%20Setup%203.0.19.exe
[Section.040a] [Section.040a]
Description = El más popular y uno de los mejores navegadores web gratuitos que hay. Description = El más popular y uno de los mejores navegadores web gratuitos que hay.
Size = 7.0M Size = 7.0M
URLSite = http://www.mozilla-europe.org/es/ URLSite = http://www.mozilla-europe.org/es/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real/win32/es-ES/Firefox%20Setup%203.0.19.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real-real/win32/es-ES/Firefox%20Setup%203.0.19.exe
[Section.0414] [Section.0414]
Description = Mest populære og best også gratis nettleserene der ute. Description = Mest populære og best også gratis nettleserene der ute.
Size = 7.0M Size = 7.0M
URLSite = http://www.mozilla-europe.org/no/ URLSite = http://www.mozilla-europe.org/no/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real/win32/nb-NO/Firefox%20Setup%203.0.19.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real-real/win32/nb-NO/Firefox%20Setup%203.0.19.exe
[Section.0415] [Section.0415]
Description = Najpopularniejsza i jedna z najlepszych darmowych przeglądarek internetowych. Description = Najpopularniejsza i jedna z najlepszych darmowych przeglądarek internetowych.
Size = 7.8M Size = 7.8M
URLSite = http://www.mozilla-europe.org/pl/ URLSite = http://www.mozilla-europe.org/pl/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real/win32/pl/Firefox%20Setup%203.0.19.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real-real/win32/pl/Firefox%20Setup%203.0.19.exe
[Section.0419] [Section.0419]
Description = Один из самых популярных и лучших бесплатных браузеров. Description = Один из самых популярных и лучших бесплатных браузеров.
Size = 7.4M Size = 7.4M
URLSite = http://www.mozilla-europe.org/ru/ URLSite = http://www.mozilla-europe.org/ru/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real/win32/ru/Firefox%20Setup%203.0.19.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real-real/win32/ru/Firefox%20Setup%203.0.19.exe

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = Miranda IM Name = Miranda IM
Version = 0.8.21 Version = 0.8.22
Licence = GPL Licence = GPL
Description = Open source multiprotocol instant messaging application - May not work completely. Description = Open source multiprotocol instant messaging application - May not work completely.
Size = 1.6MB Size = 1.6MB
Category = 5 Category = 5
URLSite = http://www.miranda-im.org/ URLSite = http://www.miranda-im.org/
URLDownload = http://miranda.googlecode.com/files/miranda-im-v0.8.21-unicode.exe URLDownload = http://miranda.googlecode.com/files/miranda-im-v0.8.22-unicode.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = OpenTTD Name = OpenTTD
Version = 1.0.0 Version = 1.0.1
Licence = GPL v2 Licence = GPL v2
Description = Open Source clone of the "Transport Tycoon Deluxe" game engine. You need a copy of Transport Tycoon. Description = Open Source clone of the "Transport Tycoon Deluxe" game engine. You need a copy of Transport Tycoon.
Size = 3.5MB Size = 3.5MB
Category = 4 Category = 4
URLSite = http://www.openttd.org/ URLSite = http://www.openttd.org/
URLDownload = http://binaries.openttd.org/releases/1.0.0/openttd-1.0.0-windows-win32.exe URLDownload = http://binaries.openttd.org/releases/1.0.1/openttd-1.0.1-windows-win32.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = Opera Name = Opera
Version = 10.52 Version = 10.53
Licence = Freeware Licence = Freeware
Description = The popular Opera Browser with many advanced features and including a Mail and BitTorrent client. Description = The popular Opera Browser with many advanced features and including a Mail and BitTorrent client.
Size = 12.0M Size = 12.4M
Category = 5 Category = 5
URLSite = http://www.opera.com/ URLSite = http://www.opera.com/
URLDownload = http://get4.opera.com/pub/opera/win/1052/int/Opera_1052_int_Setup.exe URLDownload = http://get4.opera.com/pub/opera/win/1053/int/Opera_1053_int_Setup.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = ScummVM Name = ScummVM
Version = 1.1.0 Version = 1.1.1
Licence = GPL Licence = GPL
Description = Sam and Max, Day of the Tentacle, etc on ReactOS. Description = Sam and Max, Day of the Tentacle, etc on ReactOS.
Size = 3.4MB Size = 3.3MB
Category = 4 Category = 4
URLSite = http://scummvm.org/ URLSite = http://scummvm.org/
URLDownload = http://dfn.dl.sourceforge.net/project/scummvm/scummvm/1.1.0/scummvm-1.1.0-win32.exe URLDownload = http://dfn.dl.sourceforge.net/project/scummvm/scummvm/1.1.1/scummvm-1.1.1-win32.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,6 +2,7 @@
#include "lang/de-DE.rc" #include "lang/de-DE.rc"
#include "lang/en-US.rc" #include "lang/en-US.rc"
#include "lang/es-ES.rc" #include "lang/es-ES.rc"
#include "lang/it-IT.rc"
#include "lang/ja-JP.rc" #include "lang/ja-JP.rc"
#include "lang/no-NO.rc" #include "lang/no-NO.rc"
#include "lang/pl-PL.rc" #include "lang/pl-PL.rc"

View file

@ -399,13 +399,13 @@ static MUI_ENTRY itITDevicePageEntries[] =
{ {
6, 6,
19, 19,
"Pu• scegliere la configurazione con i tasti SU e GIë", "Pu• scegliere un elemento della configurazione con i tasti SU e GIë",
TEXT_STYLE_NORMAL TEXT_STYLE_NORMAL
}, },
{ {
6, 6,
20, 20,
"Premere INVIO per modificare la configurazione alternativa.", "e modificarlo premendo INVIO per selezionare un valore alternativo.",
TEXT_STYLE_NORMAL TEXT_STYLE_NORMAL
}, },
{ {

View file

@ -11,6 +11,7 @@
/* INCLUDES *****************************************************************/ /* INCLUDES *****************************************************************/
#include "winlogon.h" #include "winlogon.h"
#include <shlobj.h>
#include <wine/debug.h> #include <wine/debug.h>
@ -18,18 +19,107 @@ WINE_DEFAULT_DEBUG_CHANNEL(winlogon);
/* GLOBALS ******************************************************************/ /* GLOBALS ******************************************************************/
typedef HRESULT (WINAPI *PFSHGETFOLDERPATHW)(HWND, int, HANDLE, DWORD, LPWSTR);
/* FUNCTIONS ****************************************************************/ /* FUNCTIONS ****************************************************************/
BOOL static VOID
CreateUserEnvironment(IN PWLSESSION Session, BuildVolatileEnvironment(IN PWLSESSION Session,
IN LPVOID *lpEnvironment, IN HKEY hKey)
IN LPWSTR *lpFullEnv)
{ {
HINSTANCE hShell32 = NULL;
PFSHGETFOLDERPATHW pfSHGetFolderPathW = NULL;
WCHAR szPath[MAX_PATH + 1];
WCHAR szExpandedPath[MAX_PATH + 1];
LPCWSTR wstr; LPCWSTR wstr;
SIZE_T EnvBlockSize = 0, ProfileSize = 0; SIZE_T size;
LPVOID lpEnviron = NULL; WCHAR szEnvKey[MAX_PATH];
LPWSTR lpFullEnviron = NULL; WCHAR szEnvValue[1024];
SIZE_T length;
LPWSTR eqptr, endptr;
/* Parse the environment variables and add them to the volatile environment key */
if (Session->Profile->dwType == WLX_PROFILE_TYPE_V2_0 &&
Session->Profile->pszEnvironment != NULL)
{
wstr = Session->Profile->pszEnvironment;
while (*wstr != UNICODE_NULL)
{
size = wcslen(wstr) + 1;
eqptr = wcschr(wstr, L'=');
if (eqptr != NULL)
{
endptr = eqptr;
endptr--;
while (iswspace(*endptr))
endptr--;
length = (SIZE_T)(endptr - wstr + 1);
wcsncpy(szEnvKey, wstr, length);
szEnvKey[length] = 0;
eqptr++;
while (iswspace(*eqptr))
eqptr++;
wcscpy(szEnvValue, eqptr);
RegSetValueExW(hKey,
szEnvKey,
0,
REG_SZ,
(LPBYTE)szEnvValue,
(wcslen(szEnvValue) + 1) * sizeof(WCHAR));
}
wstr += size;
}
}
/* Load shell32.dll and call SHGetFolderPathW to get the users appdata folder path */
hShell32 = LoadLibraryW(L"shell32.dll");
if (hShell32 != NULL)
{
pfSHGetFolderPathW = (PFSHGETFOLDERPATHW)GetProcAddress(hShell32,
"SHGetFolderPathW");
if (pfSHGetFolderPathW != NULL)
{
if (pfSHGetFolderPathW(NULL,
CSIDL_APPDATA | CSIDL_FLAG_DONT_VERIFY,
Session->UserToken,
0,
szPath) == S_OK)
{
/* FIXME: Expand %USERPROFILE% here. SHGetFolderPathW should do it for us. See Bug #5372.*/
TRACE("APPDATA path: %S\n", szPath);
ExpandEnvironmentStringsForUserW(Session->UserToken,
szPath,
szExpandedPath,
MAX_PATH);
/* Add the appdata folder path to the users volatile environment key */
TRACE("APPDATA expanded path: %S\n", szExpandedPath);
RegSetValueExW(hKey,
L"APPDATA",
0,
REG_SZ,
(LPBYTE)szExpandedPath,
(wcslen(szExpandedPath) + 1) * sizeof(WCHAR));
}
}
FreeLibrary(hShell32);
}
}
BOOL
CreateUserEnvironment(IN PWLSESSION Session)
{
HKEY hKey; HKEY hKey;
DWORD dwDisp; DWORD dwDisp;
LONG lError; LONG lError;
@ -37,56 +127,6 @@ CreateUserEnvironment(IN PWLSESSION Session,
TRACE("WL: CreateUserEnvironment called\n"); TRACE("WL: CreateUserEnvironment called\n");
/* Create environment block for the user */
if (!CreateEnvironmentBlock(&lpEnviron,
Session->UserToken,
TRUE))
{
WARN("WL: CreateEnvironmentBlock() failed\n");
return FALSE;
}
if (Session->Profile->dwType == WLX_PROFILE_TYPE_V2_0 && Session->Profile->pszEnvironment)
{
/* Count required size for full environment */
wstr = (LPCWSTR)lpEnviron;
while (*wstr != UNICODE_NULL)
{
SIZE_T size = wcslen(wstr) + 1;
wstr += size;
EnvBlockSize += size;
}
wstr = Session->Profile->pszEnvironment;
while (*wstr != UNICODE_NULL)
{
SIZE_T size = wcslen(wstr) + 1;
wstr += size;
ProfileSize += size;
}
/* Allocate enough memory */
lpFullEnviron = HeapAlloc(GetProcessHeap, 0, (EnvBlockSize + ProfileSize + 1) * sizeof(WCHAR));
if (!lpFullEnviron)
{
TRACE("HeapAlloc() failed\n");
return FALSE;
}
/* Fill user environment block */
CopyMemory(lpFullEnviron,
lpEnviron,
EnvBlockSize * sizeof(WCHAR));
CopyMemory(&lpFullEnviron[EnvBlockSize],
Session->Profile->pszEnvironment,
ProfileSize * sizeof(WCHAR));
lpFullEnviron[EnvBlockSize + ProfileSize] = UNICODE_NULL;
}
else
{
lpFullEnviron = (LPWSTR)lpEnviron;
}
/* Impersonate the new user */ /* Impersonate the new user */
ImpersonateLoggedOnUser(Session->UserToken); ImpersonateLoggedOnUser(Session->UserToken);
@ -107,6 +147,9 @@ CreateUserEnvironment(IN PWLSESSION Session,
&dwDisp); &dwDisp);
if (lError == ERROR_SUCCESS) if (lError == ERROR_SUCCESS)
{ {
BuildVolatileEnvironment(Session,
hKey);
RegCloseKey(hKey); RegCloseKey(hKey);
} }
else else
@ -120,9 +163,6 @@ CreateUserEnvironment(IN PWLSESSION Session,
/* Revert the impersonation */ /* Revert the impersonation */
RevertToSelf(); RevertToSelf();
*lpEnvironment = lpEnviron;
*lpFullEnv = lpFullEnviron;
TRACE("WL: CreateUserEnvironment done\n"); TRACE("WL: CreateUserEnvironment done\n");
return TRUE; return TRUE;

View file

@ -170,7 +170,6 @@ HandleLogon(
{ {
PROFILEINFOW ProfileInfo; PROFILEINFOW ProfileInfo;
LPVOID lpEnvironment = NULL; LPVOID lpEnvironment = NULL;
LPWSTR lpFullEnv = NULL;
BOOLEAN Old; BOOLEAN Old;
BOOL ret = FALSE; BOOL ret = FALSE;
@ -208,12 +207,19 @@ HandleLogon(
} }
/* Create environment block for the user */ /* Create environment block for the user */
if (!CreateUserEnvironment(Session, &lpEnvironment, &lpFullEnv)) if (!CreateUserEnvironment(Session))
{ {
WARN("WL: SetUserEnvironment() failed\n"); WARN("WL: SetUserEnvironment() failed\n");
goto cleanup; goto cleanup;
} }
/* Create environment block for the user */
if (!CreateEnvironmentBlock(&lpEnvironment, Session->UserToken, TRUE))
{
WARN("WL: CreateEnvironmentBlock() failed\n");
goto cleanup;
}
DisplayStatusMessage(Session, Session->WinlogonDesktop, IDS_APPLYINGYOURPERSONALSETTINGS); DisplayStatusMessage(Session, Session->WinlogonDesktop, IDS_APPLYINGYOURPERSONALSETTINGS);
UpdatePerUserSystemParameters(0, TRUE); UpdatePerUserSystemParameters(0, TRUE);
@ -233,7 +239,7 @@ HandleLogon(
Session->Gina.Context, Session->Gina.Context,
L"Default", L"Default",
NULL, /* FIXME */ NULL, /* FIXME */
lpFullEnv)) lpEnvironment))
{ {
//WCHAR StatusMsg[256]; //WCHAR StatusMsg[256];
WARN("WL: WlxActivateUserShell() failed\n"); WARN("WL: WlxActivateUserShell() failed\n");
@ -260,8 +266,6 @@ cleanup:
{ {
UnloadUserProfile(WLSession->UserToken, ProfileInfo.hProfile); UnloadUserProfile(WLSession->UserToken, ProfileInfo.hProfile);
} }
if (lpFullEnv != lpEnvironment)
HeapFree(GetProcessHeap(), 0, lpFullEnv);
if (lpEnvironment) if (lpEnvironment)
DestroyEnvironmentBlock(lpEnvironment); DestroyEnvironmentBlock(lpEnvironment);
RemoveStatusMessage(Session); RemoveStatusMessage(Session);

View file

@ -182,9 +182,7 @@ UpdatePerUserSystemParameters(DWORD dwUnknown,
/* environment.c */ /* environment.c */
BOOL BOOL
CreateUserEnvironment(IN PWLSESSION Session, CreateUserEnvironment(IN PWLSESSION Session);
IN LPVOID *lpEnvironment,
IN LPWSTR *lpFullEnv);
/* sas.c */ /* sas.c */
BOOL BOOL

View file

@ -817,3 +817,7 @@ modules\rostests\winetests\xmllite\xmllite_winetest.exe 7 o
modules\wallpaper\Angelus_02_ROSWP.bmp 4 optional modules\wallpaper\Angelus_02_ROSWP.bmp 4 optional
modules\drivers\video\cirrus\cirrus.inf 6 optional
modules\drivers\video\cirrus\cirrus.dll 1 optional
modules\drivers\video\cirrus\cirrus.sys 2 optional

View file

@ -161,6 +161,7 @@ static LONG IsoLookupFile(PCSTR FileName, ULONG DeviceId, PISO_FILE_INFO IsoFile
DPRINTM(DPRINT_FILESYSTEM, "IsoLookupFile() FileName = %s\n", FileName); DPRINTM(DPRINT_FILESYSTEM, "IsoLookupFile() FileName = %s\n", FileName);
RtlZeroMemory(IsoFileInfoPointer, sizeof(ISO_FILE_INFO)); RtlZeroMemory(IsoFileInfoPointer, sizeof(ISO_FILE_INFO));
RtlZeroMemory(&IsoFileInfo, sizeof(ISO_FILE_INFO));
// //
// Read The Primary Volume Descriptor // Read The Primary Volume Descriptor

View file

@ -5,13 +5,15 @@
<library>freeldr_startup</library> <library>freeldr_startup</library>
<library>freeldr_base64k</library> <library>freeldr_base64k</library>
<library>freeldr_base</library> <library>freeldr_base</library>
<if property="ARCH" value="i386">
<library>mini_hal</library>
</if>
<library>freeldr_arch</library> <library>freeldr_arch</library>
<library>setupldr_main</library> <library>setupldr_main</library>
<library>rossym</library> <library>rossym</library>
<library>cmlib</library> <library>cmlib</library>
<library>rtl</library> <library>rtl</library>
<library>libcntpr</library> <library>libcntpr</library>
<library>mini_hal</library>
<group linkerset="ld"> <group linkerset="ld">
<linkerflag>-nostartfiles</linkerflag> <linkerflag>-nostartfiles</linkerflag>
<linkerflag>-nostdlib</linkerflag> <linkerflag>-nostdlib</linkerflag>

View file

@ -1,6 +1,6 @@
/* FILE: dll/cpl/appwiz/lang/cs-CZ.rc /* FILE: dll/cpl/appwiz/lang/cs-CZ.rc
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com) * TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
* UPDATED: 2008-07-27 * UPDATED: 2010-03-14
*/ */
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
@ -48,7 +48,7 @@ END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_CPLSYSTEMNAME "Pøidat/Odebrat programy" IDS_CPLSYSTEMNAME "Pøidat a odebrat programy"
IDS_CPLSYSTEMDESCRIPTION "Nastavuje programy a vytváøí zástupce." IDS_CPLSYSTEMDESCRIPTION "Nastavuje programy a vytváøí zástupce."
IDS_CREATE_SHORTCUT "Vytvoøit zástupce" IDS_CREATE_SHORTCUT "Vytvoøit zástupce"
IDS_ERROR_NOT_FOUND "Soubor %s nebyl nalezen." IDS_ERROR_NOT_FOUND "Soubor %s nebyl nalezen."

View file

@ -231,6 +231,7 @@ ColorsProc(
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE); InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE); InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE);
pConInfo->ActiveStaticControl = index; pConInfo->ActiveStaticControl = index;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break; break;
} }
} }

View file

@ -294,6 +294,52 @@ LayoutProc(
{ {
switch(LOWORD(wParam)) switch(LOWORD(wParam))
{ {
case IDC_EDIT_SCREEN_BUFFER_WIDTH:
case IDC_EDIT_SCREEN_BUFFER_HEIGHT:
case IDC_EDIT_WINDOW_SIZE_WIDTH:
case IDC_UPDOWN_WINDOW_SIZE_HEIGHT:
case IDC_EDIT_WINDOW_POS_LEFT:
case IDC_EDIT_WINDOW_POS_TOP:
{
if (HIWORD(wParam) == EN_KILLFOCUS)
{
DWORD wheight, wwidth;
DWORD sheight, swidth;
DWORD left, top;
wwidth = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_WIDTH, NULL, FALSE);
wheight = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_HEIGHT, NULL, FALSE);
swidth = GetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_WIDTH, NULL, FALSE);
sheight = GetDlgItemInt(hwndDlg, IDC_EDIT_SCREEN_BUFFER_HEIGHT, NULL, FALSE);
left = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_LEFT, NULL, FALSE);
top = GetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_POS_TOP, NULL, FALSE);
swidth = max(swidth, 1);
sheight = max(sheight, 1);
/* automatically adjust window size when screen buffer decreases */
if (wwidth > swidth)
{
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_WIDTH, swidth, TRUE);
wwidth = swidth;
}
if (wheight > sheight)
{
SetDlgItemInt(hwndDlg, IDC_EDIT_WINDOW_SIZE_HEIGHT, sheight, TRUE);
wheight = sheight;
}
pConInfo->ScreenBuffer = MAKELONG(swidth, sheight);
pConInfo->WindowSize = MAKELONG(wwidth, wheight);
pConInfo->WindowPosition = MAKELONG(left, top);
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
}
case IDC_CHECK_SYSTEM_POS_WINDOW: case IDC_CHECK_SYSTEM_POS_WINDOW:
{ {
LONG res = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0); LONG res = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0);

View file

@ -5,6 +5,7 @@
* PURPOSE: input.dll * PURPOSE: input.dll
* PROGRAMMER: Dmitry Chapyshev (dmitry@reactos.org) * PROGRAMMER: Dmitry Chapyshev (dmitry@reactos.org)
* Colin Finck * Colin Finck
* Gregor Schneider
* UPDATE HISTORY: * UPDATE HISTORY:
* 06-09-2007 Created * 06-09-2007 Created
*/ */
@ -376,6 +377,59 @@ UpdateLayoutsList(VOID)
(VOID) ListView_SetImageList(GetDlgItem(MainDlgWnd, IDC_KEYLAYOUT_LIST), hImgList, LVSIL_SMALL); (VOID) ListView_SetImageList(GetDlgItem(MainDlgWnd, IDC_KEYLAYOUT_LIST), hImgList, LVSIL_SMALL);
} }
typedef struct _REG_KB_ENTRY_
{
TCHAR szLayoutID[3];
DWORD dwType;
TCHAR szData[CCH_LAYOUT_ID + 1];
DWORD dwDataSize;
} REG_KB_ENTRY;
/* Layouts were deleted so we have to order the existing ones */
static VOID
UpdateRegValueNames(HKEY hKey)
{
DWORD dwIndex = 0, dwGot = 0, dwLayoutSize;
DWORD dwSets = 5;
REG_KB_ENTRY* data = HeapAlloc(GetProcessHeap(), 0, dwSets * sizeof(REG_KB_ENTRY));
/* Get all existing entries and delete them */
dwLayoutSize = sizeof(data[0].szLayoutID);
while (RegEnumValue(hKey,
dwIndex,
data[dwGot].szLayoutID,
&dwLayoutSize,
NULL,
&data[dwGot].dwType,
(PBYTE)data[dwGot].szData,
&data[dwGot].dwDataSize) != ERROR_NO_MORE_ITEMS)
{
if (_tcslen(data[dwGot].szLayoutID) <= 2 && _tcslen(data[dwGot].szData) == CCH_LAYOUT_ID)
{
RegDeleteValue(hKey, data[dwGot].szLayoutID);
dwGot++;
if (dwGot == dwSets)
{
dwSets += 5;
data = HeapReAlloc(GetProcessHeap(), 0, data, dwSets * sizeof(REG_KB_ENTRY));
}
}
dwIndex++;
dwLayoutSize = sizeof(data[0].szLayoutID);
}
/* Set all entries with an updated value name */
for (dwIndex = 0; dwIndex < dwGot; dwIndex++)
{
TCHAR szNewLayoutID[3];
_stprintf(szNewLayoutID, TEXT("%u"), dwIndex + 1);
RegSetValueEx(hKey, szNewLayoutID, 0, data[dwIndex].dwType,
(PBYTE)data[dwIndex].szData, data[dwIndex].dwDataSize);
}
HeapFree(GetProcessHeap(), 0, data);
}
static VOID static VOID
DeleteLayout(VOID) DeleteLayout(VOID)
{ {
@ -430,6 +484,7 @@ DeleteLayout(VOID)
if (RegDeleteValue(hKey, szLayoutNum) == ERROR_SUCCESS) if (RegDeleteValue(hKey, szLayoutNum) == ERROR_SUCCESS)
{ {
UpdateLayoutsList(); UpdateLayoutsList();
UpdateRegValueNames(hKey);
} }
} }
RegCloseKey(hKey); RegCloseKey(hKey);

View file

@ -1,6 +1,6 @@
/* FILE: dll/cpl/sysdm/lang/cs-CZ.rc /* FILE: dll/cpl/sysdm/lang/cs-CZ.rc
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com) * TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
* UPDATED: 2009-01-25 * UPDATED: 2010-03-04
*/ */
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
@ -48,17 +48,6 @@ BEGIN
PUSHBUTTON "Hard&warové profily...", IDC_HARDWARE_PROFILE, 154, 190, 90, 15 PUSHBUTTON "Hard&warové profily...", IDC_HARDWARE_PROFILE, 154, 190, 90, 15
END END
IDD_SYSSETTINGS DIALOGEX 0, 0, 221, 106
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION
CAPTION "System Settings"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
GROUPBOX "Version Info",IDC_STATIC,6,3,210,73
CONTROL "Report as Workstation",IDC_REPORTASWORKSTATION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,57,88,10
LTEXT "ReactOS is built as a server OS and reports as such. Check this box to change this for applications only.",IDC_STATIC,15,15,183,41
PUSHBUTTON "OK",IDOK,166,83,50,14
END
IDD_PROPPAGEADVANCED DIALOGEX 0, 0, 256, 218 IDD_PROPPAGEADVANCED DIALOGEX 0, 0, 256, 218
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
@ -78,10 +67,22 @@ BEGIN
LTEXT "Možnosti spuštìní a zotavení øíkají poèítaèi, jak se spustit a co dìlat, jestliže jej chyba donutí zastavit.", IDC_STATIC, 16, 144, 228, 19 LTEXT "Možnosti spuštìní a zotavení øíkají poèítaèi, jak se spustit a co dìlat, jestliže jej chyba donutí zastavit.", IDC_STATIC, 16, 144, 228, 19
PUSHBUTTON "Nastavení", IDC_STAREC, 194, 162, 50, 15 PUSHBUTTON "Nastavení", IDC_STAREC, 194, 162, 50, 15
PUSHBUTTON "Nastavení systému", IDC_SYSSETTINGS, 2, 192, 80, 15
PUSHBUTTON "Promìnné prostøedí", IDC_ENVVAR, 84, 192, 80, 15 PUSHBUTTON "Promìnné prostøedí", IDC_ENVVAR, 84, 192, 80, 15
PUSHBUTTON "Hlášení chyb", IDC_ERRORREPORT, 170, 192, 80, 15 PUSHBUTTON "Hlášení chyb", IDC_ERRORREPORT, 170, 192, 80, 15
END END
IDD_SYSSETTINGS DIALOGEX 0, 0, 221, 106
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION
CAPTION "Nastavení systému"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
GROUPBOX "Informace o verzi",IDC_STATIC,6,3,210,73
CONTROL "Hlásit se jako pracovní stanice",IDC_REPORTASWORKSTATION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,57,88,10
LTEXT "ReactOS je vytvořen jako serverový OS a jako takový se i hlásí. Po zaškrtnutí tohoto políčka se pro aplikace toto chování změní.",IDC_STATIC,15,15,183,41
PUSHBUTTON "OK",IDOK,166,83,50,14
END
IDD_HARDWAREPROFILES DIALOGEX 6, 18, 254, 234 IDD_HARDWAREPROFILES DIALOGEX 6, 18, 254, 234
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU

View file

@ -43,16 +43,6 @@ BEGIN
PUSHBUTTON "&Profili Hardware...", IDC_HARDWARE_PROFILE, 154, 190, 90, 14 PUSHBUTTON "&Profili Hardware...", IDC_HARDWARE_PROFILE, 154, 190, 90, 14
END END
IDD_SYSSETTINGS DIALOGEX 0, 0, 221, 106
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION
CAPTION "System Settings"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
GROUPBOX "Version Info",IDC_STATIC,6,3,210,73
CONTROL "Report as Workstation",IDC_REPORTASWORKSTATION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,57,88,10
LTEXT "ReactOS is built as a server OS and reports as such. Check this box to change this for applications only.",IDC_STATIC,15,15,183,41
PUSHBUTTON "OK",IDOK,166,83,50,14
END
IDD_PROPPAGEADVANCED DIALOGEX 0, 0, 256, 218 IDD_PROPPAGEADVANCED DIALOGEX 0, 0, 256, 218
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
@ -72,10 +62,22 @@ BEGIN
LTEXT "Le opzioni di Avvio e recupero informano il computer su come partire e cosa fare nel caso che un errore fermi il computer.", IDC_STATIC, 16, 144, 210, 19 LTEXT "Le opzioni di Avvio e recupero informano il computer su come partire e cosa fare nel caso che un errore fermi il computer.", IDC_STATIC, 16, 144, 210, 19
PUSHBUTTON "Impostazioni", IDC_STAREC, 194, 162, 50, 14 PUSHBUTTON "Impostazioni", IDC_STAREC, 194, 162, 50, 14
PUSHBUTTON "Impostazioni di sistema", IDC_SYSSETTINGS, 2, 192, 80, 15
PUSHBUTTON "Variabili di ambiente", IDC_ENVVAR, 84, 192, 80, 14 PUSHBUTTON "Variabili di ambiente", IDC_ENVVAR, 84, 192, 80, 14
PUSHBUTTON "Registrazione errori", IDC_ERRORREPORT, 170, 192, 80, 14 PUSHBUTTON "Registrazione errori", IDC_ERRORREPORT, 170, 192, 80, 14
END END
IDD_SYSSETTINGS DIALOGEX 0, 0, 221, 106
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION
CAPTION "System Settings"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
GROUPBOX "Informazioni sulla versione",IDC_STATIC,6,3,210,73
CONTROL "Notifica come Workstation",IDC_REPORTASWORKSTATION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,57,88,10
LTEXT "ReactOS è compilato come server ed è notificato come tale. Non per questa applicazione.",IDC_STATIC,15,15,183,41
PUSHBUTTON "OK",IDOK,166,83,50,14
END
IDD_HARDWAREPROFILES DIALOGEX 6, 18, 254, 234 IDD_HARDWAREPROFILES DIALOGEX 6, 18, 254, 234
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
@ -159,7 +161,7 @@ BEGIN
EDITTEXT IDC_STRRECRECEDIT, 179, 68, 30, 12, ES_NUMBER EDITTEXT IDC_STRRECRECEDIT, 179, 68, 30, 12, ES_NUMBER
CONTROL "", IDC_STRRECRECUPDWN, "msctls_updown32", UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_CHILD | WS_VISIBLE, 0, 0, 8, 13 CONTROL "", IDC_STRRECRECUPDWN, "msctls_updown32", UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_CHILD | WS_VISIBLE, 0, 0, 8, 13
LTEXT "secondi", IDC_STATIC, 215, 70, 25, 8 LTEXT "secondi", IDC_STATIC, 215, 70, 25, 8
LTEXT "Per modificare le opzioni di avvio manualmenta , clicca Modifica.", IDC_STATIC, 14, 89, 187, 8 LTEXT "Per modificare le opzioni di avvio manualmente, clicca Modifica.", IDC_STATIC, 14, 89, 187, 8
PUSHBUTTON "&Modifica", IDC_STRRECEDIT, 188, 87, 50, 14 PUSHBUTTON "&Modifica", IDC_STRRECEDIT, 188, 87, 50, 14
GROUPBOX "Blocco del sistema", IDC_STATIC, 7, 111, 238, 140 GROUPBOX "Blocco del sistema", IDC_STATIC, 7, 111, 238, 140
@ -282,4 +284,5 @@ BEGIN
IDS_USERPROFILE_TYPE "Tipo" IDS_USERPROFILE_TYPE "Tipo"
IDS_USERPROFILE_STATUS "Stato" IDS_USERPROFILE_STATUS "Stato"
IDS_USERPROFILE_MODIFIED "Modificato" IDS_USERPROFILE_MODIFIED "Modificato"
IDS_DEVS "\nReactOS Team\n\nCoordinatore\n\nAleksey Bragin\n\nGruppo di sviluppo\n\nAleksey Bragin\nAndrew Greenwood\nAndrey Korotaev\nArt Yerkes\nChristoph von Wittich\nColin Finck\nDaniel Reimer\nDmitry Chapyshev\nEric Kohl\nGed Murphy\nGregor Brunmar\nHervé Poussineau\nJames Tabor\nJeffrey Morlan\nJohannes Anderwald\nKJK::Hyperion\nMaarten Bosma\nMagnus Olsen\nMarc Piulachs\nMatthias Kupfer\nMike Nordell\nPeter Ward\nPierre Schweitzer\nSaveliy Tretiakov\nStefan Ginsberg\nSylvain Petreolle\nThomas Blümel\nTimo Kreuzer \n\nAlex Ionescu\nFilip Navara\nGunnar Dalsnes\nMartin Fuchs\nRoyce Mitchell III\nBrandon Turner\nBrian Palmer\nCasper Hornstrup\nDavid Welch\nEmanuele Aliberti\nGé van Geldorp\nGregor Anich\nJason Filby\nJens Collin\nMichael Wirth\nNathan Woods\nRobert Dickenson\nRex Jolliff\nVizzini \n\nRelease Engineers\n\nColin Finck\nZ98\n\nWebsite Team\n\nColin Finck\nJaix Bly\nKlemens Friedl\nZ98\n\nMedia Team\n\nMindflyer\nWierd_W\n\nUlteriori ringraziamenti\n\na tutti i Contributers\nWine Team\n\n"
END END

View file

@ -234,10 +234,10 @@ GroupNew(HWND hwndDlg)
} }
if (group.lgrpi1_name) if (group.lgrpi1_name)
HeapFree(GetProcessHeap, 0, group.lgrpi1_name); HeapFree(GetProcessHeap(), 0, group.lgrpi1_name);
if (group.lgrpi1_comment) if (group.lgrpi1_comment)
HeapFree(GetProcessHeap, 0, group.lgrpi1_comment); HeapFree(GetProcessHeap(), 0, group.lgrpi1_comment);
} }

View file

@ -294,16 +294,16 @@ UserNew(HWND hwndDlg)
} }
if (user.usri3_name) if (user.usri3_name)
HeapFree(GetProcessHeap, 0, user.usri3_name); HeapFree(GetProcessHeap(), 0, user.usri3_name);
if (user.usri3_full_name) if (user.usri3_full_name)
HeapFree(GetProcessHeap, 0, user.usri3_full_name); HeapFree(GetProcessHeap(), 0, user.usri3_full_name);
if (user.usri3_comment) if (user.usri3_comment)
HeapFree(GetProcessHeap, 0, user.usri3_comment); HeapFree(GetProcessHeap(), 0, user.usri3_comment);
if (user.usri3_password) if (user.usri3_password)
HeapFree(GetProcessHeap, 0, user.usri3_password); HeapFree(GetProcessHeap(), 0, user.usri3_password);
} }

View file

@ -4841,15 +4841,7 @@ RegSetValueExW(HKEY hKey,
return RtlNtStatusToDosError(Status); return RtlNtStatusToDosError(Status);
} }
if (lpValueName != NULL) RtlInitUnicodeString(&ValueName, lpValueName);
{
RtlInitUnicodeString(&ValueName,
lpValueName);
}
else
{
RtlInitUnicodeString(&ValueName, L"");
}
pValueName = &ValueName; pValueName = &ValueName;
if (is_string(dwType) && (cbData != 0)) if (is_string(dwType) && (cbData != 0))

View file

@ -166,6 +166,10 @@ SetPixelFormat(HDC hdc,
INT iPixelFormat, INT iPixelFormat,
CONST PIXELFORMATDESCRIPTOR * ppfd) CONST PIXELFORMATDESCRIPTOR * ppfd)
{ {
/* Can only be set once */
INT current = GetPixelFormat(hdc);
if(current) return current == iPixelFormat ;
if (glSetPixelFormat == NULL) if (glSetPixelFormat == NULL)
if (OpenGLEnable() == FALSE) if (OpenGLEnable() == FALSE)
return(0); return(0);

View file

@ -2301,17 +2301,196 @@ PIP_ADAPTER_ORDER_MAP WINAPI GetAdapterOrderMap(VOID)
} }
/* /*
* @unimplemented * @implemented
*/ */
DWORD WINAPI GetAdaptersAddresses(ULONG Family,ULONG Flags,PVOID Reserved,PIP_ADAPTER_ADDRESSES pAdapterAddresses,PULONG pOutBufLen) DWORD WINAPI GetAdaptersAddresses(ULONG Family,ULONG Flags,PVOID Reserved,PIP_ADAPTER_ADDRESSES pAdapterAddresses,PULONG pOutBufLen)
{ {
InterfaceIndexTable *indexTable;
IFInfo ifInfo;
int i;
ULONG ret, requiredSize = 0;
PIP_ADAPTER_ADDRESSES currentAddress;
PUCHAR currentLocation;
HANDLE tcpFile;
if (!pOutBufLen) return ERROR_INVALID_PARAMETER; if (!pOutBufLen) return ERROR_INVALID_PARAMETER;
if (!pAdapterAddresses || *pOutBufLen == 0)
return ERROR_BUFFER_OVERFLOW;
if (Reserved) return ERROR_INVALID_PARAMETER; if (Reserved) return ERROR_INVALID_PARAMETER;
FIXME(":stub\n"); indexTable = getNonLoopbackInterfaceIndexTable(); //I think we want non-loopback here
return ERROR_NO_DATA; if (!indexTable)
return ERROR_NOT_ENOUGH_MEMORY;
ret = openTcpFile(&tcpFile);
if (!NT_SUCCESS(ret))
return ERROR_NO_DATA;
for (i = indexTable->numIndexes; i >= 0; i--)
{
if (NT_SUCCESS(getIPAddrEntryForIf(tcpFile,
NULL,
indexTable->indexes[i],
&ifInfo)))
{
/* The whole struct */
requiredSize += sizeof(IP_ADAPTER_ADDRESSES);
/* Friendly name */
if (!(Flags & GAA_FLAG_SKIP_FRIENDLY_NAME))
requiredSize += strlen((char *)ifInfo.if_info.ent.if_descr) + 1; //FIXME
/* Adapter name */
requiredSize += strlen((char *)ifInfo.if_info.ent.if_descr) + 1;
/* Unicast address */
if (!(Flags & GAA_FLAG_SKIP_UNICAST))
requiredSize += sizeof(IP_ADAPTER_UNICAST_ADDRESS);
/* FIXME: Implement multicast, anycast, and dns server stuff */
/* FIXME: Implement dns suffix and description */
requiredSize += 2 * sizeof(WCHAR);
/* We're only going to implement what's required for XP SP0 */
}
}
if (*pOutBufLen < requiredSize)
{
*pOutBufLen = requiredSize;
closeTcpFile(tcpFile);
free(indexTable);
return ERROR_BUFFER_OVERFLOW;
}
RtlZeroMemory(pAdapterAddresses, requiredSize);
/* Let's set up the pointers */
currentAddress = pAdapterAddresses;
for (i = indexTable->numIndexes; i >= 0; i--)
{
if (NT_SUCCESS(getIPAddrEntryForIf(tcpFile,
NULL,
indexTable->indexes[i],
&ifInfo)))
{
currentLocation = (PUCHAR)currentAddress + (ULONG_PTR)sizeof(IP_ADAPTER_ADDRESSES);
/* FIXME: Friendly name */
if (!(Flags & GAA_FLAG_SKIP_FRIENDLY_NAME))
{
currentAddress->FriendlyName = (PVOID)currentLocation;
currentLocation += sizeof(WCHAR);
}
/* Adapter name */
currentAddress->AdapterName = (PVOID)currentLocation;
currentLocation += strlen((char *)ifInfo.if_info.ent.if_descr) + 1;
/* Unicast address */
if (!(Flags & GAA_FLAG_SKIP_UNICAST))
{
currentAddress->FirstUnicastAddress = (PVOID)currentLocation;
currentLocation += sizeof(IP_ADAPTER_UNICAST_ADDRESS);
currentAddress->FirstUnicastAddress->Address.lpSockaddr = (PVOID)currentLocation;
currentLocation += sizeof(struct sockaddr);
}
/* FIXME: Implement multicast, anycast, and dns server stuff */
/* FIXME: Implement dns suffix and description */
currentAddress->DnsSuffix = (PVOID)currentLocation;
currentLocation += sizeof(WCHAR);
currentAddress->Description = (PVOID)currentLocation;
currentLocation += sizeof(WCHAR);
currentAddress->Next = (PVOID)currentLocation;
/* We're only going to implement what's required for XP SP0 */
currentAddress = currentAddress->Next;
}
}
/* Terminate the last address correctly */
if (currentAddress)
currentAddress->Next = NULL;
/* Now again, for real this time */
currentAddress = pAdapterAddresses;
for (i = indexTable->numIndexes; i >= 0; i--)
{
if (NT_SUCCESS(getIPAddrEntryForIf(tcpFile,
NULL,
indexTable->indexes[i],
&ifInfo)))
{
/* Make sure we're not looping more than we hoped for */
ASSERT(currentAddress);
/* Alignment information */
currentAddress->Length = sizeof(IP_ADAPTER_ADDRESSES);
currentAddress->IfIndex = indexTable->indexes[i];
/* Adapter name */
strcpy(currentAddress->AdapterName, (char *)ifInfo.if_info.ent.if_descr);
if (!(Flags & GAA_FLAG_SKIP_UNICAST))
{
currentAddress->FirstUnicastAddress->Length = sizeof(IP_ADAPTER_UNICAST_ADDRESS);
currentAddress->FirstUnicastAddress->Flags = 0; //FIXME
currentAddress->FirstUnicastAddress->Next = NULL; //FIXME: Support more than one address per adapter
currentAddress->FirstUnicastAddress->Address.lpSockaddr->sa_family = AF_INET;
memcpy(currentAddress->FirstUnicastAddress->Address.lpSockaddr->sa_data,
&ifInfo.ip_addr.iae_addr,
sizeof(ifInfo.ip_addr.iae_addr));
currentAddress->FirstUnicastAddress->Address.iSockaddrLength = sizeof(ifInfo.ip_addr.iae_addr) + sizeof(USHORT);
currentAddress->FirstUnicastAddress->PrefixOrigin = IpPrefixOriginOther; //FIXME
currentAddress->FirstUnicastAddress->SuffixOrigin = IpPrefixOriginOther; //FIXME
currentAddress->FirstUnicastAddress->DadState = IpDadStatePreferred; //FIXME
currentAddress->FirstUnicastAddress->ValidLifetime = 0xFFFFFFFF; //FIXME
currentAddress->FirstUnicastAddress->PreferredLifetime = 0xFFFFFFFF; //FIXME
currentAddress->FirstUnicastAddress->LeaseLifetime = 0xFFFFFFFF; //FIXME
}
/* FIXME: Implement multicast, anycast, and dns server stuff */
currentAddress->FirstAnycastAddress = NULL;
currentAddress->FirstMulticastAddress = NULL;
currentAddress->FirstDnsServerAddress = NULL;
/* FIXME: Implement dns suffix, description, and friendly name */
currentAddress->DnsSuffix[0] = UNICODE_NULL;
currentAddress->Description[0] = UNICODE_NULL;
currentAddress->FriendlyName[0] = UNICODE_NULL;
/* Physical Address */
memcpy(currentAddress->PhysicalAddress, ifInfo.if_info.ent.if_physaddr, ifInfo.if_info.ent.if_physaddrlen);
currentAddress->PhysicalAddressLength = ifInfo.if_info.ent.if_physaddrlen;
/* Flags */
currentAddress->Flags = 0; //FIXME
/* MTU */
currentAddress->Mtu = ifInfo.if_info.ent.if_mtu;
/* Interface type */
currentAddress->IfType = ifInfo.if_info.ent.if_type;
/* Operational status */
currentAddress->OperStatus = ifInfo.if_info.ent.if_operstatus;
/* We're only going to implement what's required for XP SP0 */
/* Move to the next address */
currentAddress = currentAddress->Next;
}
}
closeTcpFile(tcpFile);
free(indexTable);
return NO_ERROR;
} }
/* /*

View file

@ -60,6 +60,15 @@
#define TCP_REQUEST_QUERY_INFORMATION_INIT { { { 0 } } } #define TCP_REQUEST_QUERY_INFORMATION_INIT { { { 0 } } }
#define TCP_REQUEST_SET_INFORMATION_INIT { { 0 } } #define TCP_REQUEST_SET_INFORMATION_INIT { { 0 } }
/* FIXME: ROS headers suck */
#ifndef GAA_FLAG_SKIP_UNICAST
#define GAA_FLAG_SKIP_UNICAST 0x0001
#endif
#ifndef GAA_FLAG_SKIP_FRIENDLY_NAME
#define GAA_FLAG_SKIP_FRIENDLY_NAME 0x0020
#endif
// As in the mib from RFC 1213 // As in the mib from RFC 1213
typedef struct _IPRouteEntry { typedef struct _IPRouteEntry {
@ -138,6 +147,10 @@ typedef VOID (*EnumNameServersFunc)( PWCHAR Interface,
PWCHAR NameServer, PWCHAR NameServer,
PVOID Data ); PVOID Data );
void EnumNameServers( HANDLE RegHandle, PWCHAR Interface, PVOID Data, EnumNameServersFunc cb ); void EnumNameServers( HANDLE RegHandle, PWCHAR Interface, PVOID Data, EnumNameServersFunc cb );
NTSTATUS getIPAddrEntryForIf(HANDLE tcpFile,
char *name,
DWORD index,
IFInfo *ifInfo);
#include <w32api.h> #include <w32api.h>
/* This is here until we switch to version 2.5 of the mingw headers */ /* This is here until we switch to version 2.5 of the mingw headers */

File diff suppressed because it is too large Load diff

View file

@ -101,7 +101,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_INVALID_BLOCK SymbolicName=ERROR_INVALID_BLOCK
Language=German Language=German
ERROR_INVALID_BLOCK - Die Speicherkontrolladdresse ist ungültig. ERROR_INVALID_BLOCK - Die Speicherkontrolladresse ist ungültig.
. .
MessageId=10 MessageId=10
@ -885,7 +885,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_SUBST_TO_SUBST SymbolicName=ERROR_SUBST_TO_SUBST
Language=German Language=German
ERROR_SUBST_TO_SUBST -Das System versuchte ein Verzeichnis zu einem Laufwerk auf einen gesubsteten Laufwerk zu substen. ERROR_SUBST_TO_SUBST - Das System versuchte ein Verzeichnis zu einem Laufwerk auf einen gesubsteten Laufwerk zu substen.
. .
MessageId=140 MessageId=140
@ -965,7 +965,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_IS_SUBST_TARGET SymbolicName=ERROR_IS_SUBST_TARGET
Language=German Language=German
ERROR_IS_SUBST_TARGET - Es wurde versucht, von einem Laufwerk zu substen oder zu joinen das schon gesubst ist. ERROR_IS_SUBST_TARGET - Es wurde versucht, von einem Laufwerk zu substen oder zu joinen, das schon gesubst ist.
. .
MessageId=150 MessageId=150
@ -1093,7 +1093,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_BUSY SymbolicName=ERROR_BUSY
Language=German Language=German
ERROR_BUSY - Die angeforderte Ressource wird beutzt. ERROR_BUSY - Die angeforderte Ressource wird benutzt.
. .
MessageId=173 MessageId=173
@ -1109,7 +1109,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_ATOMIC_LOCKS_NOT_SUPPORTED SymbolicName=ERROR_ATOMIC_LOCKS_NOT_SUPPORTED
Language=German Language=German
ERROR_ATOMIC_LOCKS_NOT_SUPPORTED - Das Dateisysten unterstützt keine ununterbrechbaren Sperrungen. ERROR_ATOMIC_LOCKS_NOT_SUPPORTED - Das Dateisysten unterstützt keine nicht unterbrechbaren Sperren.
. .
MessageId=180 MessageId=180
@ -1229,7 +1229,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_IOPL_NOT_ENABLED SymbolicName=ERROR_IOPL_NOT_ENABLED
Language=German Language=German
ERROR_IOPL_NOT_ENABLED - Das Betriebssystem ist zur Zeit nicht konfiguiert, um dieses Programm auszuführen. ERROR_IOPL_NOT_ENABLED - Das Betriebssystem ist zur Zeit nicht konfiguriert, um dieses Programm auszuführen.
. .
MessageId=198 MessageId=198
@ -1277,7 +1277,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_ENVVAR_NOT_FOUND SymbolicName=ERROR_ENVVAR_NOT_FOUND
Language=German Language=German
ERROR_ENVVAR_NOT_FOUND - Das System konnte die Umgebungs-Option, die eingegeben wurde, nicht finden. ERROR_ENVVAR_NOT_FOUND - Das System konnte die Umgebungsvariable, die eingegeben wurde, nicht finden.
. .
MessageId=205 MessageId=205
@ -1309,7 +1309,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_META_EXPANSION_TOO_LONG SymbolicName=ERROR_META_EXPANSION_TOO_LONG
Language=German Language=German
ERROR_META_EXPANSION_TOO_LONG - Es wurden zu viele Platzhalter, wie ? oder *, eingegeben. ERROR_META_EXPANSION_TOO_LONG - Es wurden zu viele Platzhalter wie ? oder * eingegeben.
. .
MessageId=209 MessageId=209
@ -1341,7 +1341,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_TOO_MANY_MODULES SymbolicName=ERROR_TOO_MANY_MODULES
Language=German Language=German
ERROR_TOO_MANY_MODULES - Es werden zu viele DLLs von diesem Programm oder DLL benutzt. ERROR_TOO_MANY_MODULES - Es werden zu viele DLLs von diesem Programm oder dieser DLL benutzt.
. .
MessageId=215 MessageId=215
@ -1653,7 +1653,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_TIMER_NOT_CANCELED SymbolicName=ERROR_TIMER_NOT_CANCELED
Language=German Language=German
ERROR_TIMER_NOT_CANCELED - Es wurde der Versuch gemacht, einen Timer zu setzen oder zu löschen, der nicht dem Aufrufer gehört. ERROR_TIMER_NOT_CANCELED - Es wurde der Versuch unternommen, einen Timer zu setzen oder zu löschen, der nicht dem Aufrufer gehört.
. .
MessageId=542 MessageId=542
@ -1717,7 +1717,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_INSTRUCTION_MISALIGNMENT SymbolicName=ERROR_INSTRUCTION_MISALIGNMENT
Language=German Language=German
ERROR_INSTRUCTION_MISALIGNMENT - Es wurde versucht, einen Befehl an einer nicht angeschlossenen Adresse auzuführen, was dieses System nicht unterstützt. ERROR_INSTRUCTION_MISALIGNMENT - Es wurde versucht, einen Befehl an einer nicht angeschlossenen Adresse auszuführen, was dieses System nicht unterstützt.
. .
MessageId=550 MessageId=550
@ -1861,7 +1861,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_LOGON_SERVER_CONFLICT SymbolicName=ERROR_LOGON_SERVER_CONFLICT
Language=German Language=German
ERROR_LOGON_SERVER_CONFLICT - Der Netlogon-Dienst kann nicht starten weil ein anderer Netlogon-Dienst mit der gleichen Rolle lauft und ein Domänen-Konflikt auftritt. ERROR_LOGON_SERVER_CONFLICT - Der Netlogon-Dienst kann nicht starten, weil ein anderer Netlogon-Dienst mit der gleichen Rolle läuft und ein Domänen-Konflikt auftritt.
. .
MessageId=569 MessageId=569
@ -1965,7 +1965,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_ILLEGAL_CHARACTER SymbolicName=ERROR_ILLEGAL_CHARACTER
Language=German Language=German
ERROR_ILLEGAL_CHARACTER - Es wurde ein illegales Zeichen gefunden. Für einen Multi-Byte-Zeichensatz schließt dies ein Führungs-Byte ohne ein fogendes Anschluss-Byte ein. Für den Unicode-Zeichensatz schließt dies die Zeichen 0xFFFF und 0xFFFE ein. ERROR_ILLEGAL_CHARACTER - Es wurde ein ungültiges Zeichen gefunden. Für einen Multi-Byte-Zeichensatz schließt dies ein Führungs-Byte ohne ein folgendes Anschluss-Byte ein. Für den Unicode-Zeichensatz schließt dies die Zeichen 0xFFFF und 0xFFFE ein.
. .
MessageId=583 MessageId=583
@ -1989,7 +1989,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT SymbolicName=ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT
Language=German Language=German
ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT - Das System-BIOS konnte einen Systeminterupt nicht an das Gerät oder dessen Bus verbinden. ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT - Das System-BIOS konnte einen Systeminterrupt nicht an das Gerät oder dessen Bus weiterleiten.
. .
MessageId=586 MessageId=586
@ -2021,7 +2021,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_CANNOT_LOAD_REGISTRY_FILE SymbolicName=ERROR_CANNOT_LOAD_REGISTRY_FILE
Language=German Language=German
ERROR_CANNOT_LOAD_REGISTRY_FILE - Die Registrierungsdatenbank kann den Zweig nicht laden: %hs, sein Log oder die Alternative. Sie ist korrupt, fehlt oder ist nicht beschreibbar. ERROR_CANNOT_LOAD_REGISTRY_FILE - Die Registrierungsdatenbank kann den Zweig nicht laden: %hs, sein Log oder die Alternative. Sie ist beschädigt, fehlt oder ist nicht beschreibbar.
. .
MessageId=590 MessageId=590
@ -2109,7 +2109,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_CONVERT_TO_LARGE SymbolicName=ERROR_CONVERT_TO_LARGE
Language=German Language=German
ERROR_CONVERT_TO_LARGE - Interne OFS-Statuscodes zeigen an, dass eine Allokation behandelt wird. Either es ist retried after the containing onode ist moved oder the extent Stream ist converted to ein lang Stream. ERROR_CONVERT_TO_LARGE - Interne OFS-Statuscodes zeigen an, dass eine Allokation behandelt wird. Entweder wird es erneut versucht, nachdem der kontaktierende Knoten verschoben wurde, oder der erweiterte Stream wird in einen langen Stream konvertiert.
. .
MessageId=601 MessageId=601
@ -2117,7 +2117,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_FOUND_OUT_OF_SCOPE SymbolicName=ERROR_FOUND_OUT_OF_SCOPE
Language=German Language=German
ERROR_FOUND_OUT_OF_SCOPE - Der Versuch to find the Objekt gefunden ein Objekt matching von ID on der datenträger aber es ist out von the bereich von the Handle used für the Operation. ERROR_FOUND_OUT_OF_SCOPE - Ein Objekt, das der ID des Datenträgers entspricht, wurde gefunden, aber es ist außerhalb des Bereichs für das Handle für diesen Vorgang.
. .
MessageId=602 MessageId=602
@ -2125,7 +2125,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_ALLOCATE_BUCKET SymbolicName=ERROR_ALLOCATE_BUCKET
Language=German Language=German
ERROR_ALLOCATE_BUCKET - The bucket array must be grown. Retry transaction after doing so. ERROR_ALLOCATE_BUCKET - Das Bucketarray muss vergrößert werden. Versuchen Sie es anschließend erneut.
. .
MessageId=603 MessageId=603
@ -2165,7 +2165,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_TIMER_RESOLUTION_NOT_SET SymbolicName=ERROR_TIMER_RESOLUTION_NOT_SET
Language=German Language=German
ERROR_TIMER_RESOLUTION_NOT_SET - Die Auflösung des Zeitgebers wurde vorher nicht vom aktuellen Ptozess gesetzt. ERROR_TIMER_RESOLUTION_NOT_SET - Die Auflösung des Zeitgebers wurde vorher nicht vom aktuellen Prozess gesetzt.
. .
MessageId=608 MessageId=608
@ -2173,7 +2173,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_INSUFFICIENT_LOGON_INFO SymbolicName=ERROR_INSUFFICIENT_LOGON_INFO
Language=German Language=German
ERROR_INSUFFICIENT_LOGON_INFO - Es gibt zu wenig Account-Informationen um sich einzuloggen. ERROR_INSUFFICIENT_LOGON_INFO - Es gibt zu wenig Account-Informationen, um sich einzuloggen.
. .
MessageId=609 MessageId=609
@ -2181,7 +2181,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_BAD_DLL_ENTRYPOINT SymbolicName=ERROR_BAD_DLL_ENTRYPOINT
Language=German Language=German
ERROR_BAD_DLL_ENTRYPOINT - Die DLL %hs wurde nicht korrekt geschrieben. Der Stack-Zeiger wurde in einem unvereinbaren Status gelassen. The entrypoint should be declared as WINAPI or STDCALL. Select YES to fail the DLL load. Select NO to continue execution. Selecting NO may cause the Programm to operate incorrectly. ERROR_BAD_DLL_ENTRYPOINT - Die DLL %hs wurde nicht korrekt geschrieben. Der Stack-Zeiger wurde in einem unvereinbaren Status gelassen. Der Einstiegspunkt sollte als WINAPI oder STDCALL deklariert werden. Wählen Sie JA aus, um das Laden der DLL abzubrechen. Wählen sie NEIN aus, um die Ausführung fortzusetzen. Die Auswahl von NEIN könnte dazu führen, dass das Programm nicht richtig funktioniert.
. .
MessageId=610 MessageId=610
@ -2189,7 +2189,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_BAD_SERVICE_ENTRYPOINT SymbolicName=ERROR_BAD_SERVICE_ENTRYPOINT
Language=German Language=German
ERROR_BAD_SERVICE_ENTRYPOINT - Der %hs-Dienst wurde nicht korrekt geschrieben. Der Stack-Zeiger wurde in einem unvereinbaren Status gelassen. The callback entrypoint should be declared as WINAPI oder STDCALL. Selecting OK will cause the service to continue Operation. However, the service Prozess may operate incorrectly. ERROR_BAD_SERVICE_ENTRYPOINT - Der %hs-Dienst wurde nicht korrekt geschrieben. Der Stack-Zeiger wurde in einem unvereinbaren Status gelassen. Der Callback-Einstiegspunkt sollte als WINAPI oder STDCALL deklariert werden. Die Auswahl OK wird die Ausführung des Prozesses fortsetzen. Der Dienstprozess könnte jedoch fehlerhaft arbeiten.
. .
MessageId=611 MessageId=611
@ -2213,7 +2213,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_REGISTRY_QUOTA_LIMIT SymbolicName=ERROR_REGISTRY_QUOTA_LIMIT
Language=German Language=German
ERROR_REGISTRY_QUOTA_LIMIT - Der Systemteil der Registierungsdatenbank erreichte seine maximale Größe. Weitere Speicheranforderungen werden ignoriert. ERROR_REGISTRY_QUOTA_LIMIT - Der Systemteil der Registrierungsdatenbank erreichte seine maximale Größe. Weitere Speicheranforderungen werden ignoriert.
. .
MessageId=614 MessageId=614
@ -2245,7 +2245,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_PWD_HISTORY_CONFLICT SymbolicName=ERROR_PWD_HISTORY_CONFLICT
Language=German Language=German
ERROR_PWD_HISTORY_CONFLICT - Das Passwort wurde schon einaml benutzt, was in den Richtlinien verboten ist. ERROR_PWD_HISTORY_CONFLICT - Das Passwort wurde schon einmal benutzt, was in den Richtlinien verboten ist.
. .
MessageId=618 MessageId=618
@ -2317,7 +2317,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_NO_MORE_MATCHES SymbolicName=ERROR_NO_MORE_MATCHES
Language=German Language=German
ERROR_NO_MORE_MATCHES - There are no more matches for the current index enumeration. ERROR_NO_MORE_MATCHES - Es gibt keine weiteren Übereinstimmungen für die derzeitige Indexaufzählung.
. .
MessageId=627 MessageId=627
@ -2325,7 +2325,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_RANGE_LIST_CONFLICT SymbolicName=ERROR_RANGE_LIST_CONFLICT
Language=German Language=German
ERROR_RANGE_LIST_CONFLICT - The range could not be added to the range list because of a conflict. ERROR_RANGE_LIST_CONFLICT - Der Bereich konnte wegen eines Konflikts nicht in die Bereichsliste übernommen werden.
. .
MessageId=628 MessageId=628
@ -2333,7 +2333,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_SERVER_SID_MISMATCH SymbolicName=ERROR_SERVER_SID_MISMATCH
Language=German Language=German
ERROR_SERVER_SID_MISMATCH - The server process is running under a SID different than that required by client. ERROR_SERVER_SID_MISMATCH - Der Serverprozess läuft unter einer SID, die sich von der vom Client angeforderten unterscheidet.
. .
MessageId=629 MessageId=629
@ -2349,7 +2349,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_FLOAT_MULTIPLE_FAULTS SymbolicName=ERROR_FLOAT_MULTIPLE_FAULTS
Language=German Language=German
ERROR_FLOAT_MULTIPLE_FAULTS - Multiple floating point faults. ERROR_FLOAT_MULTIPLE_FAULTS - Mehrere Fließkommafehler.
. .
MessageId=631 MessageId=631
@ -2357,7 +2357,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_FLOAT_MULTIPLE_TRAPS SymbolicName=ERROR_FLOAT_MULTIPLE_TRAPS
Language=German Language=German
ERROR_FLOAT_MULTIPLE_TRAPS - Multiple floating point traps. ERROR_FLOAT_MULTIPLE_TRAPS - Mehrere Fließkommafallen.
. .
MessageId=632 MessageId=632
@ -2365,7 +2365,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_NOINTERFACE SymbolicName=ERROR_NOINTERFACE
Language=German Language=German
ERROR_NOINTERFACE - The requested interface is not supported. ERROR_NOINTERFACE - Das angeforderte Interface wird nicht unterstützt.
. .
MessageId=633 MessageId=633
@ -2373,7 +2373,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DRIVER_FAILED_SLEEP SymbolicName=ERROR_DRIVER_FAILED_SLEEP
Language=German Language=German
ERROR_DRIVER_FAILED_SLEEP - The driver %hs does not support standby mode. Updating this driver may allow the system to go to standby mode. ERROR_DRIVER_FAILED_SLEEP - Der Treiber %hs unterstützt keinen Stromsparmodus. Die Aktualisierung des Treibers könnte dem System den Stromsparmodus ermöglichen.
. .
MessageId=634 MessageId=634
@ -2381,7 +2381,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_CORRUPT_SYSTEM_FILE SymbolicName=ERROR_CORRUPT_SYSTEM_FILE
Language=German Language=German
ERROR_CORRUPT_SYSTEM_FILE - The system file %1 has become corrupt and has been replaced. ERROR_CORRUPT_SYSTEM_FILE - Die Systemdatei %1 wurde beschädigt und ausgewechselt.
. .
MessageId=635 MessageId=635
@ -2389,7 +2389,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_COMMITMENT_MINIMUM SymbolicName=ERROR_COMMITMENT_MINIMUM
Language=German Language=German
ERROR_COMMITMENT_MINIMUM - Your system is low on virtual memory. ReactOS is increasing the size of your virtual memory paging file. During this process, memory requests for some applications may be denied. For more information, see Help. ERROR_COMMITMENT_MINIMUM - Ihr System hat nur noch wenig virtuellen Speicher. ReactOS vergrößert ihre Pagingdatei. Während dieses Vorgangs könnten Speicheranfragen von Anwendungen abgelehnt werden. Für weitere Informationen siehe Hilfe.
. .
MessageId=636 MessageId=636
@ -2397,7 +2397,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_PNP_RESTART_ENUMERATION SymbolicName=ERROR_PNP_RESTART_ENUMERATION
Language=German Language=German
ERROR_PNP_RESTART_ENUMERATION - A device was removed so enumeration must be restarted. ERROR_PNP_RESTART_ENUMERATION - Ein Gerät wurde entfernt, so dass die Nummerierung neu gestartet werden muss.
. .
MessageId=637 MessageId=637
@ -2405,7 +2405,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_SYSTEM_IMAGE_BAD_SIGNATURE SymbolicName=ERROR_SYSTEM_IMAGE_BAD_SIGNATURE
Language=German Language=German
ERROR_SYSTEM_IMAGE_BAD_SIGNATURE - The system image %s is not properly signed. The file has been replaced with the signed file. The system has been shut down. ERROR_SYSTEM_IMAGE_BAD_SIGNATURE - Das Systemabbild %s wurde nicht korrekt signiert. Die Datei wurde mit der signierten Datei ersetzt. Das System wurde heruntergefahren.
. .
MessageId=638 MessageId=638
@ -2413,7 +2413,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_PNP_REBOOT_REQUIRED SymbolicName=ERROR_PNP_REBOOT_REQUIRED
Language=German Language=German
ERROR_PNP_REBOOT_REQUIRED - Device will not start without a reboot. ERROR_PNP_REBOOT_REQUIRED - Das Gerät wird ohne einen Neustart nicht gestartet werden.
. .
MessageId=639 MessageId=639
@ -2421,7 +2421,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_INSUFFICIENT_POWER SymbolicName=ERROR_INSUFFICIENT_POWER
Language=German Language=German
ERROR_INSUFFICIENT_POWER - There is not enough power to complete the requested operation. ERROR_INSUFFICIENT_POWER - Es gibt nicht genug Strom, um den angeforderten Vorgang abzuschließen.
. .
MessageId=641 MessageId=641
@ -2429,7 +2429,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_SYSTEM_SHUTDOWN SymbolicName=ERROR_SYSTEM_SHUTDOWN
Language=German Language=German
ERROR_SYSTEM_SHUTDOWN - The system is in the process of shutting down. ERROR_SYSTEM_SHUTDOWN - Das System wird heruntergefahren.
. .
MessageId=642 MessageId=642
@ -2437,7 +2437,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_PORT_NOT_SET SymbolicName=ERROR_PORT_NOT_SET
Language=German Language=German
ERROR_PORT_NOT_SET - An attempt to remove a processes DebugPort was made, but a port was not already associated with the process. ERROR_PORT_NOT_SET - Ein Versuch, den DebugPort eines Prozesses zu entfernen, wurde unternommen, aber dem Prozess war noch kein solcher Port zugewiesen.
. .
MessageId=643 MessageId=643
@ -2453,7 +2453,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_RANGE_NOT_FOUND SymbolicName=ERROR_RANGE_NOT_FOUND
Language=German Language=German
ERROR_RANGE_NOT_FOUND - The specified range could not be found in the range list. ERROR_RANGE_NOT_FOUND - Der angegebene Bereich konnte nicht in der Bereichsliste gefunden werden.
. .
MessageId=646 MessageId=646
@ -2461,7 +2461,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_NOT_SAFE_MODE_DRIVER SymbolicName=ERROR_NOT_SAFE_MODE_DRIVER
Language=German Language=German
ERROR_NOT_SAFE_MODE_DRIVER - The driver was not loaded because the system is booting into safe mode. ERROR_NOT_SAFE_MODE_DRIVER - Der Treiber wurde nicht geladen, da das System im sicheren Modus gestartet wird.
. .
MessageId=647 MessageId=647
@ -2469,7 +2469,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_FAILED_DRIVER_ENTRY SymbolicName=ERROR_FAILED_DRIVER_ENTRY
Language=German Language=German
ERROR_FAILED_DRIVER_ENTRY - The driver was not loaded because it failed it's initialization call. ERROR_FAILED_DRIVER_ENTRY - Der Treiber wurde nicht geladen, weil sein Initialisierungsaufruf fehlschlug.
. .
MessageId=648 MessageId=648
@ -2477,7 +2477,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DEVICE_ENUMERATION_ERROR SymbolicName=ERROR_DEVICE_ENUMERATION_ERROR
Language=German Language=German
ERROR_DEVICE_ENUMERATION_ERROR - The \"%hs\" encountered an error while applying power or reading the device configuration. This may be caused by a failure of your hardware or by a poor connection. ERROR_DEVICE_ENUMERATION_ERROR - Es ist ein Fehler mit \"%hs\" bei der Stromversorgung oder bei der Prüfung der Geräteeigenschaften aufgetreten. Dies könnte an einem Hardwarefehler oder an einer schlechten Verbindung liegen.
. .
MessageId=649 MessageId=649
@ -2485,7 +2485,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_MOUNT_POINT_NOT_RESOLVED SymbolicName=ERROR_MOUNT_POINT_NOT_RESOLVED
Language=German Language=German
ERROR_MOUNT_POINT_NOT_RESOLVED - The create operation failed because the name contained at least one mount point which resolves to a volume to which the specified device object is not attached. ERROR_MOUNT_POINT_NOT_RESOLVED - Der Erstellvorgang ist fehlgeschlagen, da der Name mindestens einen Mountpunkt enthielt, der auf eine Partition zeigt, an die das angegebene Gerät nicht angehängt ist.
. .
MessageId=650 MessageId=650
@ -2493,7 +2493,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_INVALID_DEVICE_OBJECT_PARAMETER SymbolicName=ERROR_INVALID_DEVICE_OBJECT_PARAMETER
Language=German Language=German
ERROR_INVALID_DEVICE_OBJECT_PARAMETER - The device object parameter is either not a valid device object or is not attached to the volume specified by the file name. ERROR_INVALID_DEVICE_OBJECT_PARAMETER - Der Geräteparameter ist entweder kein gültiges Gerät oder nicht an den im Dateinamen angegebenen Datenträger angehängt.
. .
MessageId=651 MessageId=651
@ -2501,7 +2501,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_MCA_OCCURED SymbolicName=ERROR_MCA_OCCURED
Language=German Language=German
ERROR_MCA_OCCURED - A Machine Check Error has occurred. Please check the system eventlog for additional information. ERROR_MCA_OCCURED - Ein Computerprüffehler ist aufgetreten. Bitte überprüfen Sie die Ereignisanzeige für weitere Informationen.
. .
MessageId=652 MessageId=652
@ -2509,7 +2509,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DRIVER_DATABASE_ERROR SymbolicName=ERROR_DRIVER_DATABASE_ERROR
Language=German Language=German
ERROR_DRIVER_DATABASE_ERROR - There was error [%2] processing the driver database. ERROR_DRIVER_DATABASE_ERROR - Fehler [%2] ist beim Verarbeiten der Gerätedatenbank aufgetreten.
. .
MessageId=653 MessageId=653
@ -2517,7 +2517,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_SYSTEM_HIVE_TOO_LARGE SymbolicName=ERROR_SYSTEM_HIVE_TOO_LARGE
Language=German Language=German
ERROR_SYSTEM_HIVE_TOO_LARGE - System hive size has exceeded its limit. ERROR_SYSTEM_HIVE_TOO_LARGE - Die Größe des Systemzweiges hat ihre Grenze überschritten.
. .
MessageId=654 MessageId=654
@ -2525,7 +2525,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DRIVER_FAILED_PRIOR_UNLOAD SymbolicName=ERROR_DRIVER_FAILED_PRIOR_UNLOAD
Language=German Language=German
ERROR_DRIVER_FAILED_PRIOR_UNLOAD - The driver could not be loaded because a previous version of the driver is still in memory. ERROR_DRIVER_FAILED_PRIOR_UNLOAD - Der Treiber konnte nicht geladen werden, da sich eine frühere Version des Treibers noch im Speicher befindet.
. .
MessageId=655 MessageId=655
@ -2533,7 +2533,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_VOLSNAP_PREPARE_HIBERNATE SymbolicName=ERROR_VOLSNAP_PREPARE_HIBERNATE
Language=German Language=German
ERROR_VOLSNAP_PREPARE_HIBERNATE - Please wait while the Volume Shadow Copy Service prepares volume %hs for hibernation. ERROR_VOLSNAP_PREPARE_HIBERNATE - Bitte warten Sie, während der Schattenkopiedienst das Laufwerk %hs auf den Ruhezustand vorbereitet.
. .
MessageId=656 MessageId=656
@ -2549,7 +2549,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_HUNG_DISPLAY_DRIVER_THREAD SymbolicName=ERROR_HUNG_DISPLAY_DRIVER_THREAD
Language=German Language=German
ERROR_HUNG_DISPLAY_DRIVER_THREAD - The %hs display driver has stopped working normally. Save your work and reboot the system to restore full display functionality. The next time you reboot the machine a dialog will be displayed giving you a chance to report this failure to Microsoft. ERROR_HUNG_DISPLAY_DRIVER_THREAD - Der Anzeigetreiber %hs funktioniert nicht mehr normal. Speichern Sie Ihre Daten und starten Sie das System neu, um die volle Anzeigefunktionalität wiederherzustellen. Beim nächsten Start des Computers wird ein Dialog erscheinen, der es Ihnen ermöglicht, Microsoft diesen Fehler zu melden.
. .
MessageId=665 MessageId=665
@ -2557,7 +2557,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_FILE_SYSTEM_LIMITATION SymbolicName=ERROR_FILE_SYSTEM_LIMITATION
Language=German Language=German
ERROR_FILE_SYSTEM_LIMITATION - The requested operation could not be completed due to a file system limitation. ERROR_FILE_SYSTEM_LIMITATION - Der angeforderte Vorgang wurde wegen Einschränkungen des Dateisystems nicht ausgeführt.
. .
MessageId=668 MessageId=668
@ -2573,7 +2573,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_VERIFIER_STOP SymbolicName=ERROR_VERIFIER_STOP
Language=German Language=German
ERROR_VERIFIER_STOP - Application verifier has found an error in the current process. ERROR_VERIFIER_STOP - Die Anwendungsprüfung hat einen Fehler in dem laufenden Prozess festgestellt.
. .
MessageId=670 MessageId=670
@ -2589,7 +2589,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_PNP_BAD_MPS_TABLE SymbolicName=ERROR_PNP_BAD_MPS_TABLE
Language=German Language=German
ERROR_PNP_BAD_MPS_TABLE - A device is missing in the system BIOS MPS table. This device will not be used. Please contact your system vendor for system BIOS update. ERROR_PNP_BAD_MPS_TABLE - Ein Gerät fehlt in der BIOS-MPS-Tabelle. Dieses Gerät wird nicht verwendet. Bitte kontaktieren Sie den Hersteller Ihres Systems für eine Aktualisierung des BIOS.
. .
MessageId=672 MessageId=672
@ -2597,7 +2597,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_PNP_TRANSLATION_FAILED SymbolicName=ERROR_PNP_TRANSLATION_FAILED
Language=German Language=German
ERROR_PNP_TRANSLATION_FAILED - A translator failed to translate resources. ERROR_PNP_TRANSLATION_FAILED - Ein Übersetzer konnte Ressourcen nicht übersetzen.
. .
MessageId=673 MessageId=673
@ -2605,7 +2605,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_PNP_IRQ_TRANSLATION_FAILED SymbolicName=ERROR_PNP_IRQ_TRANSLATION_FAILED
Language=German Language=German
ERROR_PNP_IRQ_TRANSLATION_FAILED - A IRQ translator failed to translate resources. ERROR_PNP_IRQ_TRANSLATION_FAILED - Ein IRQ-Übersetzer konnte Ressourcen nicht übersetzen.
. .
MessageId=674 MessageId=674
@ -2613,7 +2613,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_PNP_INVALID_ID SymbolicName=ERROR_PNP_INVALID_ID
Language=German Language=German
ERROR_PNP_INVALID_ID - Driver %2 returned invalid ID for a child device (%3). ERROR_PNP_INVALID_ID - Der Treiber %2 gab eine ungültige ID für ein Kindgerät (%3) zurück.
. .
MessageId=675 MessageId=675
@ -2621,7 +2621,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_WAKE_SYSTEM_DEBUGGER SymbolicName=ERROR_WAKE_SYSTEM_DEBUGGER
Language=German Language=German
ERROR_WAKE_SYSTEM_DEBUGGER - The system debugger was awakened by an interrupt. ERROR_WAKE_SYSTEM_DEBUGGER - Der Systemdebugger wurde mittels Interrupt erweckt.
. .
MessageId=676 MessageId=676
@ -2629,7 +2629,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_HANDLES_CLOSED SymbolicName=ERROR_HANDLES_CLOSED
Language=German Language=German
ERROR_HANDLES_CLOSED - Handles to objects have been automatically closed as a result of the requested operation. ERROR_HANDLES_CLOSED - Handles auf Objekte wurden als Ergebnis des angeforderten Vorgangs automatisch geschlossen.
. .
MessageId=677 MessageId=677
@ -2637,7 +2637,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_EXTRANEOUS_INFORMATION SymbolicName=ERROR_EXTRANEOUS_INFORMATION
Language=German Language=German
ERROR_EXTRANEOUS_INFORMATION - he specified access control list (ACL) contained more information than was expected. ERROR_EXTRANEOUS_INFORMATION - Die angegebene Zugangskontrollliste (ACL) beinhaltete mehr Informationen als erwartet.
. .
MessageId=678 MessageId=678
@ -2669,7 +2669,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_STOPPED_ON_SYMLINK SymbolicName=ERROR_STOPPED_ON_SYMLINK
Language=German Language=German
ERROR_STOPPED_ON_SYMLINK - The create operation stopped after reaching a symbolic link. ERROR_STOPPED_ON_SYMLINK - Die Erzeugung wurde beim Erreichen eines symbolischen Verweises beendet.
. .
MessageId=682 MessageId=682
@ -2677,7 +2677,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_LONGJUMP SymbolicName=ERROR_LONGJUMP
Language=German Language=German
ERROR_LONGJUMP - A long jump has been executed. ERROR_LONGJUMP - Ein langer Sprung wurde ausgeführt.
. .
MessageId=683 MessageId=683
@ -2685,7 +2685,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_PLUGPLAY_QUERY_VETOED SymbolicName=ERROR_PLUGPLAY_QUERY_VETOED
Language=German Language=German
ERROR_PLUGPLAY_QUERY_VETOED - The Plug and Play query operation was not successful. ERROR_PLUGPLAY_QUERY_VETOED - Der Plug-and-Play-Vorgang war nicht erfolgreich.
. .
MessageId=684 MessageId=684
@ -2701,7 +2701,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_REGISTRY_HIVE_RECOVERED SymbolicName=ERROR_REGISTRY_HIVE_RECOVERED
Language=German Language=German
ERROR_REGISTRY_HIVE_RECOVERED - Registry hive (file): %hs was corrupted and it has been recovered. Some data might have been lost. ERROR_REGISTRY_HIVE_RECOVERED - Der Registryzweig (Datei) %hs war defekt und wurde wiederhergestellt. Es könnten Daten verloren gegangen sein.
. .
MessageId=686 MessageId=686
@ -2709,7 +2709,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DLL_MIGHT_BE_INSECURE SymbolicName=ERROR_DLL_MIGHT_BE_INSECURE
Language=German Language=German
ERROR_DLL_MIGHT_BE_INSECURE - The application is attempting to run executable code from the module %hs. This may be insecure. An alternative, %hs, is available. Should the application use the secure module %hs? ERROR_DLL_MIGHT_BE_INSECURE - Die Anwendung versucht, ausführbaren Code aus dem Modul %hs zu laden. Dies könnte unsicher sein. Eine Alternative, %hs, ist verfügbar. Soll die Anwendung das sichere Modul %hs nutzen?
. .
MessageId=687 MessageId=687
@ -2717,7 +2717,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DLL_MIGHT_BE_INCOMPATIBLE SymbolicName=ERROR_DLL_MIGHT_BE_INCOMPATIBLE
Language=German Language=German
ERROR_DLL_MIGHT_BE_INCOMPATIBLE - The application is loading executable code from the module %hs. This is secure, but may be incompatible with previous releases of the operating system. An alternative, %hs, is available. Should the application use the secure module %hs? ERROR_DLL_MIGHT_BE_INCOMPATIBLE - Die Anwendung versucht, ausführbaren Code aus dem Modul %hs zu laden. Dies ist sicher, aber könnte mit früheren Versionen des Betriebssystems inkompatibel sein. Eine Alternative, %hs, ist verfügbar. Soll die Anwendung das sichere Modul %hs nutzen?
. .
MessageId=688 MessageId=688
@ -2725,7 +2725,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DBG_EXCEPTION_NOT_HANDLED SymbolicName=ERROR_DBG_EXCEPTION_NOT_HANDLED
Language=German Language=German
ERROR_DBG_EXCEPTION_NOT_HANDLED - Debugger did not handle the exception. ERROR_DBG_EXCEPTION_NOT_HANDLED - Der Debugger behandelte die Ausnahme nicht.
. .
MessageId=689 MessageId=689
@ -2733,7 +2733,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DBG_REPLY_LATER SymbolicName=ERROR_DBG_REPLY_LATER
Language=German Language=German
ERROR_DBG_REPLY_LATER - Debugger will reply later. ERROR_DBG_REPLY_LATER - Der Debugger wird später antworten.
. .
MessageId=690 MessageId=690
@ -2741,7 +2741,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE SymbolicName=ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE
Language=German Language=German
ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE - Debugger can not provide handle. ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE - Der Debugger kann das Handle nicht bereitstellen.
. .
MessageId=691 MessageId=691
@ -2749,7 +2749,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DBG_TERMINATE_THREAD SymbolicName=ERROR_DBG_TERMINATE_THREAD
Language=German Language=German
ERROR_DBG_TERMINATE_THREAD - Debugger terminated thread. ERROR_DBG_TERMINATE_THREAD - Der Debugger hat den Thread terminiert.
. .
MessageId=692 MessageId=692
@ -2757,7 +2757,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DBG_TERMINATE_PROCESS SymbolicName=ERROR_DBG_TERMINATE_PROCESS
Language=German Language=German
ERROR_DBG_TERMINATE_PROCESS - Debugger terminated process. ERROR_DBG_TERMINATE_PROCESS - Der Debugger hat den Prozess terminiert.
. .
MessageId=693 MessageId=693
@ -2765,7 +2765,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DBG_CONTROL_C SymbolicName=ERROR_DBG_CONTROL_C
Language=German Language=German
ERROR_DBG_CONTROL_C - Debugger got control C. ERROR_DBG_CONTROL_C - Der Debugger erhielt Strg-C.
. .
MessageId=694 MessageId=694
@ -2773,7 +2773,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DBG_PRINTEXCEPTION_C SymbolicName=ERROR_DBG_PRINTEXCEPTION_C
Language=German Language=German
ERROR_DBG_PRINTEXCEPTION_C - Debugger printed exception on control C. ERROR_DBG_PRINTEXCEPTION_C - Der Debugger gab für Strg-C eine Ausnahme aus.
. .
MessageId=695 MessageId=695
@ -2781,7 +2781,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DBG_RIPEXCEPTION SymbolicName=ERROR_DBG_RIPEXCEPTION
Language=German Language=German
ERROR_DBG_RIPEXCEPTION - Debugger received RIP exception. ERROR_DBG_RIPEXCEPTION - Der Debugger erhielt eine RIP-Ausnahme.
. .
MessageId=696 MessageId=696
@ -2789,7 +2789,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DBG_CONTROL_BREAK SymbolicName=ERROR_DBG_CONTROL_BREAK
Language=German Language=German
ERROR_DBG_CONTROL_BREAK - Debugger received control break. ERROR_DBG_CONTROL_BREAK - Der Debugger erhielt Strg-Pause.
. .
MessageId=697 MessageId=697
@ -2805,7 +2805,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_OBJECT_NAME_EXISTS SymbolicName=ERROR_OBJECT_NAME_EXISTS
Language=German Language=German
ERROR_OBJECT_NAME_EXISTS - An attempt was made to create an object and the object name already existed. ERROR_OBJECT_NAME_EXISTS - Ein Versuch wurde unternommen, ein Objekt zu erzeugen, und der Name des Objekts existierte bereits.
. .
MessageId=699 MessageId=699
@ -2837,7 +2837,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_SEGMENT_NOTIFICATION SymbolicName=ERROR_SEGMENT_NOTIFICATION
Language=German Language=German
ERROR_SEGMENT_NOTIFICATION - A virtual DOS machine (VDM) is loading, unloading, or moving an MS-DOS or Win16 program segment image. An exception is raised so a debugger can load, unload or track symbols and breakpoints within these 16-bit segments. ERROR_SEGMENT_NOTIFICATION - Eine virtuelle DOS-Maschine (VDM) lädt, entlädt oder verschiebt ein MS-DOS- oder Win16-Programmsegmentabbild. Eine Ausnahme wird bereitgestellt, so dass ein Debugger Symbole und Haltepunkte innerhalb dieser 16-Bit-Segmente laden, entladen oder verfolgen kann.
. .
MessageId=703 MessageId=703
@ -2869,7 +2869,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_IMAGE_MACHINE_TYPE_MISMATCH SymbolicName=ERROR_IMAGE_MACHINE_TYPE_MISMATCH
Language=German Language=German
ERROR_IMAGE_MACHINE_TYPE_MISMATCH - The image file %hs is valid, but is for a machine type other than the current machine. Select OK to continue, or CANCEL to fail the DLL load. ERROR_IMAGE_MACHINE_TYPE_MISMATCH - Das Abbild %hs ist gültig, aber es ist für einen anderen Gerätetypen bestimmt. Wählen Sie OK zum Fortfahren oder ABBRECHEN aus, um das Laden der DLL abzubrechen.
. .
MessageId=707 MessageId=707
@ -2877,7 +2877,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_RECEIVE_PARTIAL SymbolicName=ERROR_RECEIVE_PARTIAL
Language=German Language=German
ERROR_RECEIVE_PARTIAL - The network transport returned partial data to its client. The remaining data will be sent later. ERROR_RECEIVE_PARTIAL - Der Netzwerktransport gab Teildaten an den Client weiter. Die verbleibenden Daten werden später gesendet.
. .
MessageId=708 MessageId=708
@ -2917,7 +2917,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_CHECKING_FILE_SYSTEM SymbolicName=ERROR_CHECKING_FILE_SYSTEM
Language=German Language=German
ERROR_CHECKING_FILE_SYSTEM - Checking file system on %wZ. ERROR_CHECKING_FILE_SYSTEM - Prüfe Dateisystem auf %wZ.
. .
MessageId=714 MessageId=714
@ -2925,7 +2925,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_PREDEFINED_HANDLE SymbolicName=ERROR_PREDEFINED_HANDLE
Language=German Language=German
ERROR_PREDEFINED_HANDLE - The specified registry key is referenced by a predefined handle. ERROR_PREDEFINED_HANDLE - Der angegebene Registryschlüssel wird von einem vordefinierten Handle referenziert.
. .
MessageId=715 MessageId=715
@ -2941,7 +2941,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_WAS_LOCKED SymbolicName=ERROR_WAS_LOCKED
Language=German Language=German
ERROR_WAS_LOCKED - One of the pages to lock was already locked. ERROR_WAS_LOCKED - Eine der zu schließenden Seiten war bereits verschlossen.
. .
MessageId=720 MessageId=720
@ -2949,7 +2949,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE SymbolicName=ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE
Language=German Language=German
ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE - The image file %hs is valid, but is for a machine type other than the current machine. ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE - Das Abbild %hs ist gültig, aber für einen anderen Gerätetypen bestimmt.
. .
MessageId=721 MessageId=721
@ -2997,7 +2997,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_HIBERNATED SymbolicName=ERROR_HIBERNATED
Language=German Language=German
ERROR_HIBERNATED - The system was put into hibernation. ERROR_HIBERNATED - Das System wurde in den Ruhezustand versetzt.
. .
MessageId=727 MessageId=727
@ -3005,7 +3005,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_RESUME_HIBERNATION SymbolicName=ERROR_RESUME_HIBERNATION
Language=German Language=German
ERROR_RESUME_HIBERNATION - The system was resumed from hibernation. ERROR_RESUME_HIBERNATION - Das System wurde aus dem Ruhezustand fortgesetzt.
. .
MessageId=728 MessageId=728
@ -3013,7 +3013,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_FIRMWARE_UPDATED SymbolicName=ERROR_FIRMWARE_UPDATED
Language=German Language=German
ERROR_FIRMWARE_UPDATED - ReactOS has detected that the system firmware (BIOS) was updated [previous firmware date = %2, current firmware date %3]. ERROR_FIRMWARE_UPDATED - ReactOS hat festgestellt, dass die Systemfirmware (BIOS) aktualisiert wurde [voriges Firmwaredatum = %2, aktuelles Firmwaredatum = %3].
. .
MessageId=729 MessageId=729
@ -3029,7 +3029,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_WAKE_SYSTEM SymbolicName=ERROR_WAKE_SYSTEM
Language=German Language=German
ERROR_WAKE_SYSTEM - The system has awoken ERROR_WAKE_SYSTEM - Das System ist erwacht
. .
MessageId=741 MessageId=741
@ -3053,7 +3053,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_VOLUME_MOUNTED SymbolicName=ERROR_VOLUME_MOUNTED
Language=German Language=German
ERROR_VOLUME_MOUNTED - A new volume has been mounted by a file system. ERROR_VOLUME_MOUNTED - Ein neuer Datenträger wurde durch ein Dateisystem gemountet.
. .
MessageId=744 MessageId=744
@ -3133,7 +3133,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_CRASH_DUMP SymbolicName=ERROR_CRASH_DUMP
Language=German Language=German
ERROR_CRASH_DUMP - Crash dump exists in paging file. ERROR_CRASH_DUMP - Absturzabbild existiert in Pagetabelle.
. .
MessageId=754 MessageId=754
@ -3141,7 +3141,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_BUFFER_ALL_ZEROS SymbolicName=ERROR_BUFFER_ALL_ZEROS
Language=German Language=German
ERROR_BUFFER_ALL_ZEROS - Specified buffer contains all zeros. ERROR_BUFFER_ALL_ZEROS - Der angegebene Puffer enthält nur Nullen.
. .
MessageId=755 MessageId=755
@ -3181,7 +3181,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_PROCESS_NOT_IN_JOB SymbolicName=ERROR_PROCESS_NOT_IN_JOB
Language=German Language=German
ERROR_PROCESS_NOT_IN_JOB - The specified process is not part of a job. ERROR_PROCESS_NOT_IN_JOB - Der angegebene Prozess ist nicht Teil eines Auftrags.
. .
MessageId=760 MessageId=760
@ -3189,7 +3189,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_PROCESS_IN_JOB SymbolicName=ERROR_PROCESS_IN_JOB
Language=German Language=German
ERROR_PROCESS_IN_JOB - The specified process is part of a job. ERROR_PROCESS_IN_JOB - Der angegebene Prozess ist Teil eines Auftrags.
. .
MessageId=761 MessageId=761
@ -3197,7 +3197,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_VOLSNAP_HIBERNATE_READY SymbolicName=ERROR_VOLSNAP_HIBERNATE_READY
Language=German Language=German
ERROR_VOLSNAP_HIBERNATE_READY - The system is now ready for hibernation. ERROR_VOLSNAP_HIBERNATE_READY - Das System ist nun für den Ruhezustand bereit.
. .
MessageId=762 MessageId=762
@ -3237,7 +3237,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DBG_EXCEPTION_HANDLED SymbolicName=ERROR_DBG_EXCEPTION_HANDLED
Language=German Language=German
ERROR_DBG_EXCEPTION_HANDLED - Debugger handled exception. ERROR_DBG_EXCEPTION_HANDLED - Der Debugger hat eine Ausnahme behandelt.
. .
MessageId=767 MessageId=767
@ -3245,7 +3245,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_DBG_CONTINUE SymbolicName=ERROR_DBG_CONTINUE
Language=German Language=German
ERROR_DBG_CONTINUE - Debugger continued ERROR_DBG_CONTINUE - Debugger fortgesetzt
. .
MessageId=768 MessageId=768
@ -3261,7 +3261,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_COMPRESSION_DISABLED SymbolicName=ERROR_COMPRESSION_DISABLED
Language=German Language=German
ERROR_COMPRESSION_DISABLED - Compression is disabled for this volume. ERROR_COMPRESSION_DISABLED - Komprimierung ist für diesen Datenträger deaktiviert.
. .
MessageId=770 MessageId=770
@ -3301,7 +3301,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_ERRORS_ENCOUNTERED SymbolicName=ERROR_ERRORS_ENCOUNTERED
Language=German Language=German
ERROR_ERRORS_ENCOUNTERED - One or more errors occurred while processing the request. ERROR_ERRORS_ENCOUNTERED - Ein oder mehrere Fehler sind beim Verarbeiten der Anfrage aufgetreten.
. .
MessageId=775 MessageId=775
@ -3309,7 +3309,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_NOT_CAPABLE SymbolicName=ERROR_NOT_CAPABLE
Language=German Language=German
ERROR_NOT_CAPABLE - The implementation is not capable of performing the request. ERROR_NOT_CAPABLE - Die Implementierung ist nicht in der Lage, die Anfrage zu verarbeiten.
. .
MessageId=776 MessageId=776
@ -3325,7 +3325,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_VERSION_PARSE_ERROR SymbolicName=ERROR_VERSION_PARSE_ERROR
Language=German Language=German
ERROR_VERSION_PARSE_ERROR - A version number could not be parsed. ERROR_VERSION_PARSE_ERROR - Eine Versionsnummer konnte nicht ausgelesen werden.
. .
MessageId=778 MessageId=778
@ -3333,7 +3333,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_BADSTARTPOSITION SymbolicName=ERROR_BADSTARTPOSITION
Language=German Language=German
ERROR_BADSTARTPOSITION - The iterator's start position is invalid. ERROR_BADSTARTPOSITION - Die Startposition des Iterators ist ungültig.
. .
MessageId=994 MessageId=994
@ -3341,7 +3341,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_EA_ACCESS_DENIED SymbolicName=ERROR_EA_ACCESS_DENIED
Language=German Language=German
ERROR_EA_ACCESS_DENIED - Access to the extended attribute was denied. ERROR_EA_ACCESS_DENIED - Zugriff auf das erweiterte Attribut wurde verweigert.
. .
MessageId=995 MessageId=995
@ -3373,7 +3373,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_NOACCESS SymbolicName=ERROR_NOACCESS
Language=German Language=German
ERROR_NOACCESS - Invalid access to memory location. ERROR_NOACCESS - Ungültiger Zugriff auf Speicheradresse.
. .
MessageId=999 MessageId=999
@ -3389,7 +3389,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_STACK_OVERFLOW SymbolicName=ERROR_STACK_OVERFLOW
Language=German Language=German
ERROR_STACK_OVERFLOW - Recursion too deep; the stack overflowed. ERROR_STACK_OVERFLOW - Rekursion zu tief; Stapelüberlauf.
. .
MessageId=1002 MessageId=1002
@ -3405,7 +3405,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_CAN_NOT_COMPLETE SymbolicName=ERROR_CAN_NOT_COMPLETE
Language=German Language=German
ERROR_CAN_NOT_COMPLETE - Cannot complete this function. ERROR_CAN_NOT_COMPLETE - Kann diese Funktion nicht beenden.
. .
MessageId=1004 MessageId=1004
@ -3413,7 +3413,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_INVALID_FLAGS SymbolicName=ERROR_INVALID_FLAGS
Language=German Language=German
ERROR_INVALID_FLAGS - Invalid flags. ERROR_INVALID_FLAGS - Ungültige Flags.
. .
MessageId=1005 MessageId=1005

View file

@ -2471,7 +2471,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_FAILED_DRIVER_ENTRY SymbolicName=ERROR_FAILED_DRIVER_ENTRY
Language=English Language=English
ERROR_FAILED_DRIVER_ENTRY - The driver was not loaded because it failed it's initialization call. ERROR_FAILED_DRIVER_ENTRY - The driver was not loaded because it failed its initialization call.
. .
MessageId=648 MessageId=648

View file

@ -2469,7 +2469,7 @@ Severity=Success
Facility=System Facility=System
SymbolicName=ERROR_FAILED_DRIVER_ENTRY SymbolicName=ERROR_FAILED_DRIVER_ENTRY
Language=Russian Language=Russian
ERROR_FAILED_DRIVER_ENTRY - The driver was not loaded because it failed it's initialization call. ERROR_FAILED_DRIVER_ENTRY - The driver was not loaded because it failed its initialization call.
. .
MessageId=648 MessageId=648

View file

@ -3086,16 +3086,29 @@ FlushConsoleInputBuffer(HANDLE hConsoleInput)
/*-------------------------------------------------------------- /*--------------------------------------------------------------
* SetConsoleScreenBufferSize * SetConsoleScreenBufferSize
* *
* @unimplemented * @implemented
*/ */
BOOL BOOL
WINAPI WINAPI
SetConsoleScreenBufferSize(HANDLE hConsoleOutput, SetConsoleScreenBufferSize(HANDLE hConsoleOutput,
COORD dwSize) COORD dwSize)
{ {
DPRINT1("SetConsoleScreenBufferSize(0x%x, 0x%x) UNIMPLEMENTED!\n", hConsoleOutput, dwSize); CSR_API_MESSAGE Request;
SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ULONG CsrRequest;
return FALSE; NTSTATUS Status;
CsrRequest = MAKE_CSR_API(SET_SCREEN_BUFFER_SIZE, CSR_CONSOLE);
Request.Data.SetScreenBufferSize.OutputHandle = hConsoleOutput;
Request.Data.SetScreenBufferSize.Size = dwSize;
Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
{
SetLastErrorByStatus(Status);
return FALSE;
}
return TRUE;
} }
/*-------------------------------------------------------------- /*--------------------------------------------------------------

View file

@ -22,14 +22,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Âõîä" CAPTION "Âõîä"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
LTEXT "Ïîòðåáèòåë:",IDC_STATIC,36,75,45,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
LTEXT "Ïàðîëà:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
PUSHBUTTON "Äîáðå",IDOK,51,122,50,14,BS_DEFPUSHBUTTON PUSHBUTTON "Äîáðå",IDOK,51,122,50,14,BS_DEFPUSHBUTTON
PUSHBUTTON "Îòêàç",IDCANCEL,115,122,50,14 PUSHBUTTON "Îòêàç",IDCANCEL,115,122,50,14
PUSHBUTTON "Èçêëþ÷âàíå",IDC_SHUTDOWN,179,122,50,14 PUSHBUTTON "Èçêëþ÷âàíå",IDC_SHUTDOWN,179,122,50,14
LTEXT "Ïîòðåáèòåë:",IDC_STATIC,36,75,45,8
LTEXT "Ïàðîëà:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
END END
IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116 IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116
@ -37,13 +37,13 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Ñèãóðíîñò" CAPTION "Ñèãóðíîñò"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
PUSHBUTTON "Îòêàç",IDCANCEL,130,95,99,14 CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
PUSHBUTTON "Èçõîä",IDC_LOGOFF,90,76,75,14
PUSHBUTTON "Èçêëþ÷âàíå",IDC_SHUTDOWN,170,76,75,14
LTEXT "Êàêâî æåëàåòå?",IDC_STATIC,86,60,87,8 LTEXT "Êàêâî æåëàåòå?",IDC_STATIC,86,60,87,8
PUSHBUTTON "Çàêëþ÷âàíå íà êîìïþòúðà",IDC_LOCK,25,95,99,14 PUSHBUTTON "Çàêëþ÷âàíå íà êîìïþòúðà",IDC_LOCK,25,95,99,14
PUSHBUTTON "Èçõîä",IDC_LOGOFF,90,76,75,14
PUSHBUTTON "Èçêëþ÷âàíå",IDC_SHUTDOWN,170,76,75,14
PUSHBUTTON "Çàäà÷åí óïðàâèòåë",IDC_TASKMGR,10,76,75,14 PUSHBUTTON "Çàäà÷åí óïðàâèòåë",IDC_TASKMGR,10,76,75,14
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53 PUSHBUTTON "Îòêàç",IDCANCEL,130,95,99,14
END END
STRINGTABLE STRINGTABLE

View file

@ -27,14 +27,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Pøihlášení" CAPTION "Pøihlášení"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
LTEXT "Jméno:",IDC_STATIC,36,75,40,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
LTEXT "Heslo:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON
PUSHBUTTON "Storno",IDCANCEL,115,122,50,14 PUSHBUTTON "Storno",IDCANCEL,115,122,50,14
PUSHBUTTON "Vypnout",IDC_SHUTDOWN,179,122,50,14 PUSHBUTTON "Vypnout",IDC_SHUTDOWN,179,122,50,14
LTEXT "Jméno:",IDC_STATIC,36,75,40,8
LTEXT "Heslo:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
END END
IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116 IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116
@ -42,13 +42,13 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Bezpeènost" CAPTION "Bezpeènost"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
PUSHBUTTON "Storno",IDCANCEL,170,95,70,14 CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
PUSHBUTTON "Odhlásit",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "Vypnout",IDC_SHUTDOWN,170,76,70,14
LTEXT "Co chcete udìlat?",IDC_STATIC,86,60,87,8 LTEXT "Co chcete udìlat?",IDC_STATIC,86,60,87,8
PUSHBUTTON "Uzamknout poèítaè",IDC_LOCK,10,76,70,14 PUSHBUTTON "Uzamknout poèítaè",IDC_LOCK,10,76,70,14
PUSHBUTTON "Odhlásit",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "Vypnout",IDC_SHUTDOWN,170,76,70,14
PUSHBUTTON "Správce úloh",IDC_TASKMGR,90,95,70,14 PUSHBUTTON "Správce úloh",IDC_TASKMGR,90,95,70,14
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53 PUSHBUTTON "Storno",IDCANCEL,170,95,70,14
END END
STRINGTABLE STRINGTABLE

View file

@ -22,14 +22,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Logon" CAPTION "Logon"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
LTEXT "Benutzername:",IDC_STATIC,26, 75, 54, 8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
LTEXT "Passwort:",IDC_STATIC,43, 93, 38, 8
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
PUSHBUTTON "OK",IDOK,41, 122, 50, 14,BS_DEFPUSHBUTTON PUSHBUTTON "OK",IDOK,41, 122, 50, 14,BS_DEFPUSHBUTTON
PUSHBUTTON "Abbrechen",IDCANCEL,103, 122, 50, 14 PUSHBUTTON "Abbrechen",IDCANCEL,103, 122, 50, 14
PUSHBUTTON "Herunterfahren",IDC_SHUTDOWN,165, 122, 64, 14 PUSHBUTTON "Herunterfahren",IDC_SHUTDOWN,165, 122, 64, 14
LTEXT "Benutzername:",IDC_STATIC,26, 75, 54, 8
LTEXT "Passwort:",IDC_STATIC,43, 93, 38, 8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
END END
IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116 IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116
@ -37,13 +37,13 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Sicherheit" CAPTION "Sicherheit"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
PUSHBUTTON "Abbrechen",IDCANCEL,170,95,70,14 CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
PUSHBUTTON "Abmelden",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "Herunterfahren",IDC_SHUTDOWN,170,76,70,14
LTEXT "Was wollen Sie tun?",IDC_STATIC,86,60,87,8 LTEXT "Was wollen Sie tun?",IDC_STATIC,86,60,87,8
PUSHBUTTON "Computer sperren",IDC_LOCK,10,76,70,14 PUSHBUTTON "Computer sperren",IDC_LOCK,10,76,70,14
PUSHBUTTON "Abmelden",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "Herunterfahren",IDC_SHUTDOWN,170,76,70,14
PUSHBUTTON "Taskmanager",IDC_TASKMGR,90,95,70,14 PUSHBUTTON "Taskmanager",IDC_TASKMGR,90,95,70,14
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53 PUSHBUTTON "Abbrechen",IDCANCEL,170,95,70,14
END END
STRINGTABLE STRINGTABLE

View file

@ -22,14 +22,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Logon" CAPTION "Logon"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
LTEXT "Username:",IDC_STATIC,36,75,40,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
LTEXT "Password:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON
PUSHBUTTON "Cancel",IDCANCEL,115,122,50,14 PUSHBUTTON "Cancel",IDCANCEL,115,122,50,14
PUSHBUTTON "Shutdown",IDC_SHUTDOWN,179,122,50,14 PUSHBUTTON "Shutdown",IDC_SHUTDOWN,179,122,50,14
LTEXT "Username:",IDC_STATIC,36,75,40,8
LTEXT "Password:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
END END
IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116 IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116
@ -37,13 +37,13 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Security" CAPTION "Security"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
PUSHBUTTON "Cancel",IDCANCEL,170,95,70,14 CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
PUSHBUTTON "Log off",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "Shutdown",IDC_SHUTDOWN,170,76,70,14
LTEXT "What do you want to do?",IDC_STATIC,86,60,87,8 LTEXT "What do you want to do?",IDC_STATIC,86,60,87,8
PUSHBUTTON "Lock computer",IDC_LOCK,10,76,70,14 PUSHBUTTON "Lock computer",IDC_LOCK,10,76,70,14
PUSHBUTTON "Log off",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "Shutdown",IDC_SHUTDOWN,170,76,70,14
PUSHBUTTON "Task manager",IDC_TASKMGR,90,95,70,14 PUSHBUTTON "Task manager",IDC_TASKMGR,90,95,70,14
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53 PUSHBUTTON "Cancel",IDCANCEL,170,95,70,14
END END
STRINGTABLE STRINGTABLE

View file

@ -27,14 +27,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Acceder" CAPTION "Acceder"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
LTEXT "Usuario:",IDC_STATIC,36,75,40,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
LTEXT "Contraseña:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
PUSHBUTTON "Aceptar",IDOK,51,122,50,14,BS_DEFPUSHBUTTON PUSHBUTTON "Aceptar",IDOK,51,122,50,14,BS_DEFPUSHBUTTON
PUSHBUTTON "Cancelar",IDCANCEL,115,122,50,14 PUSHBUTTON "Cancelar",IDCANCEL,115,122,50,14
PUSHBUTTON "Cerrar",IDC_SHUTDOWN,179,122,50,14 PUSHBUTTON "Cerrar",IDC_SHUTDOWN,179,122,50,14
LTEXT "Usuario:",IDC_STATIC,36,75,40,8
LTEXT "Contraseña:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
END END
IDD_LOGGEDON_DLG DIALOGEX 0, 0, 261, 116 IDD_LOGGEDON_DLG DIALOGEX 0, 0, 261, 116
@ -42,13 +42,13 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Seguridad" CAPTION "Seguridad"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
PUSHBUTTON "Cancelar",IDCANCEL, 186, 95, 70, 14 CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
PUSHBUTTON "Salir",IDC_LOGOFF, 92, 76, 88, 14
PUSHBUTTON "Cerrar",IDC_SHUTDOWN, 186, 76, 70, 14
LTEXT "¿Qué quieres hacer?",IDC_STATIC, 94, 60, 87, 8 LTEXT "¿Qué quieres hacer?",IDC_STATIC, 94, 60, 87, 8
PUSHBUTTON "Bloquear computadora",IDC_LOCK, 4, 76, 83, 14 PUSHBUTTON "Bloquear computadora",IDC_LOCK, 4, 76, 83, 14
PUSHBUTTON "Salir",IDC_LOGOFF, 92, 76, 88, 14
PUSHBUTTON "Cerrar",IDC_SHUTDOWN, 186, 76, 70, 14
PUSHBUTTON "Administrador de tareas",IDC_TASKMGR, 92, 95, 88, 14 PUSHBUTTON "Administrador de tareas",IDC_TASKMGR, 92, 95, 88, 14
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53 PUSHBUTTON "Cancelar",IDCANCEL, 186, 95, 70, 14
END END
STRINGTABLE STRINGTABLE

View file

@ -22,14 +22,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Connexion" CAPTION "Connexion"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
LTEXT "Utilisateur:",IDC_STATIC,36,75,40,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
LTEXT "Mot de passe:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON
PUSHBUTTON "Annuler",IDCANCEL,115,122,50,14 PUSHBUTTON "Annuler",IDCANCEL,115,122,50,14
PUSHBUTTON "Éteindre",IDC_SHUTDOWN,179,122,50,14 PUSHBUTTON "Éteindre",IDC_SHUTDOWN,179,122,50,14
LTEXT "Utilisateur:",IDC_STATIC,36,75,40,8
LTEXT "Mot de passe:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
END END
IDD_LOGGEDON_DLG DIALOGEX 0, 0, 258, 116 IDD_LOGGEDON_DLG DIALOGEX 0, 0, 258, 116
@ -37,13 +37,13 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Sécurité" CAPTION "Sécurité"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
PUSHBUTTON "Annuler",IDCANCEL, 184, 95, 70, 14 CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
PUSHBUTTON "Déconnecter",IDC_LOGOFF, 93, 76, 85, 14
PUSHBUTTON "Éteindre",IDC_SHUTDOWN, 184, 76, 70, 14
LTEXT "Que voulez vous faire?",IDC_STATIC, 94, 60, 87, 8 LTEXT "Que voulez vous faire?",IDC_STATIC, 94, 60, 87, 8
PUSHBUTTON "Verrouiller l'ordinateur",IDC_LOCK, 4, 76, 82, 14 PUSHBUTTON "Verrouiller l'ordinateur",IDC_LOCK, 4, 76, 82, 14
PUSHBUTTON "Déconnecter",IDC_LOGOFF, 93, 76, 85, 14
PUSHBUTTON "Éteindre",IDC_SHUTDOWN, 184, 76, 70, 14
PUSHBUTTON "Gestionnaire de tâches",IDC_TASKMGR, 93, 95, 85, 14 PUSHBUTTON "Gestionnaire de tâches",IDC_TASKMGR, 93, 95, 85, 14
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53 PUSHBUTTON "Annuler",IDCANCEL, 184, 95, 70, 14
END END
STRINGTABLE STRINGTABLE

View file

@ -22,14 +22,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Masuk" CAPTION "Masuk"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
LTEXT "Nama pengguna:",IDC_STATIC,22, 75, 61, 8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
LTEXT "Kata sandi:",IDC_STATIC, 40, 93, 42, 8
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON
PUSHBUTTON "Batal",IDCANCEL,115,122,50,14 PUSHBUTTON "Batal",IDCANCEL,115,122,50,14
PUSHBUTTON "Matikan",IDC_SHUTDOWN,179,122,50,14 PUSHBUTTON "Matikan",IDC_SHUTDOWN,179,122,50,14
LTEXT "Nama pengguna:",IDC_STATIC,22, 75, 61, 8
LTEXT "Kata sandi:",IDC_STATIC, 40, 93, 42, 8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
END END
IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116 IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116
@ -37,13 +37,13 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Keamanan" CAPTION "Keamanan"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
PUSHBUTTON "Batal",IDCANCEL,170,95,70,14 CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
PUSHBUTTON "Keluar",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "Matikan",IDC_SHUTDOWN,170,76,70,14
LTEXT "Apa yang ingin anda lakukan?",IDC_STATIC,86,60,87,8 LTEXT "Apa yang ingin anda lakukan?",IDC_STATIC,86,60,87,8
PUSHBUTTON "Kunci komputer",IDC_LOCK,10,76,70,14 PUSHBUTTON "Kunci komputer",IDC_LOCK,10,76,70,14
PUSHBUTTON "Keluar",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "Matikan",IDC_SHUTDOWN,170,76,70,14
PUSHBUTTON "Manager Tugas",IDC_TASKMGR,90,95,70,14 PUSHBUTTON "Manager Tugas",IDC_TASKMGR,90,95,70,14
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53 PUSHBUTTON "Batal",IDCANCEL,170,95,70,14
END END
STRINGTABLE STRINGTABLE

View file

@ -30,14 +30,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Logon" CAPTION "Logon"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
LTEXT "Utente:",IDC_STATIC,36,75,40,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
LTEXT "Password:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON
PUSHBUTTON "Annulla",IDCANCEL,115,122,50,14 PUSHBUTTON "Annulla",IDCANCEL,115,122,50,14
PUSHBUTTON "Spegnimento",IDC_SHUTDOWN,179,122,50,14 PUSHBUTTON "Spegnimento",IDC_SHUTDOWN,179,122,50,14
LTEXT "Utente:",IDC_STATIC,36,75,40,8
LTEXT "Password:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
END END
IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116 IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116
@ -45,13 +45,13 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Sicurezza" CAPTION "Sicurezza"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
PUSHBUTTON "Annulla",IDCANCEL,170,95,70,14 CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
PUSHBUTTON "Fine sessione",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "Spegnimento",IDC_SHUTDOWN,170,76,70,14
LTEXT "Cosa volete fare?",IDC_STATIC,86,60,87,8 LTEXT "Cosa volete fare?",IDC_STATIC,86,60,87,8
PUSHBUTTON "Bloccare il computer",IDC_LOCK,10,76,70,14 PUSHBUTTON "Bloccare il computer",IDC_LOCK,10,76,70,14
PUSHBUTTON "Fine sessione",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "Spegnimento",IDC_SHUTDOWN,170,76,70,14
PUSHBUTTON "Task manager",IDC_TASKMGR,90,95,70,14 PUSHBUTTON "Task manager",IDC_TASKMGR,90,95,70,14
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53 PUSHBUTTON "Annulla",IDCANCEL,170,95,70,14
END END
STRINGTABLE STRINGTABLE

View file

@ -22,14 +22,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "ログオン" CAPTION "ログオン"
FONT 9, "MS UI Gothic",400,0,1 FONT 9, "MS UI Gothic",400,0,1
BEGIN BEGIN
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
LTEXT "ユーザー名:",IDC_STATIC,36,75,40,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
LTEXT "パスワード:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON
PUSHBUTTON "キャンセル",IDCANCEL,115,122,50,14 PUSHBUTTON "キャンセル",IDCANCEL,115,122,50,14
PUSHBUTTON "シャットダウン",IDC_SHUTDOWN,179,122,50,14 PUSHBUTTON "シャットダウン",IDC_SHUTDOWN,179,122,50,14
LTEXT "ユーザー名:",IDC_STATIC,36,75,40,8
LTEXT "パスワード:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
END END
IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116 IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116
@ -37,13 +37,13 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "セキュリティ" CAPTION "セキュリティ"
FONT 9, "MS UI Gothic",400,0,1 FONT 9, "MS UI Gothic",400,0,1
BEGIN BEGIN
PUSHBUTTON "キャンセル",IDCANCEL,170,95,70,14 CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
PUSHBUTTON "ログオフ",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "シャットダウン",IDC_SHUTDOWN,170,76,70,14
LTEXT "何をしますか?",IDC_STATIC,86,60,87,8 LTEXT "何をしますか?",IDC_STATIC,86,60,87,8
PUSHBUTTON "コンピュータのロック",IDC_LOCK,10,76,70,14 PUSHBUTTON "コンピュータのロック",IDC_LOCK,10,76,70,14
PUSHBUTTON "ログオフ",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "シャットダウン",IDC_SHUTDOWN,170,76,70,14
PUSHBUTTON "タスク マネージャ",IDC_TASKMGR,90,95,70,14 PUSHBUTTON "タスク マネージャ",IDC_TASKMGR,90,95,70,14
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53 PUSHBUTTON "キャンセル",IDCANCEL,170,95,70,14
END END
STRINGTABLE STRINGTABLE

View file

@ -22,14 +22,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Logg på ReactOS" CAPTION "Logg på ReactOS"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
LTEXT "Brukernavn:",IDC_STATIC,36,75,40,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
LTEXT "Passord:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON
PUSHBUTTON "Avbryt",IDCANCEL,115,122,50,14 PUSHBUTTON "Avbryt",IDCANCEL,115,122,50,14
PUSHBUTTON "Avslutt",IDC_SHUTDOWN,179,122,50,14 PUSHBUTTON "Avslutt",IDC_SHUTDOWN,179,122,50,14
LTEXT "Brukernavn:",IDC_STATIC,36,75,40,8
LTEXT "Passord:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
END END
IDD_LOGGEDON_DLG DIALOGEX 0, 0, 247, 116 IDD_LOGGEDON_DLG DIALOGEX 0, 0, 247, 116
@ -37,13 +37,13 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "ReactOS-sikkerhet" CAPTION "ReactOS-sikkerhet"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
PUSHBUTTON "Avbryt",IDCANCEL, 170, 95, 70, 14 CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
PUSHBUTTON "Logg av...",IDC_LOGOFF, 86, 76, 78, 14
PUSHBUTTON "Avslutt...",IDC_SHUTDOWN, 170, 76, 70, 14
LTEXT "Hva vil du gjøre?",IDC_STATIC, 92, 60, 87, 8 LTEXT "Hva vil du gjøre?",IDC_STATIC, 92, 60, 87, 8
PUSHBUTTON "Lås datamaskinen...",IDC_LOCK, 7, 76, 74, 14 PUSHBUTTON "Lås datamaskinen...",IDC_LOCK, 7, 76, 74, 14
PUSHBUTTON "Logg av...",IDC_LOGOFF, 86, 76, 78, 14
PUSHBUTTON "Avslutt...",IDC_SHUTDOWN, 170, 76, 70, 14
PUSHBUTTON "Oppgavebehandling...",IDC_TASKMGR, 86, 95, 78, 14 PUSHBUTTON "Oppgavebehandling...",IDC_TASKMGR, 86, 95, 78, 14
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53 PUSHBUTTON "Avbryt",IDCANCEL, 170, 95, 70, 14
END END
STRINGTABLE STRINGTABLE

View file

@ -29,14 +29,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Logon" CAPTION "Logon"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
LTEXT "Nazwa u¿ytkownika:",IDC_STATIC, 11, 75, 70, 8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
LTEXT "Has³o:",IDC_STATIC, 56, 93, 27, 8
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON
PUSHBUTTON "Anuluj",IDCANCEL,115,122,50,14 PUSHBUTTON "Anuluj",IDCANCEL,115,122,50,14
PUSHBUTTON "Wy³¹cz",IDC_SHUTDOWN,179,122,50,14 PUSHBUTTON "Wy³¹cz",IDC_SHUTDOWN,179,122,50,14
LTEXT "Nazwa u¿ytkownika:",IDC_STATIC, 11, 75, 70, 8
LTEXT "Has³o:",IDC_STATIC, 56, 93, 27, 8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
END END
IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116 IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116
@ -44,13 +44,13 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Bezpieczeñstwo" CAPTION "Bezpieczeñstwo"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
PUSHBUTTON "Anuluj",IDCANCEL,170,95,70,14 CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
PUSHBUTTON "Wyloguj",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "Wy³¹cz",IDC_SHUTDOWN,170,76,70,14
LTEXT "Co chcesz teraz zrobiæ?",IDC_STATIC,86,60,87,8 LTEXT "Co chcesz teraz zrobiæ?",IDC_STATIC,86,60,87,8
PUSHBUTTON "Blokada komputera",IDC_LOCK,10,76,70,14 PUSHBUTTON "Blokada komputera",IDC_LOCK,10,76,70,14
PUSHBUTTON "Wyloguj",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "Wy³¹cz",IDC_SHUTDOWN,170,76,70,14
PUSHBUTTON "Mened¿er zadañ",IDC_TASKMGR,90,95,70,14 PUSHBUTTON "Mened¿er zadañ",IDC_TASKMGR,90,95,70,14
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53 PUSHBUTTON "Anuluj",IDCANCEL,170,95,70,14
END END
STRINGTABLE STRINGTABLE

View file

@ -1,10 +1,10 @@
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
#pragma code_page(65001) #pragma code_page(65001)
IDD_STATUSWINDOW_DLG DIALOGEX 0,0,274,26 IDD_STATUSWINDOW_DLG DIALOGEX 0,0,274,26
STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP
CAPTION "Vă rugăm așteptați..." CAPTION "Va rugam a?tepta?i..."
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
LTEXT "",IDC_STATUSLABEL,7,8,234,12,SS_WORDELLIPSIS LTEXT "",IDC_STATUSLABEL,7,8,234,12,SS_WORDELLIPSIS
@ -16,7 +16,7 @@ CAPTION "Bun venit la ReactOS"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
ICON IDI_LOCKICON, -1, 7, 5, 32, 32 ICON IDI_LOCKICON, -1, 7, 5, 32, 32
LTEXT "Apăsați combinația de taste Ctrl-Alt-Del",IDC_STATIC, 38, 10, 144, 14 LTEXT "Apasa?i combina?ia de taste Ctrl-Alt-Del",IDC_STATIC, 38, 10, 144, 14
END END
IDD_LOGGEDOUT_DLG DIALOGEX 0,0,275,147 IDD_LOGGEDOUT_DLG DIALOGEX 0,0,275,147
@ -24,14 +24,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Autentificare" CAPTION "Autentificare"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
LTEXT "Nume utilizator:",IDC_STATIC,36,75,40,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
LTEXT "Parola:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON
PUSHBUTTON "Anulare",IDCANCEL,115,122,50,14 PUSHBUTTON "Anulare",IDCANCEL,115,122,50,14
PUSHBUTTON "Închidere",IDC_SHUTDOWN,179,122,50,14 PUSHBUTTON "Închidere",IDC_SHUTDOWN,179,122,50,14
LTEXT "Nume utilizator:",IDC_STATIC,36,75,40,8
LTEXT "Parolă:",IDC_STATIC,36,93,42,8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
END END
IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116 IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116
@ -39,23 +39,23 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Securitate" CAPTION "Securitate"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
PUSHBUTTON "Anulare",IDCANCEL,170,95,70,14 CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
LTEXT "Ce vre?i sa face?i?",IDC_STATIC,86,60,87,8
PUSHBUTTON "Blocare computer",IDC_LOCK,10,76,70,14
PUSHBUTTON "Deautentificare",IDC_LOGOFF,90,76,70,14 PUSHBUTTON "Deautentificare",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "Închidere",IDC_SHUTDOWN,170,76,70,14 PUSHBUTTON "Închidere",IDC_SHUTDOWN,170,76,70,14
LTEXT "Ce vreți să faceți?",IDC_STATIC,86,60,87,8 PUSHBUTTON "Gestionar activita?i",IDC_TASKMGR,90,95,70,14
PUSHBUTTON "Blocare computer",IDC_LOCK,10,76,70,14 PUSHBUTTON "Anulare",IDCANCEL,170,95,70,14
PUSHBUTTON "Gestionar activități",IDC_TASKMGR,90,95,70,14
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
END END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_LOGGEDOUTSAS "Bun venit!" IDS_LOGGEDOUTSAS "Bun venit!"
IDS_LOCKEDSAS "Computerul este acum blocat." IDS_LOCKEDSAS "Computerul este acum blocat."
IDS_PRESSCTRLALTDELETE "Apăsați Control+Alt+Delete pentru a vă autentifica." IDS_PRESSCTRLALTDELETE "Apasa?i Control+Alt+Delete pentru a va autentifica."
IDS_ASKFORUSER "Nume utilizator: " IDS_ASKFORUSER "Nume utilizator: "
IDS_ASKFORPASSWORD "Parolă: " IDS_ASKFORPASSWORD "Parola: "
IDS_FORCELOGOFF "Această acțiune va închide sesiunea utilizatorului curent și va pierde datele nesalvate de acesta. Sigur continuați?" IDS_FORCELOGOFF "Aceasta ac?iune va închide sesiunea utilizatorului curent ?i va pierde datele nesalvate de acesta. Sigur continua?i?"
END END
#pragma code_page(default) #pragma code_page(default)

View file

@ -24,14 +24,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Âõîä" CAPTION "Âõîä"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
RTEXT "Èìÿ ïîëüçîâàòåëÿ:", IDC_STATIC, 6, 75, 70, 8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
RTEXT "Ïàðîëü:", IDC_STATIC, 6, 93, 70, 8
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
PUSHBUTTON "OK", IDOK, 47, 122, 50, 14, BS_DEFPUSHBUTTON PUSHBUTTON "OK", IDOK, 47, 122, 50, 14, BS_DEFPUSHBUTTON
PUSHBUTTON "Îòìåíà", IDCANCEL, 109, 122, 50, 14 PUSHBUTTON "Îòìåíà", IDCANCEL, 109, 122, 50, 14
PUSHBUTTON "Âûêëþ÷åíèå", IDC_SHUTDOWN, 171, 122, 58, 14 PUSHBUTTON "Âûêëþ÷åíèå", IDC_SHUTDOWN, 171, 122, 58, 14
RTEXT "Èìÿ ïîëüçîâàòåëÿ:", IDC_STATIC, 6, 75, 70, 8
RTEXT "Ïàðîëü:", IDC_STATIC, 6, 93, 70, 8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
END END
IDD_LOGGEDON_DLG DIALOGEX 0, 0, 275, 116 IDD_LOGGEDON_DLG DIALOGEX 0, 0, 275, 116
@ -39,13 +39,13 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Áåçîïàñíîñòü" CAPTION "Áåçîïàñíîñòü"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
PUSHBUTTON "Îòìåíà", IDCANCEL, 198, 95, 70, 14 CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
PUSHBUTTON "Çàâåðøåíèå ñåàíñà", IDC_LOGOFF, 102, 76, 86, 14
PUSHBUTTON "Âûêëþ÷åíèå",IDC_SHUTDOWN, 198, 76, 70, 14
LTEXT "Âûáåðèòå íåîáõîäèìîå äåéñòâèå:", IDC_STATIC, 7, 60, 123, 8 LTEXT "Âûáåðèòå íåîáõîäèìîå äåéñòâèå:", IDC_STATIC, 7, 60, 123, 8
PUSHBUTTON "Çàáëîêèðîâàòü", IDC_LOCK, 7, 76, 86, 14 PUSHBUTTON "Çàáëîêèðîâàòü", IDC_LOCK, 7, 76, 86, 14
PUSHBUTTON "Çàâåðøåíèå ñåàíñà", IDC_LOGOFF, 102, 76, 86, 14
PUSHBUTTON "Âûêëþ÷åíèå",IDC_SHUTDOWN, 198, 76, 70, 14
PUSHBUTTON "Äèñïåò÷åð çàäà÷",IDC_TASKMGR, 102, 95, 86, 14 PUSHBUTTON "Äèñïåò÷åð çàäà÷",IDC_TASKMGR, 102, 95, 86, 14
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53 PUSHBUTTON "Îòìåíà", IDCANCEL, 198, 95, 70, 14
END END
STRINGTABLE STRINGTABLE

View file

@ -26,14 +26,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Prihlásenie" CAPTION "Prihlásenie"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
LTEXT "Meno používate¾a:",IDC_STATIC,18, 75, 64, 8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
LTEXT "Heslo:",IDC_STATIC,56, 93, 24, 8
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON PUSHBUTTON "OK",IDOK,51,122,50,14,BS_DEFPUSHBUTTON
PUSHBUTTON "Zruši<C5A1>",IDCANCEL,115,122,50,14 PUSHBUTTON "Zruši<C5A1>",IDCANCEL,115,122,50,14
PUSHBUTTON "Vypnú<6E>",IDC_SHUTDOWN,179,122,50,14 PUSHBUTTON "Vypnú<6E>",IDC_SHUTDOWN,179,122,50,14
LTEXT "Meno používate¾a:",IDC_STATIC,18, 75, 64, 8
LTEXT "Heslo:",IDC_STATIC,56, 93, 24, 8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
END END
IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116 IDD_LOGGEDON_DLG DIALOGEX 0,0,247,116
@ -41,13 +41,13 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Bezpeènos<6F>" CAPTION "Bezpeènos<6F>"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
PUSHBUTTON "Zruši<C5A1>",IDCANCEL,170,95,70,14 CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
PUSHBUTTON "Odhlási<73>",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "Vypnú<6E>",IDC_SHUTDOWN,170,76,70,14
LTEXT "Èo chcete urobi<62>?",IDC_STATIC,86,60,87,8 LTEXT "Èo chcete urobi<62>?",IDC_STATIC,86,60,87,8
PUSHBUTTON "Uzamknú<6E> poèítaè",IDC_LOCK,10,76,70,14 PUSHBUTTON "Uzamknú<6E> poèítaè",IDC_LOCK,10,76,70,14
PUSHBUTTON "Odhlási<73>",IDC_LOGOFF,90,76,70,14
PUSHBUTTON "Vypnú<6E>",IDC_SHUTDOWN,170,76,70,14
PUSHBUTTON "Správca úloh",IDC_TASKMGR,90,95,70,14 PUSHBUTTON "Správca úloh",IDC_TASKMGR,90,95,70,14
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53 PUSHBUTTON "Zruši<C5A1>",IDCANCEL,170,95,70,14
END END
STRINGTABLE STRINGTABLE

View file

@ -30,14 +30,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Âõ³ä" CAPTION "Âõ³ä"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
LTEXT "Êîðèñòóâà÷:",IDC_STATIC,33, 75, 48, 8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
LTEXT "Ïàðîëü:",IDC_STATIC,48, 93, 34, 8
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
PUSHBUTTON "OK",IDOK,37, 122, 50, 14,BS_DEFPUSHBUTTON PUSHBUTTON "OK",IDOK,37, 122, 50, 14,BS_DEFPUSHBUTTON
PUSHBUTTON "Ñêàñóâàòè",IDCANCEL,93, 122, 50, 14 PUSHBUTTON "Ñêàñóâàòè",IDCANCEL,93, 122, 50, 14
PUSHBUTTON "Çàâåðøåííÿ ðîáîòè...",IDC_SHUTDOWN,148, 122, 86, 14 PUSHBUTTON "Çàâåðøåííÿ ðîáîòè...",IDC_SHUTDOWN,148, 122, 86, 14
LTEXT "Êîðèñòóâà÷:",IDC_STATIC,33, 75, 48, 8
LTEXT "Ïàðîëü:",IDC_STATIC,48, 93, 34, 8
EDITTEXT IDC_USERNAME,84,72,119,14,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWORD,84,91,119,14,ES_AUTOHSCROLL | ES_PASSWORD
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,275,59
END END
IDD_LOGGEDON_DLG DIALOGEX 0, 0, 257, 116 IDD_LOGGEDON_DLG DIALOGEX 0, 0, 257, 116
@ -45,13 +45,13 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
CAPTION "Áåçïåêà" CAPTION "Áåçïåêà"
FONT 8,"MS Shell Dlg",400,0,1 FONT 8,"MS Shell Dlg",400,0,1
BEGIN BEGIN
PUSHBUTTON "Ñêàñóâàòè",IDCANCEL, 165, 95, 86, 14 CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
PUSHBUTTON "Âèõ³ä ³ç ñèñòåìè...",IDC_LOGOFF, 80, 76, 80, 14
PUSHBUTTON "Çàâåðøåííÿ ðîáîòè...",IDC_SHUTDOWN, 165, 76, 86, 14
LTEXT "Ùî Âè õî÷åòå çðîáèòè?",IDC_STATIC, 86, 60, 87, 8 LTEXT "Ùî Âè õî÷åòå çðîáèòè?",IDC_STATIC, 86, 60, 87, 8
PUSHBUTTON "Áëîêóâàííÿ",IDC_LOCK, 6, 76, 70, 14 PUSHBUTTON "Áëîêóâàííÿ",IDC_LOCK, 6, 76, 70, 14
PUSHBUTTON "Âèõ³ä ³ç ñèñòåìè...",IDC_LOGOFF, 80, 76, 80, 14
PUSHBUTTON "Çàâåðøåííÿ ðîáîòè...",IDC_SHUTDOWN, 165, 76, 86, 14
PUSHBUTTON "Äèñïåò÷åð çàâäàíü",IDC_TASKMGR, 80, 95, 80, 14 PUSHBUTTON "Äèñïåò÷åð çàâäàíü",IDC_TASKMGR, 80, 95, 80, 14
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53 PUSHBUTTON "Ñêàñóâàòè",IDCANCEL, 165, 95, 86, 14
END END
STRINGTABLE STRINGTABLE

View file

@ -415,8 +415,9 @@ DoLoginTasks(
IN PWSTR Password) IN PWSTR Password)
{ {
LPWSTR ProfilePath = NULL; LPWSTR ProfilePath = NULL;
LPWSTR lpEnvironment = NULL;
TOKEN_STATISTICS Stats; TOKEN_STATISTICS Stats;
PWLX_PROFILE_V1_0 pProfile = NULL; PWLX_PROFILE_V2_0 pProfile = NULL;
DWORD cbStats, cbSize; DWORD cbStats, cbSize;
BOOL bResult; BOOL bResult;
@ -449,15 +450,25 @@ DoLoginTasks(
} }
/* Allocate memory for profile */ /* Allocate memory for profile */
pProfile = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WLX_PROFILE_V1_0)); pProfile = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WLX_PROFILE_V2_0));
if (!pProfile) if (!pProfile)
{ {
WARN("HeapAlloc() failed\n"); WARN("HeapAlloc() failed\n");
goto cleanup; goto cleanup;
} }
pProfile->dwType = WLX_PROFILE_TYPE_V1_0; pProfile->dwType = WLX_PROFILE_TYPE_V2_0;
pProfile->pszProfile = ProfilePath; pProfile->pszProfile = ProfilePath;
lpEnvironment = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 32 * sizeof(WCHAR));
if (!lpEnvironment)
{
WARN("HeapAlloc() failed\n");
goto cleanup;
}
wcscpy(lpEnvironment, L"LOGONSERVER=\\\\Test");
pProfile->pszEnvironment = lpEnvironment;
if (!GetTokenInformation(pgContext->UserToken, if (!GetTokenInformation(pgContext->UserToken,
TokenStatistics, TokenStatistics,
(PVOID)&Stats, (PVOID)&Stats,
@ -467,6 +478,7 @@ DoLoginTasks(
WARN("Couldn't get Authentication id from user token!\n"); WARN("Couldn't get Authentication id from user token!\n");
goto cleanup; goto cleanup;
} }
*pgContext->pAuthenticationId = Stats.AuthenticationId; *pgContext->pAuthenticationId = Stats.AuthenticationId;
pgContext->pMprNotifyInfo->pszUserName = DuplicationString(UserName); pgContext->pMprNotifyInfo->pszUserName = DuplicationString(UserName);
pgContext->pMprNotifyInfo->pszDomain = DuplicationString(Domain); pgContext->pMprNotifyInfo->pszDomain = DuplicationString(Domain);
@ -477,6 +489,10 @@ DoLoginTasks(
return TRUE; return TRUE;
cleanup: cleanup:
if (pProfile)
{
HeapFree(GetProcessHeap(), 0, pProfile->pszEnvironment);
}
HeapFree(GetProcessHeap(), 0, pProfile); HeapFree(GetProcessHeap(), 0, pProfile);
HeapFree(GetProcessHeap(), 0, ProfilePath); HeapFree(GetProcessHeap(), 0, ProfilePath);
return FALSE; return FALSE;

View file

@ -21,12 +21,11 @@ END
IDD_STATUS DIALOGEX DISCARDABLE 0, 0, 200, 280 IDD_STATUS DIALOGEX DISCARDABLE 0, 0, 200, 280
STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Allgemein" CAPTION "Generale"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
END END
IDD_LAN_NETSTATUS DIALOGEX DISCARDABLE 0, 0, 200,180 IDD_LAN_NETSTATUS DIALOGEX DISCARDABLE 0, 0, 200,180
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
CAPTION "Generale" CAPTION "Generale"
@ -74,10 +73,10 @@ END
IDD_LAN_NETSTATUSDETAILS DIALOGEX DISCARDABLE 0, 0, 200,200 IDD_LAN_NETSTATUSDETAILS DIALOGEX DISCARDABLE 0, 0, 200,200
STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION
CAPTION "Network Connection Details" CAPTION "Dettagli della connessione di rete"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
LTEXT "Network Connection &Details:", -1, 15, 9, 170, 12 LTEXT "Dettagli della connessione di &rete:", -1, 15, 9, 170, 12
CONTROL "", IDC_DETAILS, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP, 15, 25, 170, 130 CONTROL "", IDC_DETAILS, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP, 15, 25, 170, 130
PUSHBUTTON "&Close", IDC_CLOSE, 125, 165, 62, 14 PUSHBUTTON "&Close", IDC_CLOSE, 125, 165, 62, 14
END END
@ -90,7 +89,7 @@ BEGIN
IDS_DEF_GATEWAY "Default Gateway" IDS_DEF_GATEWAY "Default Gateway"
IDS_DHCP_SERVER "DHCP Server" IDS_DHCP_SERVER "DHCP Server"
IDS_LEASE_OBTAINED "Indirizzo ottenuto" IDS_LEASE_OBTAINED "Indirizzo ottenuto"
IDS_LEASE_EXPIRES "Indirizzo con scadenza" IDS_LEASE_EXPIRES "Scadenza indirizzo"
IDS_DNS_SERVERS "DNS Servers" IDS_DNS_SERVERS "DNS Servers"
IDS_WINS_SERVERS "WINS Servers" IDS_WINS_SERVERS "WINS Servers"
IDS_PROPERTY "Proprietà" IDS_PROPERTY "Proprietà"
@ -116,6 +115,7 @@ BEGIN
IDS_NET_REPAIR "Ripara" IDS_NET_REPAIR "Ripara"
IDS_NET_CREATELINK "Crea collegamento" IDS_NET_CREATELINK "Crea collegamento"
IDS_NET_DELETE "Cancella" IDS_NET_DELETE "Cancella"
IDS_NET_RENAME "Rinomina"
IDS_NET_PROPERTIES "Proprietà" IDS_NET_PROPERTIES "Proprietà"
IDS_FORMAT_BIT "%u Bit/s" IDS_FORMAT_BIT "%u Bit/s"

View file

@ -472,8 +472,6 @@ OPENGL32_LoadICD( LPCWSTR driver )
{ {
if (!_wcsicmp( driver, icd->driver_name )) /* found */ if (!_wcsicmp( driver, icd->driver_name )) /* found */
{ {
icd->refcount++;
/* release mutex */ /* release mutex */
if (!ReleaseMutex( OPENGL32_processdata.driver_mutex )) if (!ReleaseMutex( OPENGL32_processdata.driver_mutex ))
DBGPRINT( "Error: ReleaseMutex() failed (%d)", GetLastError() ); DBGPRINT( "Error: ReleaseMutex() failed (%d)", GetLastError() );
@ -484,8 +482,6 @@ OPENGL32_LoadICD( LPCWSTR driver )
/* not found - try to load */ /* not found - try to load */
icd = OPENGL32_LoadDriver( driver ); icd = OPENGL32_LoadDriver( driver );
if (icd != NULL)
icd->refcount = 1;
/* release mutex */ /* release mutex */
if (!ReleaseMutex( OPENGL32_processdata.driver_mutex )) if (!ReleaseMutex( OPENGL32_processdata.driver_mutex ))
@ -513,7 +509,7 @@ OPENGL32_UnloadICD( GLDRIVERDATA *icd )
return FALSE; /* FIXME: do we have to expect such an error and handle it? */ return FALSE; /* FIXME: do we have to expect such an error and handle it? */
} }
if (--icd->refcount == 0) if (icd->refcount == 0)
ret = OPENGL32_UnloadDriver( icd ); ret = OPENGL32_UnloadDriver( icd );
/* release mutex */ /* release mutex */

View file

@ -191,6 +191,7 @@ extern GLPROCESSDATA OPENGL32_processdata;
GLDRIVERDATA *OPENGL32_LoadICD( LPCWSTR driver ); GLDRIVERDATA *OPENGL32_LoadICD( LPCWSTR driver );
BOOL OPENGL32_UnloadICD( GLDRIVERDATA *icd ); BOOL OPENGL32_UnloadICD( GLDRIVERDATA *icd );
BOOL APIENTRY rosglMakeCurrent( HDC hdc, HGLRC hglrc ); BOOL APIENTRY rosglMakeCurrent( HDC hdc, HGLRC hglrc );
int APIENTRY rosglGetPixelFormat( HDC );
BOOL APIENTRY IntUseFontBitmapsA( HDC hDC, DWORD first, DWORD count, DWORD listBase ); BOOL APIENTRY IntUseFontBitmapsA( HDC hDC, DWORD first, DWORD count, DWORD listBase );
BOOL APIENTRY IntUseFontBitmapsW( HDC hDC, DWORD first, DWORD count, DWORD listBase ); BOOL APIENTRY IntUseFontBitmapsW( HDC hDC, DWORD first, DWORD count, DWORD listBase );
BOOL APIENTRY IntUseFontOutlinesA( HDC hDC, DWORD first, DWORD count, DWORD listBase, BOOL APIENTRY IntUseFontOutlinesA( HDC hDC, DWORD first, DWORD count, DWORD listBase,

View file

@ -179,8 +179,11 @@ BOOL
ROSGL_DeleteContext( GLRC *glrc ) ROSGL_DeleteContext( GLRC *glrc )
{ {
/* unload icd */ /* unload icd */
if (glrc->icd != NULL) if ((glrc->icd != NULL) && !(InterlockedDecrement((LONG*)&glrc->icd->refcount)))
{
/* This is the last context, remove the ICD */
ROSGL_DeleteDCDataForICD( glrc->icd ); ROSGL_DeleteDCDataForICD( glrc->icd );
}
/* remove from list */ /* remove from list */
ROSGL_RemoveContext( glrc ); ROSGL_RemoveContext( glrc );
@ -269,7 +272,7 @@ ROSGL_GetPrivateDCData( HDC hdc )
data = OPENGL32_processdata.dcdata_list; data = OPENGL32_processdata.dcdata_list;
while (data != NULL) while (data != NULL)
{ {
if (data->hdc == hdc) /* found */ if ((data->hdc == hdc) || (WindowFromDC(data->hdc) == WindowFromDC(hdc))) /* found */
break; break;
data = data->next; data = data->next;
} }
@ -413,7 +416,7 @@ ROSGL_ICDForHDC( HDC hdc )
NULL) != NULL) NULL) != NULL)
{ {
/* Too bad, somebody else was faster... */ /* Too bad, somebody else was faster... */
OPENGL32_UnloadICD(drvdata); DBGTRACE("Uh, Someone beat you to it!\n");
} }
} }
} }
@ -686,6 +689,16 @@ rosglCreateLayerContext( HDC hdc, int layer )
/* FIXME: fallback? */ /* FIXME: fallback? */
return NULL; return NULL;
} }
/* Don't forget to refcount it, icd will be released when last context is deleted */
InterlockedIncrement((LONG*)&icd->refcount);
if(!rosglGetPixelFormat(hdc))
{
ROSGL_DeleteContext(glrc);
SetLastError(ERROR_INVALID_PIXEL_FORMAT);
return NULL;
}
/* create context */ /* create context */
if (icd->DrvCreateLayerContext != NULL) if (icd->DrvCreateLayerContext != NULL)
@ -989,6 +1002,12 @@ rosglMakeCurrent( HDC hdc, HGLRC hglrc )
glrc->is_current = FALSE; glrc->is_current = FALSE;
OPENGL32_threaddata->glrc = NULL; OPENGL32_threaddata->glrc = NULL;
} }
else if ((GetObjectType(hdc) != OBJ_DC) && (GetObjectType(hdc) != OBJ_MEMDC))
{
DBGPRINT("Current context is NULL and requested HDC is invalid.\n");
SetLastError(ERROR_INVALID_HANDLE);
return FALSE;
}
} }
else else
{ {

View file

@ -1,6 +1,6 @@
/* FILE: dll/win32/shell32/lang/cs-CZ.rc /* FILE: dll/win32/shell32/lang/cs-CZ.rc
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com) * TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
* UPDATED: 2010-04-05 * UPDATED: 2010-05-06
* THANKS TO: navaraf, who translated major part of this file * THANKS TO: navaraf, who translated major part of this file
*/ */
@ -739,5 +739,5 @@ BEGIN
IDS_DEFAULT_CLUSTER_SIZE "Výchozí alokaèní velikost" IDS_DEFAULT_CLUSTER_SIZE "Výchozí alokaèní velikost"
IDS_COPY_OF "Kopie " IDS_COPY_OF "Kopie "
IDS_SHLEXEC_NOASSOC "There is no Windows program configured to open this type of file." IDS_SHLEXEC_NOASSOC "Pro otevření tohoto souboru není nakonfigurován žádný program."
END END

View file

@ -753,5 +753,5 @@ BEGIN
IDS_DEFAULT_CLUSTER_SIZE "Dimensione predefinita di allocazione" IDS_DEFAULT_CLUSTER_SIZE "Dimensione predefinita di allocazione"
IDS_COPY_OF "Copia di" IDS_COPY_OF "Copia di"
IDS_SHLEXEC_NOASSOC "There is no Windows program configured to open this type of file." IDS_SHLEXEC_NOASSOC "Non c'è un programma configurato per aprire questo tipo di file."
END END

View file

@ -315,9 +315,6 @@ static PIDLCPanelStruct* _ILGetCPanelPointer(LPCITEMIDLIST pidl)
return NULL; return NULL;
} }
/**************************************************************************
* ISF_ControlPanel_fnEnumObjects
*/
static BOOL SHELL_RegisterCPanelApp(IEnumIDList* list, LPCSTR path) static BOOL SHELL_RegisterCPanelApp(IEnumIDList* list, LPCSTR path)
{ {
LPITEMIDLIST pidl; LPITEMIDLIST pidl;
@ -1346,7 +1343,7 @@ static HRESULT WINAPI ICPanel_IContextMenu2_InvokeCommand(
} }
else else
{ {
FIXME("\n"); FIXME("Couldn't retrieve pointer to cpl structure\n");
return E_FAIL; return E_FAIL;
} }
if (SUCCEEDED(IShellLink_Constructor(NULL, &IID_IShellLinkA, (LPVOID*)&isl))) if (SUCCEEDED(IShellLink_Constructor(NULL, &IID_IShellLinkA, (LPVOID*)&isl)))

View file

@ -1511,6 +1511,7 @@ static LRESULT ShellView_OnNotify(IShellViewImpl * This, UINT CtlID, LPNMHDR lpn
msg.pt = 0;*/ msg.pt = 0;*/
LPNMLVKEYDOWN plvKeyDown = (LPNMLVKEYDOWN) lpnmh; LPNMLVKEYDOWN plvKeyDown = (LPNMLVKEYDOWN) lpnmh;
SHORT ctrl = GetKeyState(VK_CONTROL) & 0x8000;
/* initiate a rename of the selected file or directory */ /* initiate a rename of the selected file or directory */
if(plvKeyDown->wVKey == VK_F2) if(plvKeyDown->wVKey == VK_F2)
@ -1591,6 +1592,14 @@ static LRESULT ShellView_OnNotify(IShellViewImpl * This, UINT CtlID, LPNMHDR lpn
IShellBrowser_BrowseObject(lpSb, NULL, SBSP_PARENT); IShellBrowser_BrowseObject(lpSb, NULL, SBSP_PARENT);
} }
} }
else if(plvKeyDown->wVKey == 'C' && ctrl)
{
FIXME("Need to copy\n");
}
else if(plvKeyDown->wVKey == 'V' && ctrl)
{
FIXME("Need to paste\n");
}
else else
FIXME("LVN_KEYDOWN key=0x%08x\n",plvKeyDown->wVKey); FIXME("LVN_KEYDOWN key=0x%08x\n",plvKeyDown->wVKey);
} }

View file

@ -439,13 +439,16 @@ CreateEnvironmentBlock(LPVOID *lpEnvironment,
FALSE); FALSE);
} }
/* Set user environment variables */ /* Set user environment variables */
SetUserEnvironment(lpEnvironment, SetUserEnvironment(lpEnvironment,
hKeyUser, hKeyUser,
L"Environment"); L"Environment");
/* Set user volatile environment variables */
SetUserEnvironment(lpEnvironment,
hKeyUser,
L"Volatile Environment");
RegCloseKey(hKeyUser); RegCloseKey(hKeyUser);
return TRUE; return TRUE;

View file

@ -26,10 +26,38 @@
#include "tdiconn.h" #include "tdiconn.h"
#include "debug.h" #include "debug.h"
static BOOLEAN CantReadMore( PAFD_FCB FCB ) { static NTSTATUS RefillSocketBuffer( PAFD_FCB FCB ) {
UINT BytesAvailable = FCB->Recv.Content - FCB->Recv.BytesUsed; NTSTATUS Status = STATUS_PENDING;
return !BytesAvailable; if( !FCB->ReceiveIrp.InFlightRequest ) {
AFD_DbgPrint(MID_TRACE,("Replenishing buffer\n"));
Status = TdiReceive( &FCB->ReceiveIrp.InFlightRequest,
FCB->Connection.Object,
TDI_RECEIVE_NORMAL,
FCB->Recv.Window,
FCB->Recv.Size,
&FCB->ReceiveIrp.Iosb,
ReceiveComplete,
FCB );
if( ( Status == STATUS_SUCCESS && !FCB->ReceiveIrp.Iosb.Information ) ||
( !NT_SUCCESS( Status ) ) )
{
/* The socket has been closed */
FCB->PollState |= AFD_EVENT_DISCONNECT;
FCB->Overread = TRUE;
Status = STATUS_FILE_CLOSED;
}
else if( Status == STATUS_SUCCESS )
{
FCB->Recv.Content = FCB->ReceiveIrp.Iosb.Information;
FCB->PollState |= AFD_EVENT_RECEIVE;
}
PollReeval( FCB->DeviceExt, FCB->FileObject );
}
return Status;
} }
static NTSTATUS TryToSatisfyRecvRequestFromBuffer( PAFD_FCB FCB, static NTSTATUS TryToSatisfyRecvRequestFromBuffer( PAFD_FCB FCB,
@ -46,7 +74,22 @@ static NTSTATUS TryToSatisfyRecvRequestFromBuffer( PAFD_FCB FCB,
AFD_DbgPrint(MID_TRACE,("Called, BytesAvailable = %d\n", AFD_DbgPrint(MID_TRACE,("Called, BytesAvailable = %d\n",
BytesAvailable)); BytesAvailable));
if( CantReadMore(FCB) ) return STATUS_PENDING; if( FCB->Overread ) return STATUS_FILE_CLOSED;
if( !BytesAvailable ) {
FCB->Recv.Content = FCB->Recv.BytesUsed = 0;
Status = RefillSocketBuffer( FCB );
if ( Status != STATUS_SUCCESS )
return Status;
/* If RefillSocketBuffer returns STATUS_SUCCESS, we're good to go
* If RefillSocketBuffer returns STATUS_PENDING, then it's waiting on the transport for data
* If RefillSocketBuffer returns STATUS_FILE_CLOSED, then the connection was terminated
*/
/* Recalculate BytesAvailable based on new data */
BytesAvailable = FCB->Recv.Content - FCB->Recv.BytesUsed;
ASSERT(BytesAvailable);
}
Map = (PAFD_MAPBUF)(RecvReq->BufferArray + RecvReq->BufferCount); Map = (PAFD_MAPBUF)(RecvReq->BufferArray + RecvReq->BufferCount);
@ -88,23 +131,8 @@ static NTSTATUS TryToSatisfyRecvRequestFromBuffer( PAFD_FCB FCB,
if( FCB->Recv.BytesUsed == FCB->Recv.Content ) { if( FCB->Recv.BytesUsed == FCB->Recv.Content ) {
FCB->Recv.BytesUsed = FCB->Recv.Content = 0; FCB->Recv.BytesUsed = FCB->Recv.Content = 0;
FCB->PollState &= ~AFD_EVENT_RECEIVE; FCB->PollState &= ~AFD_EVENT_RECEIVE;
PollReeval( FCB->DeviceExt, FCB->FileObject );
if( !FCB->ReceiveIrp.InFlightRequest ) { RefillSocketBuffer( FCB );
AFD_DbgPrint(MID_TRACE,("Replenishing buffer\n"));
Status = TdiReceive( &FCB->ReceiveIrp.InFlightRequest,
FCB->Connection.Object,
TDI_RECEIVE_NORMAL,
FCB->Recv.Window,
FCB->Recv.Size,
&FCB->ReceiveIrp.Iosb,
ReceiveComplete,
FCB );
if( Status == STATUS_SUCCESS )
FCB->Recv.Content = FCB->ReceiveIrp.Iosb.Information;
}
} }
return STATUS_SUCCESS; return STATUS_SUCCESS;
@ -159,7 +187,7 @@ static NTSTATUS ReceiveActivity( PAFD_FCB FCB, PIRP Irp ) {
} }
} }
if( !CantReadMore(FCB) ) { if( !FCB->Recv.Content ) {
FCB->PollState |= AFD_EVENT_RECEIVE; FCB->PollState |= AFD_EVENT_RECEIVE;
} else } else
FCB->PollState &= ~AFD_EVENT_RECEIVE; FCB->PollState &= ~AFD_EVENT_RECEIVE;

View file

@ -1457,6 +1457,20 @@ dev_mgr_register_hcd(PUSB_DEV_MANAGER dev_mgr, PHCD hcd)
return dev_mgr->hcd_count - 1; return dev_mgr->hcd_count - 1;
} }
VOID
dev_mgr_deregister_hcd(PUSB_DEV_MANAGER dev_mgr, UCHAR hcd_id)
{
UCHAR i;
if (dev_mgr == NULL || hcd_id >= MAX_HCDS - 1)
return;
for (i = hcd_id; i < dev_mgr->hcd_count - 1; i++)
dev_mgr->hcd_array[i] = dev_mgr->hcd_array[i + 1];
dev_mgr->hcd_count--;
}
BOOLEAN BOOLEAN
dev_mgr_register_irp(PUSB_DEV_MANAGER dev_mgr, PIRP pirp, PURB purb) dev_mgr_register_irp(PUSB_DEV_MANAGER dev_mgr, PIRP pirp, PURB purb)
{ {

View file

@ -208,6 +208,12 @@ PUSB_DEV_MANAGER dev_mgr,
PHCD hcd PHCD hcd
); );
VOID
dev_mgr_deregister_hcd(
PUSB_DEV_MANAGER dev_mgr,
UCHAR hcd_id
);
NTSTATUS NTSTATUS
dev_mgr_dispatch( dev_mgr_dispatch(
IN PUSB_DEV_MANAGER dev_mgr, IN PUSB_DEV_MANAGER dev_mgr,

View file

@ -58,15 +58,7 @@
#define endp_mult_count( endp ) ( ( ( endp->pusb_endp_desc->wMaxPacketSize & 0x1800 ) >> 11 ) + 1 ) #define endp_mult_count( endp ) ( ( ( endp->pusb_endp_desc->wMaxPacketSize & 0x1800 ) >> 11 ) + 1 )
#if 0 #define release_adapter( padapTER ) HalPutDmaAdapter(padapTER)
/* WTF?! */
#define release_adapter( padapTER ) \
{\
( ( padapTER ) ); \
}
#else
#define release_adapter( padapTER ) (void)(padapTER)
#endif
#define get_int_idx( _urb, _idx ) \ #define get_int_idx( _urb, _idx ) \
{\ {\
@ -279,7 +271,7 @@ ehci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
BOOLEAN ehci_init_schedule(PEHCI_DEV ehci, PADAPTER_OBJECT padapter); BOOLEAN ehci_init_schedule(PEHCI_DEV ehci, PADAPTER_OBJECT padapter);
BOOLEAN ehci_release(PDEVICE_OBJECT pdev); BOOLEAN ehci_release(PDEVICE_OBJECT pdev, PUSB_DEV_MANAGER dev_mgr);
static VOID ehci_stop(PEHCI_DEV ehci); static VOID ehci_stop(PEHCI_DEV ehci);
@ -321,7 +313,7 @@ PDEVICE_OBJECT ehci_probe(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, PUS
PDEVICE_OBJECT ehci_create_device(PDRIVER_OBJECT drvr_obj, PUSB_DEV_MANAGER dev_mgr); PDEVICE_OBJECT ehci_create_device(PDRIVER_OBJECT drvr_obj, PUSB_DEV_MANAGER dev_mgr);
BOOLEAN ehci_delete_device(PDEVICE_OBJECT pdev); BOOLEAN ehci_delete_device(PDEVICE_OBJECT pdev, PUSB_DEV_MANAGER dev_mgr);
VOID ehci_get_capabilities(PEHCI_DEV ehci, PBYTE base); VOID ehci_get_capabilities(PEHCI_DEV ehci, PBYTE base);
@ -3374,7 +3366,7 @@ ehci_hcd_release(PHCD hcd)
ehci = ehci_from_hcd(hcd); ehci = ehci_from_hcd(hcd);
pdev_ext = ehci->pdev_ext; pdev_ext = ehci->pdev_ext;
return ehci_release(pdev_ext->pdev_obj); return ehci_release(pdev_ext->pdev_obj, hcd->dev_mgr);
} }
NTSTATUS NTSTATUS
@ -3461,18 +3453,19 @@ ehci_probe(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, PUSB_DEV_MANAGER d
PDEVICE_OBJECT pdev; PDEVICE_OBJECT pdev;
BYTE buffer[sizeof(PCI_COMMON_CONFIG)]; BYTE buffer[sizeof(PCI_COMMON_CONFIG)];
PEHCI_DEVICE_EXTENSION pdev_ext; PEHCI_DEVICE_EXTENSION pdev_ext;
LONG count = 0;
slot_num.u.AsULONG = 0; slot_num.u.AsULONG = 0;
pci_config = (PPCI_COMMON_CONFIG) buffer; pci_config = (PPCI_COMMON_CONFIG) buffer;
pdev = NULL; pdev = NULL;
//scan the bus to find ehci controller //scan the PCI buses to find ehci controller
for(bus = 0; bus < 3; bus++) /* enum bus0-bus2 */ for (bus = 0; bus <= PCI_MAX_BRIDGE_NUMBER; bus++) //Yes, it should be <=
{ {
for(i = 0; i < PCI_MAX_DEVICES; i++) for(i = 0; i <= PCI_MAX_DEVICES; i++)
{ {
slot_num.u.bits.DeviceNumber = i; slot_num.u.bits.DeviceNumber = i;
for(j = 0; j < PCI_MAX_FUNCTIONS; j++) for(j = 0; j <= PCI_MAX_FUNCTION; j++)
{ {
slot_num.u.bits.FunctionNumber = j; slot_num.u.bits.FunctionNumber = j;
@ -3490,9 +3483,12 @@ ehci_probe(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, PUSB_DEV_MANAGER d
{ {
//well, we find our usb host controller( EHCI ), create device //well, we find our usb host controller( EHCI ), create device
pdev = ehci_alloc(drvr_obj, reg_path, ((bus << 8) | (i << 3) | j), dev_mgr); pdev = ehci_alloc(drvr_obj, reg_path, ((bus << 8) | (i << 3) | j), dev_mgr);
if (pdev)
if (!pdev) #ifdef _MULTI_EHCI
continue; count++;
#else
goto LBL_LOOPOUT;
#endif
} }
} }
@ -3501,6 +3497,11 @@ ehci_probe(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, PUSB_DEV_MANAGER d
} }
} }
#ifndef _MULTI_EHCI
LBL_LOOPOUT:
#endif
DbgPrint("Found %d EHCI controllers\n", count);
if (pdev) if (pdev)
{ {
pdev_ext = pdev->DeviceExtension; pdev_ext = pdev->DeviceExtension;
@ -3564,7 +3565,7 @@ ehci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
if (pdev_ext->padapter == NULL) if (pdev_ext->padapter == NULL)
{ {
//fatal error //fatal error
ehci_delete_device(pdev); ehci_delete_device(pdev, dev_mgr);
return NULL; return NULL;
} }
@ -3583,7 +3584,7 @@ ehci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
DbgPrint("ehci_alloc(): error assign slot res, 0x%x\n", status); DbgPrint("ehci_alloc(): error assign slot res, 0x%x\n", status);
release_adapter(pdev_ext->padapter); release_adapter(pdev_ext->padapter);
pdev_ext->padapter = NULL; pdev_ext->padapter = NULL;
ehci_delete_device(pdev); ehci_delete_device(pdev, dev_mgr);
return NULL; return NULL;
} }
@ -3618,7 +3619,7 @@ ehci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
DbgPrint("ehci_alloc(): error, can not translate bus address\n"); DbgPrint("ehci_alloc(): error, can not translate bus address\n");
release_adapter(pdev_ext->padapter); release_adapter(pdev_ext->padapter);
pdev_ext->padapter = NULL; pdev_ext->padapter = NULL;
ehci_delete_device(pdev); ehci_delete_device(pdev, dev_mgr);
return NULL; return NULL;
} }
@ -3637,7 +3638,7 @@ ehci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
{ {
release_adapter(pdev_ext->padapter); release_adapter(pdev_ext->padapter);
pdev_ext->padapter = NULL; pdev_ext->padapter = NULL;
ehci_delete_device(pdev); ehci_delete_device(pdev, dev_mgr);
return NULL; return NULL;
} }
} }
@ -3662,7 +3663,7 @@ ehci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
{ {
release_adapter(pdev_ext->padapter); release_adapter(pdev_ext->padapter);
pdev_ext->padapter = NULL; pdev_ext->padapter = NULL;
ehci_delete_device(pdev); ehci_delete_device(pdev, dev_mgr);
return NULL; return NULL;
} }
@ -3691,7 +3692,7 @@ ehci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
affinity, FALSE) //No float save affinity, FALSE) //No float save
!= STATUS_SUCCESS) != STATUS_SUCCESS)
{ {
ehci_release(pdev); ehci_release(pdev, dev_mgr);
return NULL; return NULL;
} }
@ -4016,7 +4017,7 @@ ehci_get_capabilities(PEHCI_DEV ehci, PBYTE base)
} }
BOOLEAN BOOLEAN
ehci_delete_device(PDEVICE_OBJECT pdev) ehci_delete_device(PDEVICE_OBJECT pdev, PUSB_DEV_MANAGER dev_mgr)
{ {
STRING string; STRING string;
UNICODE_STRING symb_name; UNICODE_STRING symb_name;
@ -4036,6 +4037,8 @@ ehci_delete_device(PDEVICE_OBJECT pdev)
IoDeleteSymbolicLink(&symb_name); IoDeleteSymbolicLink(&symb_name);
RtlFreeUnicodeString(&symb_name); RtlFreeUnicodeString(&symb_name);
dev_mgr_deregister_hcd(dev_mgr, pdev_ext->ehci->hcd_interf.hcd_get_id(&pdev_ext->ehci->hcd_interf));
if (pdev_ext->res_list) if (pdev_ext->res_list)
ExFreePool(pdev_ext->res_list); // not allocated by usb_alloc_mem ExFreePool(pdev_ext->res_list); // not allocated by usb_alloc_mem
@ -4061,7 +4064,7 @@ ehci_stop(PEHCI_DEV ehci)
} }
BOOLEAN BOOLEAN
ehci_release(PDEVICE_OBJECT pdev) ehci_release(PDEVICE_OBJECT pdev, PUSB_DEV_MANAGER dev_mgr)
{ {
PEHCI_DEVICE_EXTENSION pdev_ext; PEHCI_DEVICE_EXTENSION pdev_ext;
PEHCI_DEV ehci; PEHCI_DEV ehci;
@ -4094,7 +4097,7 @@ ehci_release(PDEVICE_OBJECT pdev)
release_adapter(pdev_ext->padapter); release_adapter(pdev_ext->padapter);
pdev_ext->padapter = NULL; pdev_ext->padapter = NULL;
ehci_delete_device(pdev); ehci_delete_device(pdev, dev_mgr);
return FALSE; return FALSE;

View file

@ -65,15 +65,7 @@ extern PDEVICE_OBJECT ehci_probe(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_pa
: enDP->pusb_endp_desc->wMaxPacketSize ) : enDP->pusb_endp_desc->wMaxPacketSize )
#if 0 #define release_adapter( padapTER ) HalPutDmaAdapter(padapTER)
/* WTF?! */
#define release_adapter( padapTER ) \
{\
( ( padapTER ) ); \
}
#else
#define release_adapter( padapTER ) (void)(padapTER)
#endif
#define get_int_idx( _urb, _idx ) \ #define get_int_idx( _urb, _idx ) \
{\ {\
@ -110,7 +102,7 @@ uhci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
BOOLEAN uhci_init_schedule(PUHCI_DEV uhci, PADAPTER_OBJECT padapter); BOOLEAN uhci_init_schedule(PUHCI_DEV uhci, PADAPTER_OBJECT padapter);
BOOLEAN uhci_release(PDEVICE_OBJECT pdev); BOOLEAN uhci_release(PDEVICE_OBJECT pdev, PUSB_DEV_MANAGER dev_mgr);
static VOID uhci_stop(PUHCI_DEV uhci); static VOID uhci_stop(PUHCI_DEV uhci);
@ -473,7 +465,7 @@ uhci_create_device(PDRIVER_OBJECT drvr_obj, PUSB_DEV_MANAGER dev_mgr)
} }
BOOLEAN BOOLEAN
uhci_delete_device(PDEVICE_OBJECT pdev) uhci_delete_device(PDEVICE_OBJECT pdev, PUSB_DEV_MANAGER dev_mgr)
{ {
STRING string; STRING string;
UNICODE_STRING symb_name; UNICODE_STRING symb_name;
@ -493,6 +485,8 @@ uhci_delete_device(PDEVICE_OBJECT pdev)
IoDeleteSymbolicLink(&symb_name); IoDeleteSymbolicLink(&symb_name);
RtlFreeUnicodeString(&symb_name); RtlFreeUnicodeString(&symb_name);
dev_mgr_deregister_hcd(dev_mgr, pdev_ext->uhci->hcd_interf.hcd_get_id(&pdev_ext->uhci->hcd_interf));
if (pdev_ext->res_list) if (pdev_ext->res_list)
ExFreePool(pdev_ext->res_list); // not allocated by usb_alloc_mem ExFreePool(pdev_ext->res_list); // not allocated by usb_alloc_mem
@ -626,13 +620,13 @@ uhci_probe(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, PUSB_DEV_MANAGER d
count = 0; count = 0;
pdev = NULL; pdev = NULL;
//scan the bus to find uhci controller //scan the PCI buses to find uhci controller
for(bus = 0; bus < 3; bus++) /* enum bus0-bus2 */ for (bus = 0; bus <= PCI_MAX_BRIDGE_NUMBER; bus++)
{ {
for(i = 0; i < PCI_MAX_DEVICES; i++) for(i = 0; i <= PCI_MAX_DEVICES; i++)
{ {
slot_num.u.bits.DeviceNumber = i; slot_num.u.bits.DeviceNumber = i;
for(j = 0; j < PCI_MAX_FUNCTIONS; j++) for(j = 0; j <= PCI_MAX_FUNCTION; j++)
{ {
slot_num.u.bits.FunctionNumber = j; slot_num.u.bits.FunctionNumber = j;
@ -645,18 +639,15 @@ uhci_probe(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, PUSB_DEV_MANAGER d
if (ret == 2) /*no device on the slot */ if (ret == 2) /*no device on the slot */
break; break;
if (pci_config->BaseClass == 0x0c && pci_config->SubClass == 0x03) if (pci_config->BaseClass == 0x0c && pci_config->SubClass == 0x03 &&
pci_config->ProgIf == 0x00)
{ {
// well, we find our usb host controller, create device // well, we find our usb host controller, create device
#ifdef _MULTI_UHCI
{
pdev = uhci_alloc(drvr_obj, reg_path, ((bus << 8) | (i << 3) | j), dev_mgr);
if (pdev)
count++;
}
#else
pdev = uhci_alloc(drvr_obj, reg_path, ((bus << 8) | (i << 3) | j), dev_mgr); pdev = uhci_alloc(drvr_obj, reg_path, ((bus << 8) | (i << 3) | j), dev_mgr);
if (pdev) if (pdev)
#ifdef _MULTI_UHCI
count++;
#else
goto LBL_LOOPOUT; goto LBL_LOOPOUT;
#endif #endif
} }
@ -669,6 +660,8 @@ uhci_probe(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, PUSB_DEV_MANAGER d
#ifndef _MULTI_UHCI #ifndef _MULTI_UHCI
LBL_LOOPOUT: LBL_LOOPOUT:
#endif #endif
DbgPrint("Found %d UHCI controllers\n", count);
if (pdev) if (pdev)
{ {
pdev_ext = pdev->DeviceExtension; pdev_ext = pdev->DeviceExtension;
@ -732,7 +725,7 @@ uhci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
if (pdev_ext->padapter == NULL) if (pdev_ext->padapter == NULL)
{ {
//fatal error //fatal error
uhci_delete_device(pdev); uhci_delete_device(pdev, dev_mgr);
return NULL; return NULL;
} }
@ -751,7 +744,7 @@ uhci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
DbgPrint("uhci_alloc(): error assign slot res, 0x%x\n", status); DbgPrint("uhci_alloc(): error assign slot res, 0x%x\n", status);
release_adapter(pdev_ext->padapter); release_adapter(pdev_ext->padapter);
pdev_ext->padapter = NULL; pdev_ext->padapter = NULL;
uhci_delete_device(pdev); uhci_delete_device(pdev, dev_mgr);
return NULL; return NULL;
} }
@ -781,7 +774,7 @@ uhci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
DbgPrint("uhci_alloc(): error, can not translate bus address\n"); DbgPrint("uhci_alloc(): error, can not translate bus address\n");
release_adapter(pdev_ext->padapter); release_adapter(pdev_ext->padapter);
pdev_ext->padapter = NULL; pdev_ext->padapter = NULL;
uhci_delete_device(pdev); uhci_delete_device(pdev, dev_mgr);
return NULL; return NULL;
} }
@ -800,7 +793,7 @@ uhci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
{ {
release_adapter(pdev_ext->padapter); release_adapter(pdev_ext->padapter);
pdev_ext->padapter = NULL; pdev_ext->padapter = NULL;
uhci_delete_device(pdev); uhci_delete_device(pdev, dev_mgr);
return NULL; return NULL;
} }
} }
@ -819,7 +812,7 @@ uhci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
{ {
release_adapter(pdev_ext->padapter); release_adapter(pdev_ext->padapter);
pdev_ext->padapter = NULL; pdev_ext->padapter = NULL;
uhci_delete_device(pdev); uhci_delete_device(pdev, dev_mgr);
return NULL; return NULL;
} }
@ -857,7 +850,7 @@ uhci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
FALSE) //No float save FALSE) //No float save
!= STATUS_SUCCESS) != STATUS_SUCCESS)
{ {
uhci_release(pdev); uhci_release(pdev, dev_mgr);
return NULL; return NULL;
} }
@ -865,7 +858,7 @@ uhci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
} }
BOOLEAN BOOLEAN
uhci_release(PDEVICE_OBJECT pdev) uhci_release(PDEVICE_OBJECT pdev, PUSB_DEV_MANAGER dev_mgr)
{ {
PDEVICE_EXTENSION pdev_ext; PDEVICE_EXTENSION pdev_ext;
PUHCI_DEV uhci; PUHCI_DEV uhci;
@ -901,7 +894,7 @@ uhci_release(PDEVICE_OBJECT pdev)
release_adapter(pdev_ext->padapter); release_adapter(pdev_ext->padapter);
pdev_ext->padapter = NULL; pdev_ext->padapter = NULL;
uhci_delete_device(pdev); uhci_delete_device(pdev, dev_mgr);
return FALSE; return FALSE;
@ -3680,7 +3673,7 @@ uhci_hcd_release(struct _HCD * hcd)
uhci = uhci_from_hcd(hcd); uhci = uhci_from_hcd(hcd);
pdev_ext = uhci->pdev_ext; pdev_ext = uhci->pdev_ext;
return uhci_release(pdev_ext->pdev_obj); return uhci_release(pdev_ext->pdev_obj, hcd->dev_mgr);
} }
NTSTATUS NTSTATUS

View file

@ -2,6 +2,8 @@
<!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd"> <!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
<module name="usbdriver" type="kernelmodedriver" installbase="system32/drivers" installname="usbdriver.sys"> <module name="usbdriver" type="kernelmodedriver" installbase="system32/drivers" installname="usbdriver.sys">
<define name="INCLUDE_EHCI" /> <define name="INCLUDE_EHCI" />
<define name="_MULTI_UHCI" />
<define name="_MULTI_EHCI" />
<define name="_X86" /> <define name="_X86" />
<include base="usbdriver">.</include> <include base="usbdriver">.</include>
<library>ntoskrnl</library> <library>ntoskrnl</library>

View file

@ -602,7 +602,6 @@ CPortPinDMus::Init(
DPRINT("Failed to add pin to service group\n"); DPRINT("Failed to add pin to service group\n");
return Status; return Status;
} }
m_ServiceGroup->SupportDelayedService();
} }
Status = m_IrpQueue->Init(ConnectDetails, 0, 0, NULL); Status = m_IrpQueue->Init(ConnectDetails, 0, 0, NULL);

View file

@ -1213,7 +1213,6 @@ CPortPinWaveCyclic::Init(
return Status; return Status;
} }
m_ServiceGroup->SupportDelayedService();
m_Stream->SetState(KSSTATE_STOP); m_Stream->SetState(KSSTATE_STOP);
m_State = KSSTATE_STOP; m_State = KSSTATE_STOP;
m_CommonBufferOffset = 0; m_CommonBufferOffset = 0;
@ -1224,6 +1223,8 @@ CPortPinWaveCyclic::Init(
m_Delay = Int32x32To64(10, -10000); m_Delay = Int32x32To64(10, -10000);
Status = m_Stream->SetNotificationFreq(10, &m_FrameSize); Status = m_Stream->SetNotificationFreq(10, &m_FrameSize);
PC_ASSERT(NT_SUCCESS(Status));
PC_ASSERT(m_FrameSize);
SilenceBuffer = AllocateItem(NonPagedPool, m_FrameSize, TAG_PORTCLASS); SilenceBuffer = AllocateItem(NonPagedPool, m_FrameSize, TAG_PORTCLASS);
if (!SilenceBuffer) if (!SilenceBuffer)

View file

@ -815,7 +815,6 @@ CPortPinWavePci::Init(
DPRINT("Failed to add pin to service group\n"); DPRINT("Failed to add pin to service group\n");
return Status; return Status;
} }
m_ServiceGroup->SupportDelayedService();
} }
// delay of 10 milisec // delay of 10 milisec

View file

@ -340,7 +340,7 @@ CPortDMus::NewRegistryKey(
RegistryKeyType, RegistryKeyType,
DesiredAccess, DesiredAccess,
m_pDeviceObject, m_pDeviceObject,
NULL,//FIXME (ISubdevice*)this,
ObjectAttributes, ObjectAttributes,
CreateOptions, CreateOptions,
Disposition); Disposition);

View file

@ -299,7 +299,7 @@ CPortTopology::NewRegistryKey(
RegistryKeyType, RegistryKeyType,
DesiredAccess, DesiredAccess,
m_pDeviceObject, m_pDeviceObject,
NULL,//FIXME (ISubdevice*)this,
ObjectAttributes, ObjectAttributes,
CreateOptions, CreateOptions,
Disposition); Disposition);

View file

@ -340,7 +340,7 @@ CPortWaveCyclic::NewRegistryKey(
DPRINT("IPortWaveCyclic_fnNewRegistryKey called w/o initialized\n"); DPRINT("IPortWaveCyclic_fnNewRegistryKey called w/o initialized\n");
return STATUS_UNSUCCESSFUL; return STATUS_UNSUCCESSFUL;
} }
return PcNewRegistryKey(OutRegistryKey, OuterUnknown, RegistryKeyType, DesiredAccess, m_pDeviceObject, NULL /*FIXME*/, ObjectAttributes, CreateOptions, Disposition); return PcNewRegistryKey(OutRegistryKey, OuterUnknown, RegistryKeyType, DesiredAccess, m_pDeviceObject, (ISubdevice*)this, ObjectAttributes, CreateOptions, Disposition);
} }

View file

@ -359,7 +359,7 @@ CPortWavePci::NewRegistryKey(
RegistryKeyType, RegistryKeyType,
DesiredAccess, DesiredAccess,
m_pDeviceObject, m_pDeviceObject,
NULL,//FIXME (ISubdevice*)this,
ObjectAttributes, ObjectAttributes,
CreateOptions, CreateOptions,
Disposition); Disposition);

View file

@ -329,7 +329,7 @@ CPortWaveRT::NewRegistryKey(
DPRINT("IPortWaveRT_fnNewRegistryKey called w/o initialized\n"); DPRINT("IPortWaveRT_fnNewRegistryKey called w/o initialized\n");
return STATUS_UNSUCCESSFUL; return STATUS_UNSUCCESSFUL;
} }
return PcNewRegistryKey(OutRegistryKey, OuterUnknown, RegistryKeyType, DesiredAccess, m_pDeviceObject, NULL /*FIXME*/, ObjectAttributes, CreateOptions, Disposition); return PcNewRegistryKey(OutRegistryKey, OuterUnknown, RegistryKeyType, DesiredAccess, m_pDeviceObject, (ISubdevice*)this, ObjectAttributes, CreateOptions, Disposition);
} }
//--------------------------------------------------------------- //---------------------------------------------------------------
// ISubdevice interface // ISubdevice interface

View file

@ -270,6 +270,9 @@ PcNewRegistryKey(
NTSTATUS Status = STATUS_UNSUCCESSFUL; NTSTATUS Status = STATUS_UNSUCCESSFUL;
CRegistryKey * RegistryKey; CRegistryKey * RegistryKey;
PPCLASS_DEVICE_EXTENSION DeviceExt; PPCLASS_DEVICE_EXTENSION DeviceExt;
PSUBDEVICE_DESCRIPTOR SubDeviceDescriptor;
ISubdevice * Device;
PSYMBOLICLINK_ENTRY SymEntry;
DPRINT("PcNewRegistryKey entered\n"); DPRINT("PcNewRegistryKey entered\n");
@ -294,8 +297,8 @@ PcNewRegistryKey(
// object attributes is mandatory // object attributes is mandatory
return STATUS_INVALID_PARAMETER; return STATUS_INVALID_PARAMETER;
} }
// try to open the key // try to create the key
Status = ZwOpenKey(&hHandle, DesiredAccess, ObjectAttributes); Status = ZwCreateKey(&hHandle, DesiredAccess, ObjectAttributes, 0, NULL, CreateOptions, Disposition);
} }
else if (RegistryKeyType == DeviceRegistryKey || else if (RegistryKeyType == DeviceRegistryKey ||
RegistryKeyType == DriverRegistryKey || RegistryKeyType == DriverRegistryKey ||
@ -305,7 +308,7 @@ PcNewRegistryKey(
if (RegistryKeyType == HwProfileRegistryKey) if (RegistryKeyType == HwProfileRegistryKey)
{ {
// IoOpenDeviceRegistryKey used different constant // IoOpenDeviceRegistryKey used different constant
RegistryKeyType = PLUGPLAY_REGKEY_CURRENT_HWPROFILE; RegistryKeyType = PLUGPLAY_REGKEY_CURRENT_HWPROFILE | PLUGPLAY_REGKEY_DEVICE;
} }
// obtain the new device extension // obtain the new device extension
@ -315,24 +318,71 @@ PcNewRegistryKey(
} }
else if (RegistryKeyType == DeviceInterfaceRegistryKey) else if (RegistryKeyType == DeviceInterfaceRegistryKey)
{ {
// FIXME if (SubDevice == NULL)
UNIMPLEMENTED {
DbgBreakPoint(); // invalid parameter
return STATUS_INVALID_PARAMETER;
}
// look up our undocumented interface
Status = ((PUNKNOWN)SubDevice)->QueryInterface(IID_ISubdevice, (LPVOID*)&Device);
if (!NT_SUCCESS(Status))
{
DPRINT("No ISubdevice interface\n");
// invalid parameter
return STATUS_INVALID_PARAMETER;
}
// get the subdevice descriptor
Status = Device->GetDescriptor(&SubDeviceDescriptor);
if (!NT_SUCCESS(Status))
{
DPRINT("Failed to get subdevice descriptor %x\n", Status);
((PUNKNOWN)SubDevice)->Release();
return STATUS_UNSUCCESSFUL;
}
// is there an registered device interface
if (IsListEmpty(&SubDeviceDescriptor->SymbolicLinkList))
{
DPRINT("No device interface registered\n");
((PUNKNOWN)SubDevice)->Release();
return STATUS_UNSUCCESSFUL;
}
// get the first symbolic link
SymEntry = (PSYMBOLICLINK_ENTRY)CONTAINING_RECORD(SubDeviceDescriptor->SymbolicLinkList.Flink, SYMBOLICLINK_ENTRY, Entry);
// open device interface
Status = IoOpenDeviceInterfaceRegistryKey(&SymEntry->SymbolicLink, DesiredAccess, &hHandle);
// release subdevice interface
((PUNKNOWN)SubDevice)->Release();
} }
// check for success
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
DPRINT1("PcNewRegistryKey failed with %lx\n", Status);
return Status; return Status;
} }
// allocate new registry key object
RegistryKey = new(NonPagedPool, TAG_PORTCLASS)CRegistryKey(OuterUnknown, hHandle); RegistryKey = new(NonPagedPool, TAG_PORTCLASS)CRegistryKey(OuterUnknown, hHandle);
if (!RegistryKey) if (!RegistryKey)
{
// not enough memory
ZwClose(hHandle);
return STATUS_INSUFFICIENT_RESOURCES; return STATUS_INSUFFICIENT_RESOURCES;
}
// query for interface
Status = RegistryKey->QueryInterface(IID_IRegistryKey, (PVOID*)OutRegistryKey); Status = RegistryKey->QueryInterface(IID_IRegistryKey, (PVOID*)OutRegistryKey);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
// out of memory
delete RegistryKey; delete RegistryKey;
} }

View file

@ -54,12 +54,10 @@ protected:
LIST_ENTRY m_ServiceSinkHead; LIST_ENTRY m_ServiceSinkHead;
BOOL m_Initialized; BOOL m_TimerInitialized;
BOOL m_TimerActive;
KTIMER m_Timer; KTIMER m_Timer;
KDPC m_Dpc; KDPC m_Dpc;
KEVENT m_Event; KSPIN_LOCK m_Lock;
LONG m_ThreadActive;
friend VOID NTAPI IServiceGroupDpc(IN struct _KDPC *Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2); friend VOID NTAPI IServiceGroupDpc(IN struct _KDPC *Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2);
@ -105,9 +103,16 @@ CServiceGroup::QueryInterface(
CServiceGroup::CServiceGroup(IUnknown * OuterUnknown) CServiceGroup::CServiceGroup(IUnknown * OuterUnknown)
{ {
// initialize dpc
KeInitializeDpc(&m_Dpc, IServiceGroupDpc, (PVOID)this); KeInitializeDpc(&m_Dpc, IServiceGroupDpc, (PVOID)this);
// set highest importance
KeSetImportanceDpc(&m_Dpc, HighImportance); KeSetImportanceDpc(&m_Dpc, HighImportance);
KeInitializeEvent(&m_Event, NotificationEvent, FALSE);
// initialize service group list lock
KeInitializeSpinLock(&m_Lock);
// initialize service group list
InitializeListHead(&m_ServiceSinkHead); InitializeListHead(&m_ServiceSinkHead);
} }
@ -119,15 +124,34 @@ CServiceGroup::RequestService()
DPRINT("CServiceGroup::RequestService() Dpc at Level %u\n", KeGetCurrentIrql()); DPRINT("CServiceGroup::RequestService() Dpc at Level %u\n", KeGetCurrentIrql());
if (KeGetCurrentIrql() > DISPATCH_LEVEL) if (m_TimerInitialized)
{ {
KeInsertQueueDpc(&m_Dpc, NULL, NULL); LARGE_INTEGER DueTime;
return;
}
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); // no due time
KeInsertQueueDpc(&m_Dpc, NULL, NULL); DueTime.QuadPart = 0LL;
KeLowerIrql(OldIrql);
// delayed service requested
KeSetTimer(&m_Timer, DueTime, &m_Dpc);
}
else
{
// check curent irql
if (KeGetCurrentIrql() > DISPATCH_LEVEL)
{
//insert dpc to queue
KeInsertQueueDpc(&m_Dpc, NULL, NULL);
}
else
{
// raise irql to dispatch level to make dpc fire immediately
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
// insert dpc to queue
KeInsertQueueDpc(&m_Dpc, NULL, NULL);
// lower irql to old level
KeLowerIrql(OldIrql);
}
}
} }
//--------------------------------------------------------------- //---------------------------------------------------------------
@ -140,18 +164,33 @@ CServiceGroup::AddMember(
IN PSERVICESINK pServiceSink) IN PSERVICESINK pServiceSink)
{ {
PGROUP_ENTRY Entry; PGROUP_ENTRY Entry;
KIRQL OldLevel;
// sanity check
PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL); PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL);
// allocate service sink entry
Entry = (PGROUP_ENTRY)AllocateItem(NonPagedPool, sizeof(GROUP_ENTRY), TAG_PORTCLASS); Entry = (PGROUP_ENTRY)AllocateItem(NonPagedPool, sizeof(GROUP_ENTRY), TAG_PORTCLASS);
if (!Entry) if (!Entry)
{
// out of memory
return STATUS_INSUFFICIENT_RESOURCES; return STATUS_INSUFFICIENT_RESOURCES;
}
// initialize service sink entry
Entry->pServiceSink = pServiceSink; Entry->pServiceSink = pServiceSink;
// increment reference count
pServiceSink->AddRef(); pServiceSink->AddRef();
// acquire service group list lock
KeAcquireSpinLock(&m_Lock, &OldLevel);
// insert into service sink list
InsertTailList(&m_ServiceSinkHead, &Entry->Entry); InsertTailList(&m_ServiceSinkHead, &Entry->Entry);
// release service group list lock
KeReleaseSpinLock(&m_Lock, OldLevel);
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
@ -162,23 +201,45 @@ CServiceGroup::RemoveMember(
{ {
PLIST_ENTRY CurEntry; PLIST_ENTRY CurEntry;
PGROUP_ENTRY Entry; PGROUP_ENTRY Entry;
KIRQL OldLevel;
// sanity check
PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL); PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL);
// acquire service group list lock
KeAcquireSpinLock(&m_Lock, &OldLevel);
// grab first entry
CurEntry = m_ServiceSinkHead.Flink; CurEntry = m_ServiceSinkHead.Flink;
// loop list until the passed entry is found
while (CurEntry != &m_ServiceSinkHead) while (CurEntry != &m_ServiceSinkHead)
{ {
// grab entry
Entry = CONTAINING_RECORD(CurEntry, GROUP_ENTRY, Entry); Entry = CONTAINING_RECORD(CurEntry, GROUP_ENTRY, Entry);
// check if it matches the passed entry
if (Entry->pServiceSink == pServiceSink) if (Entry->pServiceSink == pServiceSink)
{ {
// remove entry from list
RemoveEntryList(&Entry->Entry); RemoveEntryList(&Entry->Entry);
// release service sink reference
pServiceSink->Release(); pServiceSink->Release();
// free service sink entry
FreeItem(Entry, TAG_PORTCLASS); FreeItem(Entry, TAG_PORTCLASS);
return;
// leave loop
break;
} }
// move to next entry
CurEntry = CurEntry->Flink; CurEntry = CurEntry->Flink;
} }
// release service group list lock
KeReleaseSpinLock(&m_Lock, OldLevel);
} }
VOID VOID
@ -194,73 +255,40 @@ IServiceGroupDpc(
PGROUP_ENTRY Entry; PGROUP_ENTRY Entry;
CServiceGroup * This = (CServiceGroup*)DeferredContext; CServiceGroup * This = (CServiceGroup*)DeferredContext;
// acquire service group list lock
KeAcquireSpinLockAtDpcLevel(&This->m_Lock);
// grab first entry
CurEntry = This->m_ServiceSinkHead.Flink; CurEntry = This->m_ServiceSinkHead.Flink;
// loop the list and call the attached service sink/group
while (CurEntry != &This->m_ServiceSinkHead) while (CurEntry != &This->m_ServiceSinkHead)
{ {
//grab current entry
Entry = (PGROUP_ENTRY)CONTAINING_RECORD(CurEntry, GROUP_ENTRY, Entry); Entry = (PGROUP_ENTRY)CONTAINING_RECORD(CurEntry, GROUP_ENTRY, Entry);
// call service sink/group
Entry->pServiceSink->RequestService(); Entry->pServiceSink->RequestService();
// move to next entry
CurEntry = CurEntry->Flink; CurEntry = CurEntry->Flink;
} }
// release service group list lock
KeReleaseSpinLockFromDpcLevel(&This->m_Lock);
} }
#if 0
VOID
NTAPI
ServiceGroupThread(IN PVOID StartContext)
{
NTSTATUS Status;
KWAIT_BLOCK WaitBlockArray[2];
PVOID WaitObjects[2];
CServiceGroup * This = (CServiceGroup*)StartContext;
// Set thread state
InterlockedIncrement(&This->m_ThreadActive);
// Setup the wait objects
WaitObjects[0] = &m_Timer;
WaitObjects[1] = &m_Event;
do
{
// Wait on our objects
Status = KeWaitForMultipleObjects(2, WaitObjects, WaitAny, Executive, KernelMode, FALSE, NULL, WaitBlockArray);
switch(Status)
{
case STATUS_WAIT_0:
IServiceGroupDpc(&This->m_Dpc, (PVOID)This, NULL, NULL);
break;
case STATUS_WAIT_1:
PsTerminateSystemThread(STATUS_SUCCESS);
return;
}
}while(TRUE);
}
#endif
VOID VOID
NTAPI NTAPI
CServiceGroup::SupportDelayedService() CServiceGroup::SupportDelayedService()
{ {
//NTSTATUS Status;
//HANDLE ThreadHandle;
PC_ASSERT_IRQL(DISPATCH_LEVEL); PC_ASSERT_IRQL(DISPATCH_LEVEL);
if (m_Initialized) // initialize the timer
return; KeInitializeTimer(&m_Timer);
KeInitializeTimerEx(&m_Timer, NotificationTimer); // use the timer to perform service requests
m_TimerInitialized = TRUE;
#if 0
Status = PsCreateSystemThread(&ThreadHandle, THREAD_ALL_ACCESS, NULL, 0, NULL, ServiceGroupThread, (PVOID)This);
if (NT_SUCCESS(Status))
{
ZwClose(ThreadHandle);
m_Initialized = TRUE;
}
#endif
} }
VOID VOID
@ -270,17 +298,14 @@ CServiceGroup::RequestDelayedService(
{ {
LARGE_INTEGER DueTime; LARGE_INTEGER DueTime;
// sanity check
PC_ASSERT_IRQL(DISPATCH_LEVEL); PC_ASSERT_IRQL(DISPATCH_LEVEL);
PC_ASSERT(m_TimerInitialized);
DueTime.QuadPart = ullDelay; DueTime.QuadPart = ullDelay;
if (m_Initialized) // set the timer
{ KeSetTimer(&m_Timer, DueTime, &m_Dpc);
if (KeGetCurrentIrql() <= DISPATCH_LEVEL)
KeSetTimer(&m_Timer, DueTime, &m_Dpc);
else
KeInsertQueueDpc(&m_Dpc, NULL, NULL);
}
} }
VOID VOID
@ -288,11 +313,10 @@ NTAPI
CServiceGroup::CancelDelayedService() CServiceGroup::CancelDelayedService()
{ {
PC_ASSERT_IRQL(DISPATCH_LEVEL); PC_ASSERT_IRQL(DISPATCH_LEVEL);
PC_ASSERT(m_TimerInitialized);
if (m_Initialized) // cancel the timer
{ KeCancelTimer(&m_Timer);
KeCancelTimer(&m_Timer);
}
} }
NTSTATUS NTSTATUS
@ -303,19 +327,31 @@ PcNewServiceGroup(
{ {
CServiceGroup * This; CServiceGroup * This;
NTSTATUS Status; NTSTATUS Status;
DPRINT("PcNewServiceGroup entered\n"); DPRINT("PcNewServiceGroup entered\n");
This = new(NonPagedPool, TAG_PORTCLASS)CServiceGroup(OuterUnknown); //FIXME support aggregation
if (!This) PC_ASSERT(OuterUnknown == NULL);
return STATUS_INSUFFICIENT_RESOURCES;
// allocate a service group object
This = new(NonPagedPool, TAG_PORTCLASS)CServiceGroup(OuterUnknown);
if (!This)
{
// out of memory
return STATUS_INSUFFICIENT_RESOURCES;
}
// request IServiceSink interface
Status = This->QueryInterface(IID_IServiceSink, (PVOID*)OutServiceGroup); Status = This->QueryInterface(IID_IServiceSink, (PVOID*)OutServiceGroup);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
// failed to acquire service sink interface
delete This; delete This;
return Status; return Status;
} }
// done
return Status; return Status;
} }

View file

@ -97,7 +97,6 @@ HandleSysAudioFilterPinProperties(
NTSTATUS Status; NTSTATUS Status;
PKSAUDIO_DEVICE_ENTRY Entry; PKSAUDIO_DEVICE_ENTRY Entry;
ULONG BytesReturned; ULONG BytesReturned;
PKSP_PIN Pin;
// in order to access pin properties of a sysaudio device // in order to access pin properties of a sysaudio device
// the caller must provide a KSP_PIN struct, where // the caller must provide a KSP_PIN struct, where
@ -110,8 +109,6 @@ HandleSysAudioFilterPinProperties(
return SetIrpIoStatus(Irp, STATUS_BUFFER_TOO_SMALL, sizeof(KSPROPERTY) + sizeof(ULONG)); return SetIrpIoStatus(Irp, STATUS_BUFFER_TOO_SMALL, sizeof(KSPROPERTY) + sizeof(ULONG));
} }
Pin = (PKSP_PIN)Property;
Entry = GetListEntry(&DeviceExtension->KsAudioDeviceList, ((KSP_PIN*)Property)->Reserved); Entry = GetListEntry(&DeviceExtension->KsAudioDeviceList, ((KSP_PIN*)Property)->Reserved);
if (!Entry) if (!Entry)
{ {
@ -119,64 +116,15 @@ HandleSysAudioFilterPinProperties(
return SetIrpIoStatus(Irp, STATUS_INVALID_PARAMETER, 0); return SetIrpIoStatus(Irp, STATUS_INVALID_PARAMETER, 0);
} }
if (!Entry->Pins) /* forward request to the filter implementing the property */
{ Status = KsSynchronousIoControlDevice(Entry->FileObject, KernelMode, IOCTL_KS_PROPERTY,
/* expected pins */
return SetIrpIoStatus(Irp, STATUS_UNSUCCESSFUL, 0);
}
if (Entry->PinDescriptorsCount <= Pin->PinId)
{
/* invalid pin id */
return SetIrpIoStatus(Irp, STATUS_INVALID_PARAMETER, 0);
}
if (Property->Id == KSPROPERTY_PIN_CTYPES)
{
if (IoStack->Parameters.DeviceIoControl.OutputBufferLength < sizeof(ULONG))
{
/* too small buffer */
return SetIrpIoStatus(Irp, STATUS_BUFFER_TOO_SMALL, sizeof(ULONG));
}
/* store result */
*((PULONG)Irp->UserBuffer) = Entry->PinDescriptorsCount;
return SetIrpIoStatus(Irp, STATUS_SUCCESS, sizeof(ULONG));
}
else if (Property->Id == KSPROPERTY_PIN_COMMUNICATION)
{
if (IoStack->Parameters.DeviceIoControl.OutputBufferLength < sizeof(KSPIN_COMMUNICATION))
{
/* too small buffer */
return SetIrpIoStatus(Irp, STATUS_BUFFER_TOO_SMALL, sizeof(KSPIN_COMMUNICATION));
}
/* store result */
*((KSPIN_COMMUNICATION*)Irp->UserBuffer) = Entry->PinDescriptors[Pin->PinId].Communication;
return SetIrpIoStatus(Irp, STATUS_SUCCESS, sizeof(KSPIN_COMMUNICATION));
}
else if (Property->Id == KSPROPERTY_PIN_DATAFLOW)
{
if (IoStack->Parameters.DeviceIoControl.OutputBufferLength < sizeof(KSPIN_DATAFLOW))
{
/* too small buffer */
return SetIrpIoStatus(Irp, STATUS_BUFFER_TOO_SMALL, sizeof(KSPIN_DATAFLOW));
}
/* store result */
*((KSPIN_DATAFLOW*)Irp->UserBuffer) = Entry->PinDescriptors[Pin->PinId].DataFlow;
return SetIrpIoStatus(Irp, STATUS_SUCCESS, sizeof(KSPIN_DATAFLOW));
}
else
{
/* forward request to the filter implementing the property */
Status = KsSynchronousIoControlDevice(Entry->FileObject, KernelMode, IOCTL_KS_PROPERTY,
(PVOID)IoStack->Parameters.DeviceIoControl.Type3InputBuffer, (PVOID)IoStack->Parameters.DeviceIoControl.Type3InputBuffer,
IoStack->Parameters.DeviceIoControl.InputBufferLength, IoStack->Parameters.DeviceIoControl.InputBufferLength,
Irp->UserBuffer, Irp->UserBuffer,
IoStack->Parameters.DeviceIoControl.OutputBufferLength, IoStack->Parameters.DeviceIoControl.OutputBufferLength,
&BytesReturned); &BytesReturned);
return SetIrpIoStatus(Irp, Status, BytesReturned); return SetIrpIoStatus(Irp, Status, BytesReturned);
}
} }
@ -328,7 +276,7 @@ GetPinInstanceCount(
PinRequest.Property.Set = KSPROPSETID_Pin; PinRequest.Property.Set = KSPROPSETID_Pin;
PinRequest.Property.Flags = KSPROPERTY_TYPE_GET; PinRequest.Property.Flags = KSPROPERTY_TYPE_GET;
PinRequest.Property.Id = KSPROPERTY_PIN_CINSTANCES; PinRequest.Property.Id = KSPROPERTY_PIN_CINSTANCES;
ASSERT(Entry->FileObject);
return KsSynchronousIoControlDevice(Entry->FileObject, KernelMode, IOCTL_KS_PROPERTY, (PVOID)&PinRequest, sizeof(KSP_PIN), (PVOID)PinInstances, sizeof(KSPIN_CINSTANCES), &BytesReturned); return KsSynchronousIoControlDevice(Entry->FileObject, KernelMode, IOCTL_KS_PROPERTY, (PVOID)&PinRequest, sizeof(KSP_PIN), (PVOID)PinInstances, sizeof(KSPIN_CINSTANCES), &BytesReturned);
} }

View file

@ -14,139 +14,6 @@ const GUID KS_CATEGORY_AUDIO = {0x6994AD04L, 0x93EF, 0x11D0, {
const GUID KS_CATEGORY_TOPOLOGY = {0xDDA54A40, 0x1E4C, 0x11D1, {0xA0, 0x50, 0x40, 0x57, 0x05, 0xC1, 0x00, 0x00}}; const GUID KS_CATEGORY_TOPOLOGY = {0xDDA54A40, 0x1E4C, 0x11D1, {0xA0, 0x50, 0x40, 0x57, 0x05, 0xC1, 0x00, 0x00}};
const GUID DMOCATEGORY_ACOUSTIC_ECHO_CANCEL = {0xBF963D80L, 0xC559, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}}; const GUID DMOCATEGORY_ACOUSTIC_ECHO_CANCEL = {0xBF963D80L, 0xC559, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
NTSTATUS
BuildPinDescriptor(
IN PKSAUDIO_DEVICE_ENTRY DeviceEntry,
IN ULONG Count)
{
ULONG Index;
KSP_PIN PinRequest;
KSPIN_DATAFLOW DataFlow;
KSPIN_COMMUNICATION Communication;
ULONG NumWaveOutPin, NumWaveInPin;
NTSTATUS Status;
ULONG BytesReturned;
NumWaveInPin = 0;
NumWaveOutPin = 0;
for(Index = 0; Index < Count; Index++)
{
/* retrieve data flow */
PinRequest.PinId = Index;
PinRequest.Property.Set = KSPROPSETID_Pin;
PinRequest.Property.Flags = KSPROPERTY_TYPE_GET;
/* get dataflow direction */
PinRequest.Property.Id = KSPROPERTY_PIN_DATAFLOW;
Status = KsSynchronousIoControlDevice(DeviceEntry->FileObject, KernelMode, IOCTL_KS_PROPERTY, (PVOID)&PinRequest, sizeof(KSP_PIN), (PVOID)&DataFlow, sizeof(KSPIN_DATAFLOW), &BytesReturned);
if (NT_SUCCESS(Status))
{
DeviceEntry->PinDescriptors[Index].DataFlow = DataFlow;
}
/* get irp flow direction */
PinRequest.Property.Id = KSPROPERTY_PIN_COMMUNICATION;
Status = KsSynchronousIoControlDevice(DeviceEntry->FileObject, KernelMode, IOCTL_KS_PROPERTY, (PVOID)&PinRequest, sizeof(KSP_PIN), (PVOID)&Communication, sizeof(KSPIN_COMMUNICATION), &BytesReturned);
if (NT_SUCCESS(Status))
{
DeviceEntry->PinDescriptors[Index].Communication = Communication;
}
if (Communication == KSPIN_COMMUNICATION_SINK && DataFlow == KSPIN_DATAFLOW_IN)
NumWaveOutPin++;
if (Communication == KSPIN_COMMUNICATION_SINK && DataFlow == KSPIN_DATAFLOW_OUT)
NumWaveInPin++;
/* FIXME query for interface, dataformat etc */
}
DPRINT("Num Pins %u Num WaveIn Pins %u Name WaveOut Pins %u\n", DeviceEntry->PinDescriptorsCount, NumWaveInPin, NumWaveOutPin);
return STATUS_SUCCESS;
}
VOID
QueryFilterRoutine(
IN PKSAUDIO_DEVICE_ENTRY DeviceEntry)
{
KSPROPERTY PropertyRequest;
ULONG Count;
NTSTATUS Status;
ULONG BytesReturned;
DPRINT("Querying filter...\n");
PropertyRequest.Set = KSPROPSETID_Pin;
PropertyRequest.Flags = KSPROPERTY_TYPE_GET;
PropertyRequest.Id = KSPROPERTY_PIN_CTYPES;
/* query for num of pins */
Status = KsSynchronousIoControlDevice(DeviceEntry->FileObject, KernelMode, IOCTL_KS_PROPERTY, (PVOID)&PropertyRequest, sizeof(KSPROPERTY), (PVOID)&Count, sizeof(ULONG), &BytesReturned);
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to query number of pins Status %x\n", Status);
return;
}
if (!Count)
{
DPRINT1("Filter has no pins!\n");
return;
}
/* allocate pin descriptor array */
DeviceEntry->PinDescriptors = ExAllocatePool(NonPagedPool, Count * sizeof(KSPIN_DESCRIPTOR));
if (!DeviceEntry->PinDescriptors)
{
/* no memory */
return;
}
/* zero array pin descriptor array */
RtlZeroMemory(DeviceEntry->PinDescriptors, Count * sizeof(KSPIN_DESCRIPTOR));
/* build the device descriptor */
Status = BuildPinDescriptor(DeviceEntry, Count);
if (!NT_SUCCESS(Status))
return;
/* allocate pin array */
DeviceEntry->Pins = ExAllocatePool(NonPagedPool, Count * sizeof(PIN_INFO));
if (!DeviceEntry->Pins)
{
/* no memory */
DPRINT1("Failed to allocate memory Pins %u Block %x\n", Count, Count * sizeof(PIN_INFO));
return;
}
/* clear array */
RtlZeroMemory(DeviceEntry->Pins, sizeof(PIN_INFO) * Count);
DeviceEntry->PinDescriptorsCount = Count;
}
VOID
NTAPI
FilterPinWorkerRoutine(
IN PDEVICE_OBJECT DeviceObject,
IN PVOID Context)
{
PKSAUDIO_DEVICE_ENTRY DeviceEntry;
PFILTER_WORKER_CONTEXT Ctx = (PFILTER_WORKER_CONTEXT)Context;
DeviceEntry = Ctx->DeviceEntry;
QueryFilterRoutine(DeviceEntry);
/* free work item */
IoFreeWorkItem(Ctx->WorkItem);
/* free work item context */
ExFreePool(Ctx);
return;
}
NTSTATUS NTSTATUS
OpenDevice( OpenDevice(
IN PUNICODE_STRING DeviceName, IN PUNICODE_STRING DeviceName,
@ -199,8 +66,6 @@ InsertAudioDevice(
IN PUNICODE_STRING DeviceName) IN PUNICODE_STRING DeviceName)
{ {
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PFILTER_WORKER_CONTEXT Ctx = NULL;
PIO_WORKITEM WorkItem = NULL;
PSYSAUDIODEVEXT DeviceExtension; PSYSAUDIODEVEXT DeviceExtension;
PKSAUDIO_DEVICE_ENTRY DeviceEntry = NULL; PKSAUDIO_DEVICE_ENTRY DeviceEntry = NULL;
@ -215,24 +80,6 @@ InsertAudioDevice(
/* initialize audio device entry */ /* initialize audio device entry */
RtlZeroMemory(DeviceEntry, sizeof(KSAUDIO_DEVICE_ENTRY)); RtlZeroMemory(DeviceEntry, sizeof(KSAUDIO_DEVICE_ENTRY));
/* allocate filter ctx */
Ctx = ExAllocatePool(NonPagedPool, sizeof(FILTER_WORKER_CONTEXT));
if (!Ctx)
{
/* no memory */
Status = STATUS_INSUFFICIENT_RESOURCES;
goto cleanup;
}
/* allocate work item */
WorkItem = IoAllocateWorkItem(DeviceObject);
if (!WorkItem)
{
/* no memory */
Status = STATUS_INSUFFICIENT_RESOURCES;
goto cleanup;
}
/* set device name */ /* set device name */
DeviceEntry->DeviceName.Length = 0; DeviceEntry->DeviceName.Length = 0;
DeviceEntry->DeviceName.MaximumLength = DeviceName->MaximumLength + 10 * sizeof(WCHAR); DeviceEntry->DeviceName.MaximumLength = DeviceName->MaximumLength + 10 * sizeof(WCHAR);
@ -255,9 +102,6 @@ InsertAudioDevice(
goto cleanup; goto cleanup;
} }
Ctx->DeviceEntry = DeviceEntry;
Ctx->WorkItem = WorkItem;
/* fetch device extension */ /* fetch device extension */
DeviceExtension = (PSYSAUDIODEVEXT)DeviceObject->DeviceExtension; DeviceExtension = (PSYSAUDIODEVEXT)DeviceObject->DeviceExtension;
/* insert new audio device */ /* insert new audio device */
@ -265,16 +109,9 @@ InsertAudioDevice(
InterlockedIncrement((PLONG)&DeviceExtension->NumberOfKsAudioDevices); InterlockedIncrement((PLONG)&DeviceExtension->NumberOfKsAudioDevices);
DPRINT("Successfully opened audio device %u Device %S\n", DeviceExtension->NumberOfKsAudioDevices, DeviceEntry->DeviceName.Buffer); DPRINT("Successfully opened audio device %u Device %S\n", DeviceExtension->NumberOfKsAudioDevices, DeviceEntry->DeviceName.Buffer);
IoQueueWorkItem(WorkItem, FilterPinWorkerRoutine, DelayedWorkQueue, (PVOID)Ctx);
return Status; return Status;
cleanup: cleanup:
if (Ctx)
ExFreePool(Ctx);
if (WorkItem)
IoFreeWorkItem(WorkItem);
if (DeviceEntry) if (DeviceEntry)
{ {
if (DeviceEntry->DeviceName.Buffer) if (DeviceEntry->DeviceName.Buffer)

View file

@ -53,10 +53,10 @@ SysAudio_Shutdown(
/* close audio device handle */ /* close audio device handle */
ZwClose(DeviceEntry->Handle); ZwClose(DeviceEntry->Handle);
/* free device string */ /* free device string */
RtlFreeUnicodeString(&DeviceEntry->DeviceName); RtlFreeUnicodeString(&DeviceEntry->DeviceName);
/* free pins */
ExFreePool(DeviceEntry->Pins);
/* free audio device entry */ /* free audio device entry */
ExFreePool(DeviceEntry); ExFreePool(DeviceEntry);
} }

View file

@ -354,7 +354,7 @@ InstantiatePins(
} }
#endif #endif
DeviceEntry->Pins[Connect->PinId].References = 0; //DeviceEntry->Pins[Connect->PinId].References = 0;
/* initialize dispatch context */ /* initialize dispatch context */
DispatchContext->Handle = RealPinHandle; DispatchContext->Handle = RealPinHandle;
@ -385,6 +385,44 @@ InstantiatePins(
return Status; return Status;
} }
NTSTATUS
GetConnectRequest(
IN PIRP Irp,
OUT PKSPIN_CONNECT * Result)
{
PIO_STACK_LOCATION IoStack;
ULONG ObjectLength, ParametersLength;
PVOID Buffer;
/* get current irp stack */
IoStack = IoGetCurrentIrpStackLocation(Irp);
/* get object class length */
ObjectLength = (wcslen(KSSTRING_Pin) + 2) * sizeof(WCHAR);
/* check for minium length requirement */
if (ObjectLength + sizeof(KSPIN_CONNECT) > IoStack->FileObject->FileName.MaximumLength)
return STATUS_UNSUCCESSFUL;
/* extract parameters length */
ParametersLength = IoStack->FileObject->FileName.MaximumLength - ObjectLength;
/* allocate buffer */
Buffer = ExAllocatePool(NonPagedPool, ParametersLength);
if (!Buffer)
return STATUS_INSUFFICIENT_RESOURCES;
/* copy parameters */
RtlMoveMemory(Buffer, &IoStack->FileObject->FileName.Buffer[ObjectLength / sizeof(WCHAR)], ParametersLength);
/* store result */
*Result = (PKSPIN_CONNECT)Buffer;
return STATUS_SUCCESS;
}
NTSTATUS NTSTATUS
NTAPI NTAPI
DispatchCreateSysAudioPin( DispatchCreateSysAudioPin(
@ -394,7 +432,7 @@ DispatchCreateSysAudioPin(
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PIO_STACK_LOCATION IoStack; PIO_STACK_LOCATION IoStack;
PKSAUDIO_DEVICE_ENTRY DeviceEntry; PKSAUDIO_DEVICE_ENTRY DeviceEntry;
PKSPIN_CONNECT Connect = NULL; PKSPIN_CONNECT Connect;
PDISPATCH_CONTEXT DispatchContext; PDISPATCH_CONTEXT DispatchContext;
DPRINT("DispatchCreateSysAudioPin entered\n"); DPRINT("DispatchCreateSysAudioPin entered\n");
@ -410,9 +448,6 @@ DispatchCreateSysAudioPin(
/* get current attached virtual device */ /* get current attached virtual device */
DeviceEntry = (PKSAUDIO_DEVICE_ENTRY)IoStack->FileObject->RelatedFileObject->FsContext; DeviceEntry = (PKSAUDIO_DEVICE_ENTRY)IoStack->FileObject->RelatedFileObject->FsContext;
/* now validate pin connect request */
Status = KsValidateConnectRequest(Irp, DeviceEntry->PinDescriptorsCount, DeviceEntry->PinDescriptors, &Connect);
/* check for success */ /* check for success */
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
@ -422,6 +457,19 @@ DispatchCreateSysAudioPin(
return Status; return Status;
} }
/* get connect details */
Status = GetConnectRequest(Irp, &Connect);
/* check for success */
if (!NT_SUCCESS(Status))
{
/* failed to obtain connect details */
Irp->IoStatus.Status = Status;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return Status;
}
/* allocate dispatch context */ /* allocate dispatch context */
DispatchContext = ExAllocatePool(NonPagedPool, sizeof(DISPATCH_CONTEXT)); DispatchContext = ExAllocatePool(NonPagedPool, sizeof(DISPATCH_CONTEXT));
if (!DispatchContext) if (!DispatchContext)

View file

@ -24,9 +24,7 @@ typedef struct
HANDLE Handle; // handle to audio device HANDLE Handle; // handle to audio device
PFILE_OBJECT FileObject; // file objecto to audio device PFILE_OBJECT FileObject; // file objecto to audio device
PIN_INFO * Pins; // array of PIN_INFO //PIN_INFO * Pins; // array of PIN_INFO
ULONG PinDescriptorsCount; // number of pin descriptors
KSPIN_DESCRIPTOR *PinDescriptors; // pin descriptors array
}KSAUDIO_DEVICE_ENTRY, *PKSAUDIO_DEVICE_ENTRY; }KSAUDIO_DEVICE_ENTRY, *PKSAUDIO_DEVICE_ENTRY;
typedef struct typedef struct
@ -62,20 +60,6 @@ typedef struct
HANDLE hMixerPin; // handle to mixer pin HANDLE hMixerPin; // handle to mixer pin
}DISPATCH_CONTEXT, *PDISPATCH_CONTEXT; }DISPATCH_CONTEXT, *PDISPATCH_CONTEXT;
typedef struct
{
PIO_WORKITEM WorkItem;
PKSAUDIO_DEVICE_ENTRY DeviceEntry;
}FILTER_WORKER_CONTEXT, *PFILTER_WORKER_CONTEXT;
typedef struct
{
PIRP Irp;
IO_STATUS_BLOCK StatusBlock;
}COMPLETION_CONTEXT, *PCOMPLETION_CONTEXT;
NTSTATUS NTSTATUS
SysAudioAllocateDeviceHeader( SysAudioAllocateDeviceHeader(
IN SYSAUDIODEVEXT *DeviceExtension); IN SYSAUDIODEVEXT *DeviceExtension);

View file

@ -51,6 +51,7 @@
@ stdcall HalInitializeProcessor(long ptr) @ stdcall HalInitializeProcessor(long ptr)
@ stdcall HalMakeBeep(long) @ stdcall HalMakeBeep(long)
@ stdcall HalProcessorIdle() @ stdcall HalProcessorIdle()
@ stdcall HalPutDmaAdapter(ptr)
@ stdcall HalQueryDisplayParameters(ptr ptr ptr ptr) @ stdcall HalQueryDisplayParameters(ptr ptr ptr ptr)
@ stdcall HalQueryRealTimeClock(ptr) @ stdcall HalQueryRealTimeClock(ptr)
@ stdcall HalReadDmaCounter(ptr) @ stdcall HalReadDmaCounter(ptr)

View file

@ -360,10 +360,10 @@ HalpGetPCIData(IN PBUS_HANDLER BusHandler,
(1 == BusHandler->BusNumber && 0 != Slot.u.bits.DeviceNumber)) (1 == BusHandler->BusNumber && 0 != Slot.u.bits.DeviceNumber))
{ {
DPRINT("Blacklisted PCI slot\n"); DPRINT("Blacklisted PCI slot\n");
if (0 == Offset && 2 <= Length) if (0 == Offset && sizeof(USHORT) <= Length)
{ {
*(PUSHORT)Buffer = PCI_INVALID_VENDORID; *(PUSHORT)Buffer = PCI_INVALID_VENDORID;
return 2; return sizeof(USHORT);
} }
return 0; return 0;
} }
@ -700,7 +700,6 @@ HaliPciInterfaceReadConfig(IN PBUS_HANDLER RootBusHandler,
IN ULONG Length) IN ULONG Length)
{ {
BUS_HANDLER BusHandler; BUS_HANDLER BusHandler;
PPCI_COMMON_CONFIG PciData = (PPCI_COMMON_CONFIG)Buffer;
/* Setup fake PCI Bus handler */ /* Setup fake PCI Bus handler */
RtlCopyMemory(&BusHandler, &HalpFakePciBusHandler, sizeof(BUS_HANDLER)); RtlCopyMemory(&BusHandler, &HalpFakePciBusHandler, sizeof(BUS_HANDLER));
@ -709,21 +708,6 @@ HaliPciInterfaceReadConfig(IN PBUS_HANDLER RootBusHandler,
/* Read configuration data */ /* Read configuration data */
HalpReadPCIConfig(&BusHandler, SlotNumber, Buffer, Offset, Length); HalpReadPCIConfig(&BusHandler, SlotNumber, Buffer, Offset, Length);
/* Check if caller only wanted at least Vendor ID */
if (Length >= 2)
{
/* Validate it */
if (PciData->VendorID != PCI_INVALID_VENDORID)
{
/* Check if this is the new maximum bus number */
if (HalpMaxPciBus < BusHandler.BusNumber)
{
/* Set it */
HalpMaxPciBus = BusHandler.BusNumber;
}
}
}
/* Return length */ /* Return length */
return Length; return Length;
} }
@ -970,6 +954,7 @@ HalpInitializePciStubs(VOID)
ULONG i; ULONG i;
PCI_SLOT_NUMBER j; PCI_SLOT_NUMBER j;
ULONG VendorId = 0; ULONG VendorId = 0;
ULONG MaxPciBusNumber;
/* Query registry information */ /* Query registry information */
PciRegistryInfo = HalpQueryPciRegistryInfo(); PciRegistryInfo = HalpQueryPciRegistryInfo();
@ -977,11 +962,19 @@ HalpInitializePciStubs(VOID)
{ {
/* Assume type 1 */ /* Assume type 1 */
PciType = 1; PciType = 1;
/* Force a manual bus scan later */
MaxPciBusNumber = MAXULONG;
} }
else else
{ {
/* Get the type and free the info structure */ /* Get the PCI type */
PciType = PciRegistryInfo->HardwareMechanism & 0xF; PciType = PciRegistryInfo->HardwareMechanism & 0xF;
/* Get MaxPciBusNumber and make it 0-based */
MaxPciBusNumber = PciRegistryInfo->NoBuses - 1;
/* Free the info structure */
ExFreePool(PciRegistryInfo); ExFreePool(PciRegistryInfo);
} }
@ -1007,7 +1000,7 @@ HalpInitializePciStubs(VOID)
/* Type 2 PCI Bus */ /* Type 2 PCI Bus */
case 2: case 2:
/* Copy the Type 1 handler data */ /* Copy the Type 2 handler data */
RtlCopyMemory(&PCIConfigHandler, RtlCopyMemory(&PCIConfigHandler,
&PCIConfigHandlerType2, &PCIConfigHandlerType2,
sizeof (PCIConfigHandler)); sizeof (PCIConfigHandler));
@ -1027,31 +1020,44 @@ HalpInitializePciStubs(VOID)
DbgPrint("HAL: Unknown PCI type\n"); DbgPrint("HAL: Unknown PCI type\n");
} }
/* Loop all possible buses */ /* Run a forced bus scan if needed */
for (i = 0; i < 256; i++) if (MaxPciBusNumber == MAXULONG)
{ {
/* Loop all devices */ /* Initialize the max bus number to 0xFF */
for (j.u.AsULONG = 0; j.u.AsULONG < 32; j.u.AsULONG++) HalpMaxPciBus = 0xFF;
/* Initialize the counter */
MaxPciBusNumber = 0;
/* Loop all possible buses */
for (i = 0; i < HalpMaxPciBus; i++)
{ {
/* Query the interface */ /* Loop all devices */
if (HaliPciInterfaceReadConfig(NULL, for (j.u.AsULONG = 0; j.u.AsULONG < BusData->MaxDevice; j.u.AsULONG++)
i,
j,
&VendorId,
0,
sizeof(ULONG)))
{ {
/* Validate the vendor ID */ /* Query the interface */
if ((USHORT)VendorId != PCI_INVALID_VENDORID) if (HaliPciInterfaceReadConfig(NULL,
i,
j,
&VendorId,
0,
sizeof(ULONG)))
{ {
/* Set this as the maximum ID */ /* Validate the vendor ID */
HalpMaxPciBus = i; if ((USHORT)VendorId != PCI_INVALID_VENDORID)
break; {
/* Set this as the maximum ID */
MaxPciBusNumber = i;
break;
}
} }
} }
} }
} }
/* Set the real max bus number */
HalpMaxPciBus = MaxPciBusNumber;
/* We're done */ /* We're done */
HalpPCIConfigInitialized = TRUE; HalpPCIConfigInitialized = TRUE;
} }

View file

@ -472,6 +472,11 @@ typedef struct
DWORD ProcessGroup; DWORD ProcessGroup;
} CSRSS_GENERATE_CTRL_EVENT, *PCSRSS_GENERATE_CTRL_EVENT; } CSRSS_GENERATE_CTRL_EVENT, *PCSRSS_GENERATE_CTRL_EVENT;
typedef struct
{
HANDLE OutputHandle;
COORD Size;
} CSRSS_SET_SCREEN_BUFFER_SIZE, *PCSRSS_SET_SCREEN_BUFFER_SIZE;
#define CSR_API_MESSAGE_HEADER_SIZE(Type) (FIELD_OFFSET(CSR_API_MESSAGE, Data) + sizeof(Type)) #define CSR_API_MESSAGE_HEADER_SIZE(Type) (FIELD_OFFSET(CSR_API_MESSAGE, Data) + sizeof(Type))
@ -551,6 +556,7 @@ typedef struct
#define GET_CONSOLE_ALIASES_EXES_LENGTH (0x3D) #define GET_CONSOLE_ALIASES_EXES_LENGTH (0x3D)
#define GENERATE_CTRL_EVENT (0x3E) #define GENERATE_CTRL_EVENT (0x3E)
#define CREATE_THREAD (0x3F) #define CREATE_THREAD (0x3F)
#define SET_SCREEN_BUFFER_SIZE (0x40)
/* Keep in sync with definition below. */ /* Keep in sync with definition below. */
#define CSRSS_HEADER_SIZE (sizeof(PORT_MESSAGE) + sizeof(ULONG) + sizeof(NTSTATUS)) #define CSRSS_HEADER_SIZE (sizeof(PORT_MESSAGE) + sizeof(ULONG) + sizeof(NTSTATUS))
@ -624,6 +630,7 @@ typedef struct _CSR_API_MESSAGE
CSRSS_GET_CONSOLE_ALIASES_EXES GetConsoleAliasesExes; CSRSS_GET_CONSOLE_ALIASES_EXES GetConsoleAliasesExes;
CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH GetConsoleAliasesExesLength; CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH GetConsoleAliasesExesLength;
CSRSS_GENERATE_CTRL_EVENT GenerateCtrlEvent; CSRSS_GENERATE_CTRL_EVENT GenerateCtrlEvent;
CSRSS_SET_SCREEN_BUFFER_SIZE SetScreenBufferSize;
} Data; } Data;
} CSR_API_MESSAGE, *PCSR_API_MESSAGE; } CSR_API_MESSAGE, *PCSR_API_MESSAGE;

View file

@ -189,6 +189,7 @@ InfHostOpenFile(PHINF InfHandle,
if (FileLength != fread(FileBuffer, (size_t)1, (size_t)FileLength, File)) if (FileLength != fread(FileBuffer, (size_t)1, (size_t)FileLength, File))
{ {
DPRINT1("fread() failed (errno %d)\n", errno); DPRINT1("fread() failed (errno %d)\n", errno);
FREE(FileBuffer);
fclose(File); fclose(File);
return -1; return -1;
} }

View file

@ -36,7 +36,7 @@ RtlMultiByteToUnicodeN(
*ResultSize = Size * sizeof(WCHAR); *ResultSize = Size * sizeof(WCHAR);
WideString = (PUCHAR)UnicodeString; WideString = (PUCHAR)UnicodeString;
for (i = 0; i <= Size; i++) for (i = 0; i < Size; i++)
{ {
WideString[2 * i + 0] = (UCHAR)MbString[i]; WideString[2 * i + 0] = (UCHAR)MbString[i];
WideString[2 * i + 1] = 0; WideString[2 * i + 1] = 0;

Binary file not shown.

Binary file not shown.

View file

@ -1612,7 +1612,7 @@ Phase1InitializationDiscard(IN PVOID Context)
else if (!strncmp(SafeBoot, "NETWORK", 7)) else if (!strncmp(SafeBoot, "NETWORK", 7))
{ {
/* With Networking */ /* With Networking */
InitSafeBootMode = 1; InitSafeBootMode = 2;
SafeBoot += 7; SafeBoot += 7;
MessageCode = BOOTING_IN_SAFEMODE_NETWORK; MessageCode = BOOTING_IN_SAFEMODE_NETWORK;
} }

View file

@ -14,8 +14,10 @@ PULONG MmGetPageDirectory(VOID);
#define PAGETABLE_MAP (0xc0000000) #define PAGETABLE_MAP (0xc0000000)
#define PAGEDIRECTORY_MAP (0xc0000000 + (PAGETABLE_MAP / (1024))) #define PAGEDIRECTORY_MAP (0xc0000000 + (PAGETABLE_MAP / (1024)))
/* FIXME: These are different for PAE */
#define PTE_BASE 0xC0000000 #define PTE_BASE 0xC0000000
#define PDE_BASE 0xC0300000 #define PDE_BASE 0xC0300000
#define PDE_TOP 0xC0300FFF
#define PTE_TOP 0xC03FFFFF #define PTE_TOP 0xC03FFFFF
#define HYPER_SPACE 0xC0400000 #define HYPER_SPACE 0xC0400000

View file

@ -166,8 +166,8 @@ KdInitSystem(ULONG BootPhase,
/* XXX Check for settings that we support */ /* XXX Check for settings that we support */
if (strstr(CommandLine, "BREAK")) KdpEarlyBreak = TRUE; if (strstr(CommandLine, "BREAK")) KdpEarlyBreak = TRUE;
if (strstr(CommandLine, "NODEBUG")) KdDebuggerEnabled = FALSE; if (strstr(CommandLine, "NODEBUG")) KdDebuggerEnabled = FALSE;
if (strstr(CommandLine, "CRASHDEBUG")) KdDebuggerEnabled = FALSE; else if (strstr(CommandLine, "CRASHDEBUG")) KdDebuggerEnabled = FALSE;
if (strstr(CommandLine, "DEBUG")) else if (strstr(CommandLine, "DEBUG"))
{ {
/* Enable on the serial port */ /* Enable on the serial port */
KdDebuggerEnabled = TRUE; KdDebuggerEnabled = TRUE;

View file

@ -1697,7 +1697,7 @@ KdbpGetCommandLineSettings(
while (p1 && (p2 = strchr(p1, ' '))) while (p1 && (p2 = strchr(p1, ' ')))
{ {
p2++; p2 += 2;
if (!_strnicmp(p2, "KDSERIAL", 8)) if (!_strnicmp(p2, "KDSERIAL", 8))
{ {

View file

@ -1206,7 +1206,7 @@ KiTrap0EHandler(IN PKTRAP_FRAME TrapFrame)
(PVOID)Cr2, (PVOID)Cr2,
TrapFrame->SegCs & MODE_MASK, TrapFrame->SegCs & MODE_MASK,
TrapFrame); TrapFrame);
if (Status == STATUS_SUCCESS) KiEoiHelper(TrapFrame); if (NT_SUCCESS(Status)) KiEoiHelper(TrapFrame);
/* Check for S-LIST fault */ /* Check for S-LIST fault */
if (TrapFrame->Eip == (ULONG_PTR)ExpInterlockedPopEntrySListFault) if (TrapFrame->Eip == (ULONG_PTR)ExpInterlockedPopEntrySListFault)

View file

@ -41,7 +41,7 @@ ULONG MmSessionPoolSize;
ULONG MmSessionImageSize; ULONG MmSessionImageSize;
PVOID MiSystemViewStart; PVOID MiSystemViewStart;
ULONG MmSystemViewSize; ULONG MmSystemViewSize;
PFN_NUMBER MmSystemPageDirectory; PFN_NUMBER MmSystemPageDirectory[PD_COUNT];
PMMPTE MmSystemPagePtes; PMMPTE MmSystemPagePtes;
ULONG MmNumberOfSystemPtes; ULONG MmNumberOfSystemPtes;
ULONG MxPfnAllocation; ULONG MxPfnAllocation;

View file

@ -18,6 +18,185 @@
/* PRIVATE FUNCTIONS **********************************************************/ /* PRIVATE FUNCTIONS **********************************************************/
PFN_NUMBER
NTAPI
MiFindContiguousPages(IN PFN_NUMBER LowestPfn,
IN PFN_NUMBER HighestPfn,
IN PFN_NUMBER BoundaryPfn,
IN PFN_NUMBER SizeInPages,
IN MEMORY_CACHING_TYPE CacheType)
{
PFN_NUMBER Page, PageCount, LastPage, Length, BoundaryMask;
ULONG i = 0;
PMMPFN Pfn1, EndPfn;
KIRQL OldIrql;
PAGED_CODE ();
ASSERT(SizeInPages != 0);
//
// Convert the boundary PFN into an alignment mask
//
BoundaryMask = ~(BoundaryPfn - 1);
//
// Loop all the physical memory blocks
//
do
{
//
// Capture the base page and length of this memory block
//
Page = MmPhysicalMemoryBlock->Run[i].BasePage;
PageCount = MmPhysicalMemoryBlock->Run[i].PageCount;
//
// Check how far this memory block will go
//
LastPage = Page + PageCount;
//
// Trim it down to only the PFNs we're actually interested in
//
if ((LastPage - 1) > HighestPfn) LastPage = HighestPfn + 1;
if (Page < LowestPfn) Page = LowestPfn;
//
// Skip this run if it's empty or fails to contain all the pages we need
//
if (!(PageCount) || ((Page + SizeInPages) > LastPage)) continue;
//
// Now scan all the relevant PFNs in this run
//
Length = 0;
for (Pfn1 = MiGetPfnEntry(Page); Page < LastPage; Page++, Pfn1++)
{
//
// If this PFN is in use, ignore it
//
if (MiIsPfnInUse(Pfn1)) continue;
//
// If we haven't chosen a start PFN yet and the caller specified an
// alignment, make sure the page matches the alignment restriction
//
if ((!(Length) && (BoundaryPfn)) &&
(((Page ^ (Page + SizeInPages - 1)) & BoundaryMask)))
{
//
// It does not, so bail out
//
continue;
}
//
// Increase the number of valid pages, and check if we have enough
//
if (++Length == SizeInPages)
{
//
// It appears we've amassed enough legitimate pages, rollback
//
Pfn1 -= (Length - 1);
Page -= (Length - 1);
//
// Acquire the PFN lock
//
OldIrql = KeAcquireQueuedSpinLock(LockQueuePfnLock);
do
{
//
// Things might've changed for us. Is the page still free?
//
if (MiIsPfnInUse(Pfn1)) break;
//
// So far so good. Is this the last confirmed valid page?
//
if (!--Length)
{
//
// Sanity check that we didn't go out of bounds
//
ASSERT(i != MmPhysicalMemoryBlock->NumberOfRuns);
//
// Loop until all PFN entries have been processed
//
EndPfn = Pfn1 - SizeInPages + 1;
do
{
//
// This PFN is now a used page, set it up
//
MiUnlinkFreeOrZeroedPage(Pfn1);
Pfn1->u3.e2.ReferenceCount = 1;
Pfn1->u2.ShareCount = 1;
Pfn1->u3.e1.PageLocation = ActiveAndValid;
Pfn1->u3.e1.StartOfAllocation = 0;
Pfn1->u3.e1.EndOfAllocation = 0;
Pfn1->u3.e1.PrototypePte = 0;
Pfn1->u4.VerifierAllocation = 0;
Pfn1->PteAddress = (PVOID)0xBAADF00D;
//
// Check if this is the last PFN, otherwise go on
//
if (Pfn1 == EndPfn) break;
Pfn1--;
} while (TRUE);
//
// Mark the first and last PFN so we can find them later
//
Pfn1->u3.e1.StartOfAllocation = 1;
(Pfn1 + SizeInPages - 1)->u3.e1.EndOfAllocation = 1;
//
// Now it's safe to let go of the PFN lock
//
KeReleaseQueuedSpinLock(LockQueuePfnLock, OldIrql);
//
// Quick sanity check that the last PFN is consistent
//
EndPfn = Pfn1 + SizeInPages;
ASSERT(EndPfn == MiGetPfnEntry(Page + 1));
//
// Compute the first page, and make sure it's consistent
//
Page -= SizeInPages - 1;
ASSERT(Pfn1 == MiGetPfnEntry(Page));
ASSERT(Page != 0);
return Page;
}
//
// Keep going. The purpose of this loop is to reconfirm that
// after acquiring the PFN lock these pages are still usable
//
Pfn1++;
Page++;
} while (TRUE);
//
// If we got here, something changed while we hadn't acquired
// the PFN lock yet, so we'll have to restart
//
KeReleaseQueuedSpinLock(LockQueuePfnLock, OldIrql);
Length = 0;
}
}
} while (++i != MmPhysicalMemoryBlock->NumberOfRuns);
//
// And if we get here, it means no suitable physical memory runs were found
//
return 0;
}
PVOID PVOID
NTAPI NTAPI
MiCheckForContiguousMemory(IN PVOID BaseAddress, MiCheckForContiguousMemory(IN PVOID BaseAddress,
@ -143,7 +322,10 @@ MiFindContiguousMemory(IN PFN_NUMBER LowestPfn,
{ {
PFN_NUMBER Page; PFN_NUMBER Page;
PHYSICAL_ADDRESS PhysicalAddress; PHYSICAL_ADDRESS PhysicalAddress;
PAGED_CODE (); PMMPFN Pfn1, EndPfn;
PMMPTE PointerPte;
PVOID BaseAddress;
PAGED_CODE();
ASSERT(SizeInPages != 0); ASSERT(SizeInPages != 0);
// //
@ -160,7 +342,22 @@ MiFindContiguousMemory(IN PFN_NUMBER LowestPfn,
// We'll just piggyback on the I/O memory mapper // We'll just piggyback on the I/O memory mapper
// //
PhysicalAddress.QuadPart = Page << PAGE_SHIFT; PhysicalAddress.QuadPart = Page << PAGE_SHIFT;
return MmMapIoSpace(PhysicalAddress, SizeInPages << PAGE_SHIFT, CacheType); BaseAddress = MmMapIoSpace(PhysicalAddress, SizeInPages << PAGE_SHIFT, CacheType);
ASSERT(BaseAddress);
/* Loop the PFN entries */
Pfn1 = MiGetPfnEntry(Page);
EndPfn = Pfn1 + SizeInPages;
PointerPte = MiAddressToPte(BaseAddress);
do
{
/* Write the PTE address */
Pfn1->PteAddress = PointerPte++;
Pfn1->u4.PteFrame = PFN_FROM_PTE(MiAddressToPte(PointerPte));
} while (Pfn1++ < EndPfn);
/* Return the address */
return BaseAddress;
} }
PVOID PVOID
@ -249,6 +446,7 @@ MiFreeContiguousMemory(IN PVOID BaseAddress)
KIRQL OldIrql; KIRQL OldIrql;
PFN_NUMBER PageFrameIndex, LastPage, PageCount; PFN_NUMBER PageFrameIndex, LastPage, PageCount;
PMMPFN Pfn1, StartPfn; PMMPFN Pfn1, StartPfn;
PMMPTE PointerPte;
PAGED_CODE(); PAGED_CODE();
// //
@ -267,10 +465,9 @@ MiFreeContiguousMemory(IN PVOID BaseAddress)
return; return;
} }
// /* Get the PTE and frame number for the allocation*/
// Otherwise, get the PTE and page number for the allocation PointerPte = MiAddressToPte(BaseAddress);
// PageFrameIndex = PFN_FROM_PTE(PointerPte);
PageFrameIndex = PFN_FROM_PTE(MiAddressToPte(BaseAddress));
// //
// Now get the PFN entry for this, and make sure it's the correct one // Now get the PFN entry for this, and make sure it's the correct one
@ -281,11 +478,11 @@ MiFreeContiguousMemory(IN PVOID BaseAddress)
// //
// This probably means you did a free on an address that was in between // This probably means you did a free on an address that was in between
// //
KeBugCheckEx (BAD_POOL_CALLER, KeBugCheckEx(BAD_POOL_CALLER,
0x60, 0x60,
(ULONG_PTR)BaseAddress, (ULONG_PTR)BaseAddress,
0, 0,
0); 0);
} }
// //
@ -294,16 +491,21 @@ MiFreeContiguousMemory(IN PVOID BaseAddress)
StartPfn = Pfn1; StartPfn = Pfn1;
Pfn1->u3.e1.StartOfAllocation = 0; Pfn1->u3.e1.StartOfAllocation = 0;
// /* Loop the PFNs until we find the one that marks the end of the allocation */
// Look the PFNs
//
do do
{ {
// /* Make sure these are the pages we setup in the allocation routine */
// Until we find the one that marks the end of the allocation ASSERT(Pfn1->u3.e2.ReferenceCount == 1);
// ASSERT(Pfn1->u2.ShareCount == 1);
ASSERT(Pfn1->PteAddress == PointerPte);
ASSERT(Pfn1->u3.e1.PageLocation == ActiveAndValid);
ASSERT(Pfn1->u4.VerifierAllocation == 0);
ASSERT(Pfn1->u3.e1.PrototypePte == 0);
/* Keep going for assertions */
PointerPte++;
} while (Pfn1++->u3.e1.EndOfAllocation == 0); } while (Pfn1++->u3.e1.EndOfAllocation == 0);
// //
// Found it, unmark it // Found it, unmark it
// //
@ -328,14 +530,14 @@ MiFreeContiguousMemory(IN PVOID BaseAddress)
// //
// Loop all the pages // Loop all the pages
// //
LastPage = PageFrameIndex + PageCount; LastPage = PageFrameIndex + PageCount;
do do
{ {
// //
// Free each one, and move on // Free each one, and move on
// //
MmReleasePageMemoryConsumer(MC_NPPOOL, PageFrameIndex); MmReleasePageMemoryConsumer(MC_NPPOOL, PageFrameIndex++);
} while (++PageFrameIndex < LastPage); } while (PageFrameIndex < LastPage);
// //
// Release the PFN lock // Release the PFN lock

View file

@ -151,6 +151,7 @@ MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
MMPTE TempPde, TempPte; MMPTE TempPde, TempPte;
PVOID NonPagedPoolExpansionVa; PVOID NonPagedPoolExpansionVa;
ULONG OldCount; ULONG OldCount;
KIRQL OldIrql;
/* Check for kernel stack size that's too big */ /* Check for kernel stack size that's too big */
if (MmLargeStackSize > (KERNEL_LARGE_STACK_SIZE / _1KB)) if (MmLargeStackSize > (KERNEL_LARGE_STACK_SIZE / _1KB))
@ -338,7 +339,7 @@ MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
MmNonPagedSystemStart = (PVOID)((ULONG_PTR)MmNonPagedPoolStart - MmNonPagedSystemStart = (PVOID)((ULONG_PTR)MmNonPagedPoolStart -
(MmNumberOfSystemPtes + 1) * PAGE_SIZE); (MmNumberOfSystemPtes + 1) * PAGE_SIZE);
MmNonPagedSystemStart = (PVOID)((ULONG_PTR)MmNonPagedSystemStart & MmNonPagedSystemStart = (PVOID)((ULONG_PTR)MmNonPagedSystemStart &
~((4 * 1024 * 1024) - 1)); ~(PDE_MAPPED_VA - 1));
// //
// Don't let it go below the minimum // Don't let it go below the minimum
@ -386,7 +387,7 @@ MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
// //
MmPfnDatabase[0] = (PVOID)0xB0000000; MmPfnDatabase[0] = (PVOID)0xB0000000;
MmPfnDatabase[1] = &MmPfnDatabase[0][MmHighestPhysicalPage]; MmPfnDatabase[1] = &MmPfnDatabase[0][MmHighestPhysicalPage];
ASSERT(((ULONG_PTR)MmPfnDatabase[0] & ((4 * 1024 * 1024) - 1)) == 0); ASSERT(((ULONG_PTR)MmPfnDatabase[0] & (PDE_MAPPED_VA - 1)) == 0);
// //
// Non paged pool comes after the PFN database // Non paged pool comes after the PFN database
@ -541,21 +542,26 @@ MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
// //
MiInitializeSystemPtes(PointerPte, MmNumberOfSystemPtes, SystemPteSpace); MiInitializeSystemPtes(PointerPte, MmNumberOfSystemPtes, SystemPteSpace);
// /* Get the PDE For hyperspace */
// Get the PDE For hyperspace
//
StartPde = MiAddressToPde(HYPER_SPACE); StartPde = MiAddressToPde(HYPER_SPACE);
// /* Lock PFN database */
// Allocate a page for it and create it OldIrql = KeAcquireQueuedSpinLock(LockQueuePfnLock);
//
PageFrameIndex = MmAllocPage(MC_SYSTEM); /* Allocate a page for hyperspace and create it */
PageFrameIndex = MiRemoveAnyPage(0);
TempPde.u.Hard.PageFrameNumber = PageFrameIndex; TempPde.u.Hard.PageFrameNumber = PageFrameIndex;
TempPde.u.Hard.Global = FALSE; // Hyperspace is local! TempPde.u.Hard.Global = FALSE; // Hyperspace is local!
ASSERT(StartPde->u.Hard.Valid == 0); ASSERT(StartPde->u.Hard.Valid == 0);
ASSERT(TempPde.u.Hard.Valid == 1); ASSERT(TempPde.u.Hard.Valid == 1);
*StartPde = TempPde; *StartPde = TempPde;
/* Flush the TLB */
KeFlushCurrentTb();
/* Release the lock */
KeReleaseQueuedSpinLock(LockQueuePfnLock, OldIrql);
// //
// Zero out the page table now // Zero out the page table now
// //

View file

@ -42,7 +42,7 @@
#define _1KB (1024) #define _1KB (1024)
#define _1MB (1024 * _1KB) #define _1MB (1024 * _1KB)
/* Are mapped by a PDE */ /* Area mapped by a PDE */
#define PDE_MAPPED_VA (PTE_COUNT * PAGE_SIZE) #define PDE_MAPPED_VA (PTE_COUNT * PAGE_SIZE)
/* Size of a PDE directory, and size of a page table */ /* Size of a PDE directory, and size of a page table */
@ -89,6 +89,36 @@
#define MM_DECOMMIT 0x10 #define MM_DECOMMIT 0x10
#define MM_NOACCESS (MM_DECOMMIT | MM_NOCACHE) #define MM_NOACCESS (MM_DECOMMIT | MM_NOCACHE)
//
// Assertions for session images, addresses, and PTEs
//
#define MI_IS_SESSION_IMAGE_ADDRESS(Address) \
(((Address) >= MiSessionImageStart) && ((Address) < MiSessionImageEnd))
#define MI_IS_SESSION_ADDRESS(Address) \
(((Address) >= MmSessionBase) && ((Address) < MiSessionSpaceEnd))
#define MI_IS_SESSION_PTE(Pte) \
((((PMMPTE)Pte) >= MiSessionBasePte) && (((PMMPTE)Pte) < MiSessionLastPte))
//
// Corresponds to MMPTE_SOFTWARE.Protection
//
#ifdef _M_IX86
#define MM_PTE_SOFTWARE_PROTECTION_BITS 5
#elif _M_ARM
#define MM_PTE_SOFTWARE_PROTECTION_BITS 5
#elif _M_AMD64
#define MM_PTE_SOFTWARE_PROTECTION_BITS 5
#else
#error Define these please!
#endif
//
// Creates a software PTE with the given protection
//
#define MI_MAKE_SOFTWARE_PTE(p, x) ((p)->u.Long = (x << MM_PTE_SOFTWARE_PROTECTION_BITS))
// //
// Special values for LoadedImports // Special values for LoadedImports
// //
@ -101,6 +131,11 @@
// //
#define LIST_HEAD 0xFFFFFFFF #define LIST_HEAD 0xFFFFFFFF
//
// Special IRQL value (found in assertions)
//
#define MM_NOIRQL (KIRQL)0xFFFFFFFF
// //
// FIXFIX: These should go in ex.h after the pool merge // FIXFIX: These should go in ex.h after the pool merge
// //
@ -266,6 +301,10 @@ extern PVOID MiSystemViewStart;
extern ULONG MmSystemViewSize; extern ULONG MmSystemViewSize;
extern PVOID MmSessionBase; extern PVOID MmSessionBase;
extern PVOID MiSessionSpaceEnd; extern PVOID MiSessionSpaceEnd;
extern PMMPTE MiSessionImagePteStart;
extern PMMPTE MiSessionImagePteEnd;
extern PMMPTE MiSessionBasePte;
extern PMMPTE MiSessionLastPte;
extern ULONG MmSizeOfPagedPoolInBytes; extern ULONG MmSizeOfPagedPoolInBytes;
extern PMMPTE MmSystemPagePtes; extern PMMPTE MmSystemPagePtes;
extern PVOID MmSystemCacheStart; extern PVOID MmSystemCacheStart;
@ -309,16 +348,17 @@ extern ULONG MmTotalFreeSystemPtes[MaximumPtePoolTypes];
extern PFN_NUMBER MmTotalSystemDriverPages; extern PFN_NUMBER MmTotalSystemDriverPages;
extern PVOID MiSessionImageStart; extern PVOID MiSessionImageStart;
extern PVOID MiSessionImageEnd; extern PVOID MiSessionImageEnd;
extern PMMPTE MiHighestUserPte;
extern PMMPDE MiHighestUserPde;
extern PFN_NUMBER MmSystemPageDirectory[PD_COUNT];
#define MI_PFN_TO_PFNENTRY(x) (&MmPfnDatabase[1][x]) #define MI_PFN_TO_PFNENTRY(x) (&MmPfnDatabase[1][x])
#define MI_PFNENTRY_TO_PFN(x) (x - MmPfnDatabase[1]) #define MI_PFNENTRY_TO_PFN(x) (x - MmPfnDatabase[1])
#define MI_IS_SESSION_IMAGE_ADDRESS(Address) \ //
(((Address) >= MiSessionImageStart) && ((Address) < MiSessionImageEnd)) // Returns if the page is physically resident (ie: a large page)
// FIXFIX: CISC/x86 only?
#define MI_IS_SESSION_ADDRESS(Address) \ //
(((Address) >= MmSessionBase) && ((Address) < MiSessionSpaceEnd))
FORCEINLINE FORCEINLINE
BOOLEAN BOOLEAN
MI_IS_PHYSICAL_ADDRESS(IN PVOID Address) MI_IS_PHYSICAL_ADDRESS(IN PVOID Address)
@ -409,6 +449,12 @@ MmArmAccessFault(
IN PVOID TrapInformation IN PVOID TrapInformation
); );
NTSTATUS
FASTCALL
MiCheckPdeForPagedPool(
IN PVOID Address
);
VOID VOID
NTAPI NTAPI
MiInitializeNonPagedPool( MiInitializeNonPagedPool(
@ -532,6 +578,18 @@ MiRemoveHeadList(
IN PMMPFNLIST ListHead IN PMMPFNLIST ListHead
); );
PFN_NUMBER
NTAPI
MiAllocatePfn(
IN PMMPTE PointerPte,
IN ULONG Protection
);
PFN_NUMBER
NTAPI
MiRemoveAnyPage(
IN ULONG Color
);
VOID VOID
NTAPI NTAPI
@ -563,4 +621,10 @@ MiSyncCachedRanges(
VOID VOID
); );
BOOLEAN
NTAPI
MiIsPfnInUse(
IN PMMPFN Pfn1
);
/* EOF */ /* EOF */

View file

@ -136,6 +136,14 @@ ULONG MmSessionViewSize;
ULONG MmSessionPoolSize; ULONG MmSessionPoolSize;
ULONG MmSessionImageSize; ULONG MmSessionImageSize;
/*
* These are the PTE addresses of the boundaries carved out above
*/
PMMPTE MiSessionImagePteStart;
PMMPTE MiSessionImagePteEnd;
PMMPTE MiSessionBasePte;
PMMPTE MiSessionLastPte;
// //
// The system view space, on the other hand, is where sections that are memory // The system view space, on the other hand, is where sections that are memory
// mapped into "system space" end up. // mapped into "system space" end up.
@ -151,7 +159,7 @@ ULONG MmSystemViewSize;
// map paged pool PDEs into external processes when they fault on a paged pool // map paged pool PDEs into external processes when they fault on a paged pool
// address. // address.
// //
PFN_NUMBER MmSystemPageDirectory; PFN_NUMBER MmSystemPageDirectory[PD_COUNT];
PMMPTE MmSystemPagePtes; PMMPTE MmSystemPagePtes;
// //
@ -217,6 +225,11 @@ ULONG MmUserProbeAddress;
PVOID MmHighestUserAddress; PVOID MmHighestUserAddress;
PVOID MmSystemRangeStart; PVOID MmSystemRangeStart;
/* And these store the respective highest PTE/PDE address */
PMMPTE MiHighestUserPte;
PMMPDE MiHighestUserPde;
/* These variables define the system cache address space */
PVOID MmSystemCacheStart; PVOID MmSystemCacheStart;
PVOID MmSystemCacheEnd; PVOID MmSystemCacheEnd;
MMSUPPORT MmSystemCacheWs; MMSUPPORT MmSystemCacheWs;
@ -1483,7 +1496,8 @@ MiBuildPagedPool(VOID)
// Get the page frame number for the system page directory // Get the page frame number for the system page directory
// //
PointerPte = MiAddressToPte(PDE_BASE); PointerPte = MiAddressToPte(PDE_BASE);
MmSystemPageDirectory = PFN_FROM_PTE(PointerPte); ASSERT(PD_COUNT == 1);
MmSystemPageDirectory[0] = PFN_FROM_PTE(PointerPte);
// //
// Allocate a system PTE which will hold a copy of the page directory // Allocate a system PTE which will hold a copy of the page directory
@ -1500,7 +1514,8 @@ MiBuildPagedPool(VOID)
// way). // way).
// //
TempPte = ValidKernelPte; TempPte = ValidKernelPte;
TempPte.u.Hard.PageFrameNumber = MmSystemPageDirectory; ASSERT(PD_COUNT == 1);
TempPte.u.Hard.PageFrameNumber = MmSystemPageDirectory[0];
ASSERT(PointerPte->u.Hard.Valid == 0); ASSERT(PointerPte->u.Hard.Valid == 0);
ASSERT(TempPte.u.Hard.Valid == 1); ASSERT(TempPte.u.Hard.Valid == 1);
*PointerPte = TempPte; *PointerPte = TempPte;
@ -1698,6 +1713,10 @@ MmArmInitSystem(IN ULONG Phase,
MmUserProbeAddress = (ULONG_PTR)MmSystemRangeStart - 0x10000; MmUserProbeAddress = (ULONG_PTR)MmSystemRangeStart - 0x10000;
MmHighestUserAddress = (PVOID)(MmUserProbeAddress - 1); MmHighestUserAddress = (PVOID)(MmUserProbeAddress - 1);
/* Highest PTE and PDE based on the addresses above */
MiHighestUserPte = MiAddressToPte(MmHighestUserAddress);
MiHighestUserPde = MiAddressToPde(MmHighestUserAddress);
// //
// Get the size of the boot loader's image allocations and then round // Get the size of the boot loader's image allocations and then round
// that region up to a PDE size, so that any PDEs we might create for // that region up to a PDE size, so that any PDEs we might create for
@ -1706,8 +1725,8 @@ MmArmInitSystem(IN ULONG Phase,
// //
MmBootImageSize = KeLoaderBlock->Extension->LoaderPagesSpanned; MmBootImageSize = KeLoaderBlock->Extension->LoaderPagesSpanned;
MmBootImageSize *= PAGE_SIZE; MmBootImageSize *= PAGE_SIZE;
MmBootImageSize = (MmBootImageSize + (4 * 1024 * 1024) - 1) & ~((4 * 1024 * 1024) - 1); MmBootImageSize = (MmBootImageSize + PDE_MAPPED_VA - 1) & ~(PDE_MAPPED_VA - 1);
ASSERT((MmBootImageSize % (4 * 1024 * 1024)) == 0); ASSERT((MmBootImageSize % PDE_MAPPED_VA) == 0);
// //
// Set the size of session view, pool, and image // Set the size of session view, pool, and image
@ -1770,7 +1789,12 @@ MmArmInitSystem(IN ULONG Phase,
// //
MiSystemViewStart = (PVOID)((ULONG_PTR)MmSessionBase - MiSystemViewStart = (PVOID)((ULONG_PTR)MmSessionBase -
MmSystemViewSize); MmSystemViewSize);
/* Compute the PTE addresses for all the addresses we carved out */
MiSessionImagePteStart = MiAddressToPte(MiSessionImageStart);
MiSessionImagePteEnd = MiAddressToPte(MiSessionImageEnd);
MiSessionBasePte = MiAddressToPte(MmSessionBase);
MiSessionLastPte = MiAddressToPte(MiSessionSpaceEnd);
/* Initialize the user mode image list */ /* Initialize the user mode image list */
InitializeListHead(&MmLoadedUserImageList); InitializeListHead(&MmLoadedUserImageList);

View file

@ -27,6 +27,10 @@ MiCheckPdeForPagedPool(IN PVOID Address)
PMMPDE PointerPde; PMMPDE PointerPde;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
/* No session support in ReactOS yet */
ASSERT(MI_IS_SESSION_ADDRESS(Address) == FALSE);
ASSERT(MI_IS_SESSION_PTE(Address) == FALSE);
// //
// Check if this is a fault while trying to access the page table itself // Check if this is a fault while trying to access the page table itself
// //
@ -60,6 +64,9 @@ MiCheckPdeForPagedPool(IN PVOID Address)
// //
if (PointerPde->u.Hard.Valid == 0) if (PointerPde->u.Hard.Valid == 0)
{ {
/* This seems to be making the assumption that one PDE is one page long */
ASSERT(PAGE_SIZE == (PD_COUNT * (sizeof(MMPTE) * PDE_COUNT)));
// //
// Copy it from our double-mapped system page directory // Copy it from our double-mapped system page directory
// //
@ -88,6 +95,10 @@ MiResolveDemandZeroFault(IN PVOID Address,
Address, Address,
Process); Process);
/* Must currently only be called by paging path, for system addresses only */
ASSERT(OldIrql == MM_NOIRQL);
ASSERT(Process == NULL);
// //
// Lock the PFN database // Lock the PFN database
// //
@ -110,11 +121,16 @@ MiResolveDemandZeroFault(IN PVOID Address,
// //
InterlockedIncrement(&KeGetCurrentPrcb()->MmDemandZeroCount); InterlockedIncrement(&KeGetCurrentPrcb()->MmDemandZeroCount);
/* Shouldn't see faults for user PTEs yet */
ASSERT(PointerPte > MiHighestUserPte);
// //
// Build the PTE // Build the PTE
// //
TempPte = ValidKernelPte; TempPte = ValidKernelPte;
TempPte.u.Hard.PageFrameNumber = PageFrameNumber; TempPte.u.Hard.PageFrameNumber = PageFrameNumber;
ASSERT(TempPte.u.Hard.Valid == 1);
ASSERT(PointerPte->u.Hard.Valid == 0);
*PointerPte = TempPte; *PointerPte = TempPte;
ASSERT(PointerPte->u.Hard.Valid == 1); ASSERT(PointerPte->u.Hard.Valid == 1);
@ -155,6 +171,9 @@ MiDispatchFault(IN BOOLEAN StoreInstruction,
// //
TempPte = *PointerPte; TempPte = *PointerPte;
/* No prototype */
ASSERT(PrototypePte == NULL);
// //
// The PTE must be invalid, but not totally blank // The PTE must be invalid, but not totally blank
// //
@ -175,7 +194,8 @@ MiDispatchFault(IN BOOLEAN StoreInstruction,
Status = MiResolveDemandZeroFault(Address, Status = MiResolveDemandZeroFault(Address,
PointerPte, PointerPte,
Process, Process,
-1); MM_NOIRQL);
ASSERT(KeAreAllApcsDisabled () == TRUE);
if (NT_SUCCESS(Status)) if (NT_SUCCESS(Status))
{ {
// //
@ -304,7 +324,7 @@ MmArmAccessFault(IN BOOLEAN StoreInstruction,
// //
// This might happen...not sure yet // This might happen...not sure yet
// //
DPRINT1("FAULT ON PAGE TABLES!\n"); DPRINT1("FAULT ON PAGE TABLES: %p %lx %lx!\n", Address, *PointerPte, *PointerPde);
// //
// Map in the page table // Map in the page table

View file

@ -244,6 +244,175 @@ MiUnlinkFreeOrZeroedPage(IN PMMPFN Entry)
} }
} }
PFN_NUMBER
NTAPI
MiRemovePageByColor(IN PFN_NUMBER PageIndex,
IN ULONG Color)
{
PMMPFN Pfn1;
PMMPFNLIST ListHead;
MMLISTS ListName;
PFN_NUMBER OldFlink, OldBlink;
ULONG OldColor, OldCache;
#if 0
PMMCOLOR_TABLES ColorTable;
#endif
/* Make sure PFN lock is held */
ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL);
ASSERT(Color < MmSecondaryColors);
/* Get the PFN entry */
Pfn1 = MiGetPfnEntry(PageIndex);
ASSERT(Pfn1->u3.e1.RemovalRequested == 0);
ASSERT(Pfn1->u3.e1.Rom == 0);
/* Capture data for later */
OldColor = Pfn1->u3.e1.PageColor;
OldCache = Pfn1->u3.e1.CacheAttribute;
/* Could be either on free or zero list */
ListHead = MmPageLocationList[Pfn1->u3.e1.PageLocation];
ListName = ListHead->ListName;
ASSERT(ListName <= FreePageList);
/* Remove a page */
ListHead->Total--;
/* Get the forward and back pointers */
OldFlink = Pfn1->u1.Flink;
OldBlink = Pfn1->u2.Blink;
/* Check if the next entry is the list head */
if (OldFlink != LIST_HEAD)
{
/* It is not, so set the backlink of the actual entry, to our backlink */
MiGetPfnEntry(OldFlink)->u2.Blink = OldBlink;
}
else
{
/* Set the list head's backlink instead */
ListHead->Blink = OldFlink;
}
/* Check if the back entry is the list head */
if (OldBlink != LIST_HEAD)
{
/* It is not, so set the backlink of the actual entry, to our backlink */
MiGetPfnEntry(OldBlink)->u1.Flink = OldFlink;
}
else
{
/* Set the list head's backlink instead */
ListHead->Flink = OldFlink;
}
/* We are not on a list anymore */
Pfn1->u1.Flink = Pfn1->u2.Blink = 0;
/* Zero flags but restore color and cache */
Pfn1->u3.e2.ShortFlags = 0;
Pfn1->u3.e1.PageColor = OldColor;
Pfn1->u3.e1.CacheAttribute = OldCache;
#if 0 // When switching to ARM3
/* Get the first page on the color list */
ColorTable = &MmFreePagesByColor[ListName][Color];
ASSERT(ColorTable->Count >= 1);
/* Set the forward link to whoever we were pointing to */
ColorTable->Flink = Pfn1->OriginalPte.u.Long;
if (ColorTable->Flink == LIST_HEAD)
{
/* This is the beginning of the list, so set the sentinel value */
ColorTable->Blink = LIST_HEAD;
}
else
{
/* The list is empty, so we are the first page */
MiGetPfnEntry(ColorTable->Flink)->u4.PteFrame = -1;
}
/* One more page */
ColorTable->Total++;
#endif
/* See if we hit any thresholds */
if (MmAvailablePages == MmHighMemoryThreshold)
{
/* Clear the high memory event */
KeClearEvent(MiHighMemoryEvent);
}
else if (MmAvailablePages == MmLowMemoryThreshold)
{
/* Signal the low memory event */
KeSetEvent(MiLowMemoryEvent, 0, FALSE);
}
/* One less page */
if (--MmAvailablePages < MmMinimumFreePages)
{
/* FIXME: Should wake up the MPW and working set manager, if we had one */
}
/* Return the page */
return PageIndex;
}
PFN_NUMBER
NTAPI
MiRemoveAnyPage(IN ULONG Color)
{
PFN_NUMBER PageIndex;
PMMPFN Pfn1;
/* Make sure PFN lock is held and we have pages */
ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL);
ASSERT(MmAvailablePages != 0);
ASSERT(Color < MmSecondaryColors);
/* Check the colored free list */
#if 0 // Enable when using ARM3 database */
PageIndex = MmFreePagesByColor[FreePageList][Color].Flink;
if (PageIndex == LIST_HEAD)
{
/* Check the colored zero list */
PageIndex = MmFreePagesByColor[ZeroedPageList][Color].Flink;
if (PageIndex == LIST_HEAD)
{
#endif
/* Check the free list */
PageIndex = MmFreePageListHead.Flink;
Color = PageIndex & MmSecondaryColorMask;
if (PageIndex == LIST_HEAD)
{
/* Check the zero list */
ASSERT(MmFreePageListHead.Total == 0);
PageIndex = MmZeroedPageListHead.Flink;
Color = PageIndex & MmSecondaryColorMask;
ASSERT(PageIndex != LIST_HEAD);
if (PageIndex == LIST_HEAD)
{
/* FIXME: Should check the standby list */
ASSERT(MmZeroedPageListHead.Total == 0);
}
}
#if 0 // Enable when using ARM3 database */
}
}
#endif
/* Remove the page from its list */
PageIndex = MiRemovePageByColor(PageIndex, Color);
/* Sanity checks */
Pfn1 = MiGetPfnEntry(PageIndex);
ASSERT((Pfn1->u3.e1.PageLocation == FreePageList) ||
(Pfn1->u3.e1.PageLocation == ZeroedPageList));
ASSERT(Pfn1->u3.e2.ReferenceCount == 0);
ASSERT(Pfn1->u2.ShareCount == 0);
/* Return the page */
return PageIndex;
}
PMMPFN PMMPFN
NTAPI NTAPI
MiRemoveHeadList(IN PMMPFNLIST ListHead) MiRemoveHeadList(IN PMMPFNLIST ListHead)
@ -285,17 +454,19 @@ MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
{ {
PMMPFNLIST ListHead; PMMPFNLIST ListHead;
PFN_NUMBER LastPage; PFN_NUMBER LastPage;
PMMPFN Pfn1, Blink; PMMPFN Pfn1;
#if 0
ULONG Color; ULONG Color;
PMMCOLOR_TABLES ColorHead; PMMPFN Blink;
PMMCOLOR_TABLES ColorTable;
#endif
/* Make sure the page index is valid */ /* Make sure the page index is valid */
ASSERT((PageFrameIndex != 0) && ASSERT((PageFrameIndex != 0) &&
(PageFrameIndex <= MmHighestPhysicalPage) && (PageFrameIndex <= MmHighestPhysicalPage) &&
(PageFrameIndex >= MmLowestPhysicalPage)); (PageFrameIndex >= MmLowestPhysicalPage));
/* Get the PFN entry */ /* Get the PFN entry */
Pfn1 = MI_PFN_TO_PFNENTRY(PageFrameIndex); Pfn1 = MiGetPfnEntry(PageFrameIndex);
/* Sanity checks that a right kind of page is being inserted here */ /* Sanity checks that a right kind of page is being inserted here */
ASSERT(Pfn1->u4.MustBeCached == 0); ASSERT(Pfn1->u4.MustBeCached == 0);
@ -313,7 +484,7 @@ MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
if (LastPage != LIST_HEAD) if (LastPage != LIST_HEAD)
{ {
/* Link us with the previous page, so we're at the end now */ /* Link us with the previous page, so we're at the end now */
MI_PFN_TO_PFNENTRY(LastPage)->u1.Flink = PageFrameIndex; MiGetPfnEntry(LastPage)->u1.Flink = PageFrameIndex;
} }
else else
{ {
@ -336,8 +507,8 @@ MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
Pfn1->u4.InPageError = 0; Pfn1->u4.InPageError = 0;
Pfn1->u4.AweAllocation = 0; Pfn1->u4.AweAllocation = 0;
/* Not yet until we switch to this */ /* Increase available pages */
//MmAvailablePages++; MmAvailablePages++;
/* Check if we've reached the configured low memory threshold */ /* Check if we've reached the configured low memory threshold */
if (MmAvailablePages == MmLowMemoryThreshold) if (MmAvailablePages == MmLowMemoryThreshold)
@ -351,21 +522,22 @@ MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
KeSetEvent(MiHighMemoryEvent, 0, FALSE); KeSetEvent(MiHighMemoryEvent, 0, FALSE);
} }
#if 0 // When using ARM3 PFN
/* Get the page color */ /* Get the page color */
Color = PageFrameIndex & MmSecondaryColorMask; Color = PageFrameIndex & MmSecondaryColorMask;
/* Get the first page on the color list */ /* Get the first page on the color list */
ColorHead = &MmFreePagesByColor[FreePageList][Color]; ColorTable = &MmFreePagesByColor[FreePageList][Color];
if (ColorHead->Flink == LIST_HEAD) if (ColorTable->Flink == LIST_HEAD)
{ {
/* The list is empty, so we are the first page */ /* The list is empty, so we are the first page */
Pfn1->u4.PteFrame = -1; Pfn1->u4.PteFrame = -1;
ColorHead->Flink = PageFrameIndex; ColorTable->Flink = PageFrameIndex;
} }
else else
{ {
/* Get the previous page */ /* Get the previous page */
Blink = (PMMPFN)ColorHead->Blink; Blink = (PMMPFN)ColorTable->Blink;
/* Make it link to us */ /* Make it link to us */
Pfn1->u4.PteFrame = MI_PFNENTRY_TO_PFN(Blink); Pfn1->u4.PteFrame = MI_PFNENTRY_TO_PFN(Blink);
@ -373,13 +545,20 @@ MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
} }
/* Now initialize our own list pointers */ /* Now initialize our own list pointers */
ColorHead->Blink = Pfn1; ColorTable->Blink = Pfn1;
Pfn1->OriginalPte.u.Long = LIST_HEAD; Pfn1->OriginalPte.u.Long = LIST_HEAD;
/* And increase the count in the colored list */ /* And increase the count in the colored list */
ColorHead->Count++; ColorTable->Count++;
#endif
/* FIXME: Notify zero page thread if enough pages are on the free list now */ /* Notify zero page thread if enough pages are on the free list now */
extern KEVENT ZeroPageThreadEvent;
if ((MmFreePageListHead.Total > 8) && !(KeReadStateEvent(&ZeroPageThreadEvent)))
{
/* This is ReactOS-specific */
KeSetEvent(&ZeroPageThreadEvent, IO_NO_INCREMENT, FALSE);
}
} }
/* EOF */ /* EOF */

View file

@ -334,12 +334,13 @@ MiAllocatePoolPages(IN POOL_TYPE PoolType,
// //
// Save it into our double-buffered system page directory // Save it into our double-buffered system page directory
// //
/* This seems to be making the assumption that one PDE is one page long */
ASSERT(PAGE_SIZE == (PD_COUNT * (sizeof(MMPTE) * PDE_COUNT)));
MmSystemPagePtes[(ULONG_PTR)PointerPte & (PAGE_SIZE - 1) / MmSystemPagePtes[(ULONG_PTR)PointerPte & (PAGE_SIZE - 1) /
sizeof(MMPTE)] = TempPte; sizeof(MMPTE)] = TempPte;
// /* Write the actual PTE now */
// Write the actual PTE now ASSERT(TempPte.u.Hard.Valid == 1);
//
*PointerPte++ = TempPte; *PointerPte++ = TempPte;
// //
@ -432,6 +433,7 @@ MiAllocatePoolPages(IN POOL_TYPE PoolType,
// //
// Write the demand zero PTE and keep going // Write the demand zero PTE and keep going
// //
ASSERT(PointerPte->u.Hard.Valid == 0);
*PointerPte++ = TempPte; *PointerPte++ = TempPte;
} while (PointerPte < StartPte); } while (PointerPte < StartPte);
@ -593,14 +595,15 @@ MiAllocatePoolPages(IN POOL_TYPE PoolType,
// //
PageFrameNumber = MmAllocPage(MC_NPPOOL); PageFrameNumber = MmAllocPage(MC_NPPOOL);
// /* Get the PFN entry for it and fill it out */
// Get the PFN entry for it
//
Pfn1 = MiGetPfnEntry(PageFrameNumber); Pfn1 = MiGetPfnEntry(PageFrameNumber);
Pfn1->u3.e2.ReferenceCount = 1;
Pfn1->u2.ShareCount = 1;
Pfn1->PteAddress = PointerPte;
Pfn1->u3.e1.PageLocation = ActiveAndValid;
Pfn1->u4.VerifierAllocation = 0;
// /* Write the PTE for it */
// Write the PTE for it
//
TempPte.u.Hard.PageFrameNumber = PageFrameNumber; TempPte.u.Hard.PageFrameNumber = PageFrameNumber;
ASSERT(PointerPte->u.Hard.Valid == 0); ASSERT(PointerPte->u.Hard.Valid == 0);
ASSERT(TempPte.u.Hard.Valid == 1); ASSERT(TempPte.u.Hard.Valid == 1);

Some files were not shown because too many files have changed in this diff Show more