mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 18:45:46 +00:00
sync with trunk r47227
svn path=/branches/reactos-yarotows/; revision=47228
This commit is contained in:
commit
63b50165b2
120 changed files with 2678 additions and 18856 deletions
5
Makefile
5
Makefile
|
@ -472,11 +472,6 @@ rgenstat: $(RGENSTAT_TARGET)
|
|||
$(ECHO_RGENSTAT)
|
||||
$(Q)$(RGENSTAT_TARGET) apistatus.lst apistatus.xml
|
||||
|
||||
.PHONY: cb
|
||||
cb: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) cb
|
||||
|
||||
.PHONY: msbuild
|
||||
msbuild: $(ROS_BUILDENGINE)
|
||||
$(ECHO_RBUILD)
|
||||
|
|
78
base/applications/cacls/lang/ja-JP.rc
Normal file
78
base/applications/cacls/lang/ja-JP.rc
Normal 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
|
|
@ -10,6 +10,7 @@
|
|||
#include "lang/fr-FR.rc"
|
||||
#include "lang/id-ID.rc"
|
||||
#include "lang/it-IT.rc"
|
||||
#include "lang/ja-JP.rc"
|
||||
#include "lang/ko-KR.rc"
|
||||
#include "lang/no-NO.rc"
|
||||
#include "lang/nl-NL.rc"
|
||||
|
|
193
base/applications/rapps/lang/it-IT.rc
Normal file
193
base/applications/rapps/lang/it-IT.rc
Normal 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
|
|
@ -8,35 +8,35 @@ Description = The most popular and one of the best free Web Browsers out there.
|
|||
Size = 7.2M
|
||||
Category = 5
|
||||
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
|
||||
|
||||
[Section.0407]
|
||||
Description = Der populärste und einer der besten freien Webbrowser.
|
||||
Size = 7.0M
|
||||
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]
|
||||
Description = El más popular y uno de los mejores navegadores web gratuitos que hay.
|
||||
Size = 7.0M
|
||||
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]
|
||||
Description = Mest populære og best også gratis nettleserene der ute.
|
||||
Size = 7.0M
|
||||
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]
|
||||
Description = Najpopularniejsza i jedna z najlepszych darmowych przeglądarek internetowych.
|
||||
Size = 7.8M
|
||||
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]
|
||||
Description = Один из самых популярных и лучших бесплатных браузеров.
|
||||
Size = 7.4M
|
||||
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
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
[Section]
|
||||
Name = Miranda IM
|
||||
Version = 0.8.21
|
||||
Version = 0.8.22
|
||||
Licence = GPL
|
||||
Description = Open source multiprotocol instant messaging application - May not work completely.
|
||||
Size = 1.6MB
|
||||
Category = 5
|
||||
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
|
||||
|
||||
[Section.0407]
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
[Section]
|
||||
Name = OpenTTD
|
||||
Version = 1.0.0
|
||||
Version = 1.0.1
|
||||
Licence = GPL v2
|
||||
Description = Open Source clone of the "Transport Tycoon Deluxe" game engine. You need a copy of Transport Tycoon.
|
||||
Size = 3.5MB
|
||||
Category = 4
|
||||
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
|
||||
|
||||
[Section.0407]
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
[Section]
|
||||
Name = Opera
|
||||
Version = 10.52
|
||||
Version = 10.53
|
||||
Licence = Freeware
|
||||
Description = The popular Opera Browser with many advanced features and including a Mail and BitTorrent client.
|
||||
Size = 12.0M
|
||||
Size = 12.4M
|
||||
Category = 5
|
||||
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
|
||||
|
||||
[Section.0407]
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
[Section]
|
||||
Name = ScummVM
|
||||
Version = 1.1.0
|
||||
Version = 1.1.1
|
||||
Licence = GPL
|
||||
Description = Sam and Max, Day of the Tentacle, etc on ReactOS.
|
||||
Size = 3.4MB
|
||||
Size = 3.3MB
|
||||
Category = 4
|
||||
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
|
||||
|
||||
[Section.0407]
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "lang/de-DE.rc"
|
||||
#include "lang/en-US.rc"
|
||||
#include "lang/es-ES.rc"
|
||||
#include "lang/it-IT.rc"
|
||||
#include "lang/ja-JP.rc"
|
||||
#include "lang/no-NO.rc"
|
||||
#include "lang/pl-PL.rc"
|
||||
|
|
|
@ -399,13 +399,13 @@ static MUI_ENTRY itITDevicePageEntries[] =
|
|||
{
|
||||
6,
|
||||
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
|
||||
},
|
||||
{
|
||||
6,
|
||||
20,
|
||||
"Premere INVIO per modificare la configurazione alternativa.",
|
||||
"e modificarlo premendo INVIO per selezionare un valore alternativo.",
|
||||
TEXT_STYLE_NORMAL
|
||||
},
|
||||
{
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
/* INCLUDES *****************************************************************/
|
||||
|
||||
#include "winlogon.h"
|
||||
#include <shlobj.h>
|
||||
|
||||
#include <wine/debug.h>
|
||||
|
||||
|
@ -18,18 +19,107 @@ WINE_DEFAULT_DEBUG_CHANNEL(winlogon);
|
|||
|
||||
/* GLOBALS ******************************************************************/
|
||||
|
||||
typedef HRESULT (WINAPI *PFSHGETFOLDERPATHW)(HWND, int, HANDLE, DWORD, LPWSTR);
|
||||
|
||||
|
||||
/* FUNCTIONS ****************************************************************/
|
||||
|
||||
BOOL
|
||||
CreateUserEnvironment(IN PWLSESSION Session,
|
||||
IN LPVOID *lpEnvironment,
|
||||
IN LPWSTR *lpFullEnv)
|
||||
static VOID
|
||||
BuildVolatileEnvironment(IN PWLSESSION Session,
|
||||
IN HKEY hKey)
|
||||
{
|
||||
HINSTANCE hShell32 = NULL;
|
||||
PFSHGETFOLDERPATHW pfSHGetFolderPathW = NULL;
|
||||
WCHAR szPath[MAX_PATH + 1];
|
||||
WCHAR szExpandedPath[MAX_PATH + 1];
|
||||
LPCWSTR wstr;
|
||||
SIZE_T EnvBlockSize = 0, ProfileSize = 0;
|
||||
LPVOID lpEnviron = NULL;
|
||||
LPWSTR lpFullEnviron = NULL;
|
||||
SIZE_T size;
|
||||
WCHAR szEnvKey[MAX_PATH];
|
||||
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;
|
||||
DWORD dwDisp;
|
||||
LONG lError;
|
||||
|
@ -37,56 +127,6 @@ CreateUserEnvironment(IN PWLSESSION Session,
|
|||
|
||||
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 */
|
||||
ImpersonateLoggedOnUser(Session->UserToken);
|
||||
|
||||
|
@ -107,6 +147,9 @@ CreateUserEnvironment(IN PWLSESSION Session,
|
|||
&dwDisp);
|
||||
if (lError == ERROR_SUCCESS)
|
||||
{
|
||||
BuildVolatileEnvironment(Session,
|
||||
hKey);
|
||||
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
else
|
||||
|
@ -120,9 +163,6 @@ CreateUserEnvironment(IN PWLSESSION Session,
|
|||
/* Revert the impersonation */
|
||||
RevertToSelf();
|
||||
|
||||
*lpEnvironment = lpEnviron;
|
||||
*lpFullEnv = lpFullEnviron;
|
||||
|
||||
TRACE("WL: CreateUserEnvironment done\n");
|
||||
|
||||
return TRUE;
|
||||
|
|
|
@ -170,7 +170,6 @@ HandleLogon(
|
|||
{
|
||||
PROFILEINFOW ProfileInfo;
|
||||
LPVOID lpEnvironment = NULL;
|
||||
LPWSTR lpFullEnv = NULL;
|
||||
BOOLEAN Old;
|
||||
BOOL ret = FALSE;
|
||||
|
||||
|
@ -208,12 +207,19 @@ HandleLogon(
|
|||
}
|
||||
|
||||
/* Create environment block for the user */
|
||||
if (!CreateUserEnvironment(Session, &lpEnvironment, &lpFullEnv))
|
||||
if (!CreateUserEnvironment(Session))
|
||||
{
|
||||
WARN("WL: SetUserEnvironment() failed\n");
|
||||
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);
|
||||
UpdatePerUserSystemParameters(0, TRUE);
|
||||
|
||||
|
@ -233,7 +239,7 @@ HandleLogon(
|
|||
Session->Gina.Context,
|
||||
L"Default",
|
||||
NULL, /* FIXME */
|
||||
lpFullEnv))
|
||||
lpEnvironment))
|
||||
{
|
||||
//WCHAR StatusMsg[256];
|
||||
WARN("WL: WlxActivateUserShell() failed\n");
|
||||
|
@ -260,8 +266,6 @@ cleanup:
|
|||
{
|
||||
UnloadUserProfile(WLSession->UserToken, ProfileInfo.hProfile);
|
||||
}
|
||||
if (lpFullEnv != lpEnvironment)
|
||||
HeapFree(GetProcessHeap(), 0, lpFullEnv);
|
||||
if (lpEnvironment)
|
||||
DestroyEnvironmentBlock(lpEnvironment);
|
||||
RemoveStatusMessage(Session);
|
||||
|
|
|
@ -182,9 +182,7 @@ UpdatePerUserSystemParameters(DWORD dwUnknown,
|
|||
|
||||
/* environment.c */
|
||||
BOOL
|
||||
CreateUserEnvironment(IN PWLSESSION Session,
|
||||
IN LPVOID *lpEnvironment,
|
||||
IN LPWSTR *lpFullEnv);
|
||||
CreateUserEnvironment(IN PWLSESSION Session);
|
||||
|
||||
/* sas.c */
|
||||
BOOL
|
||||
|
|
|
@ -817,3 +817,7 @@ modules\rostests\winetests\xmllite\xmllite_winetest.exe 7 o
|
|||
|
||||
|
||||
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
|
||||
|
|
|
@ -161,6 +161,7 @@ static LONG IsoLookupFile(PCSTR FileName, ULONG DeviceId, PISO_FILE_INFO IsoFile
|
|||
DPRINTM(DPRINT_FILESYSTEM, "IsoLookupFile() FileName = %s\n", FileName);
|
||||
|
||||
RtlZeroMemory(IsoFileInfoPointer, sizeof(ISO_FILE_INFO));
|
||||
RtlZeroMemory(&IsoFileInfo, sizeof(ISO_FILE_INFO));
|
||||
|
||||
//
|
||||
// Read The Primary Volume Descriptor
|
||||
|
|
|
@ -5,13 +5,15 @@
|
|||
<library>freeldr_startup</library>
|
||||
<library>freeldr_base64k</library>
|
||||
<library>freeldr_base</library>
|
||||
<if property="ARCH" value="i386">
|
||||
<library>mini_hal</library>
|
||||
</if>
|
||||
<library>freeldr_arch</library>
|
||||
<library>setupldr_main</library>
|
||||
<library>rossym</library>
|
||||
<library>cmlib</library>
|
||||
<library>rtl</library>
|
||||
<library>libcntpr</library>
|
||||
<library>mini_hal</library>
|
||||
<group linkerset="ld">
|
||||
<linkerflag>-nostartfiles</linkerflag>
|
||||
<linkerflag>-nostdlib</linkerflag>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* FILE: dll/cpl/appwiz/lang/cs-CZ.rc
|
||||
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
|
||||
* UPDATED: 2008-07-27
|
||||
* UPDATED: 2010-03-14
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
|
||||
|
@ -48,7 +48,7 @@ END
|
|||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_CPLSYSTEMNAME "Pøidat/Odebrat programy"
|
||||
IDS_CPLSYSTEMNAME "Pøidat a odebrat programy"
|
||||
IDS_CPLSYSTEMDESCRIPTION "Nastavuje programy a vytváøí zástupce."
|
||||
IDS_CREATE_SHORTCUT "Vytvoøit zástupce"
|
||||
IDS_ERROR_NOT_FOUND "Soubor %s nebyl nalezen."
|
||||
|
|
|
@ -231,6 +231,7 @@ ColorsProc(
|
|||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
|
||||
InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_POPUP_COLOR), NULL, TRUE);
|
||||
pConInfo->ActiveStaticControl = index;
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -294,6 +294,52 @@ LayoutProc(
|
|||
{
|
||||
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:
|
||||
{
|
||||
LONG res = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0);
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
* PURPOSE: input.dll
|
||||
* PROGRAMMER: Dmitry Chapyshev (dmitry@reactos.org)
|
||||
* Colin Finck
|
||||
* Gregor Schneider
|
||||
* UPDATE HISTORY:
|
||||
* 06-09-2007 Created
|
||||
*/
|
||||
|
@ -376,6 +377,59 @@ UpdateLayoutsList(VOID)
|
|||
(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
|
||||
DeleteLayout(VOID)
|
||||
{
|
||||
|
@ -430,6 +484,7 @@ DeleteLayout(VOID)
|
|||
if (RegDeleteValue(hKey, szLayoutNum) == ERROR_SUCCESS)
|
||||
{
|
||||
UpdateLayoutsList();
|
||||
UpdateRegValueNames(hKey);
|
||||
}
|
||||
}
|
||||
RegCloseKey(hKey);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* FILE: dll/cpl/sysdm/lang/cs-CZ.rc
|
||||
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
|
||||
* UPDATED: 2009-01-25
|
||||
* UPDATED: 2010-03-04
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
|
||||
|
@ -48,17 +48,6 @@ BEGIN
|
|||
PUSHBUTTON "Hard&warové profily...", IDC_HARDWARE_PROFILE, 154, 190, 90, 15
|
||||
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
|
||||
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
|
||||
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 "Hlášení chyb", IDC_ERRORREPORT, 170, 192, 80, 15
|
||||
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
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
|
|
|
@ -43,16 +43,6 @@ BEGIN
|
|||
PUSHBUTTON "&Profili Hardware...", IDC_HARDWARE_PROFILE, 154, 190, 90, 14
|
||||
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
|
||||
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
|
||||
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 "Registrazione errori", IDC_ERRORREPORT, 170, 192, 80, 14
|
||||
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
|
||||
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
|
||||
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 "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
|
||||
|
||||
GROUPBOX "Blocco del sistema", IDC_STATIC, 7, 111, 238, 140
|
||||
|
@ -282,4 +284,5 @@ BEGIN
|
|||
IDS_USERPROFILE_TYPE "Tipo"
|
||||
IDS_USERPROFILE_STATUS "Stato"
|
||||
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
|
||||
|
|
|
@ -234,10 +234,10 @@ GroupNew(HWND hwndDlg)
|
|||
}
|
||||
|
||||
if (group.lgrpi1_name)
|
||||
HeapFree(GetProcessHeap, 0, group.lgrpi1_name);
|
||||
HeapFree(GetProcessHeap(), 0, group.lgrpi1_name);
|
||||
|
||||
if (group.lgrpi1_comment)
|
||||
HeapFree(GetProcessHeap, 0, group.lgrpi1_comment);
|
||||
HeapFree(GetProcessHeap(), 0, group.lgrpi1_comment);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -294,16 +294,16 @@ UserNew(HWND hwndDlg)
|
|||
}
|
||||
|
||||
if (user.usri3_name)
|
||||
HeapFree(GetProcessHeap, 0, user.usri3_name);
|
||||
HeapFree(GetProcessHeap(), 0, user.usri3_name);
|
||||
|
||||
if (user.usri3_full_name)
|
||||
HeapFree(GetProcessHeap, 0, user.usri3_full_name);
|
||||
HeapFree(GetProcessHeap(), 0, user.usri3_full_name);
|
||||
|
||||
if (user.usri3_comment)
|
||||
HeapFree(GetProcessHeap, 0, user.usri3_comment);
|
||||
HeapFree(GetProcessHeap(), 0, user.usri3_comment);
|
||||
|
||||
if (user.usri3_password)
|
||||
HeapFree(GetProcessHeap, 0, user.usri3_password);
|
||||
HeapFree(GetProcessHeap(), 0, user.usri3_password);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -4841,15 +4841,7 @@ RegSetValueExW(HKEY hKey,
|
|||
return RtlNtStatusToDosError(Status);
|
||||
}
|
||||
|
||||
if (lpValueName != NULL)
|
||||
{
|
||||
RtlInitUnicodeString(&ValueName,
|
||||
lpValueName);
|
||||
}
|
||||
else
|
||||
{
|
||||
RtlInitUnicodeString(&ValueName, L"");
|
||||
}
|
||||
RtlInitUnicodeString(&ValueName, lpValueName);
|
||||
pValueName = &ValueName;
|
||||
|
||||
if (is_string(dwType) && (cbData != 0))
|
||||
|
|
|
@ -166,6 +166,10 @@ SetPixelFormat(HDC hdc,
|
|||
INT iPixelFormat,
|
||||
CONST PIXELFORMATDESCRIPTOR * ppfd)
|
||||
{
|
||||
/* Can only be set once */
|
||||
INT current = GetPixelFormat(hdc);
|
||||
if(current) return current == iPixelFormat ;
|
||||
|
||||
if (glSetPixelFormat == NULL)
|
||||
if (OpenGLEnable() == FALSE)
|
||||
return(0);
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
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 (!pAdapterAddresses || *pOutBufLen == 0)
|
||||
return ERROR_BUFFER_OVERFLOW;
|
||||
if (Reserved) return ERROR_INVALID_PARAMETER;
|
||||
|
||||
FIXME(":stub\n");
|
||||
return ERROR_NO_DATA;
|
||||
indexTable = getNonLoopbackInterfaceIndexTable(); //I think we want non-loopback here
|
||||
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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -60,6 +60,15 @@
|
|||
#define TCP_REQUEST_QUERY_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
|
||||
|
||||
typedef struct _IPRouteEntry {
|
||||
|
@ -138,6 +147,10 @@ typedef VOID (*EnumNameServersFunc)( PWCHAR Interface,
|
|||
PWCHAR NameServer,
|
||||
PVOID Data );
|
||||
void EnumNameServers( HANDLE RegHandle, PWCHAR Interface, PVOID Data, EnumNameServersFunc cb );
|
||||
NTSTATUS getIPAddrEntryForIf(HANDLE tcpFile,
|
||||
char *name,
|
||||
DWORD index,
|
||||
IFInfo *ifInfo);
|
||||
|
||||
#include <w32api.h>
|
||||
/* This is here until we switch to version 2.5 of the mingw headers */
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -101,7 +101,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_INVALID_BLOCK
|
||||
Language=German
|
||||
ERROR_INVALID_BLOCK - Die Speicherkontrolladdresse ist ungültig.
|
||||
ERROR_INVALID_BLOCK - Die Speicherkontrolladresse ist ungültig.
|
||||
.
|
||||
|
||||
MessageId=10
|
||||
|
@ -885,7 +885,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_SUBST_TO_SUBST
|
||||
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
|
||||
|
@ -965,7 +965,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_IS_SUBST_TARGET
|
||||
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
|
||||
|
@ -1093,7 +1093,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_BUSY
|
||||
Language=German
|
||||
ERROR_BUSY - Die angeforderte Ressource wird beutzt.
|
||||
ERROR_BUSY - Die angeforderte Ressource wird benutzt.
|
||||
.
|
||||
|
||||
MessageId=173
|
||||
|
@ -1109,7 +1109,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_ATOMIC_LOCKS_NOT_SUPPORTED
|
||||
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
|
||||
|
@ -1229,7 +1229,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_IOPL_NOT_ENABLED
|
||||
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
|
||||
|
@ -1277,7 +1277,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_ENVVAR_NOT_FOUND
|
||||
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
|
||||
|
@ -1309,7 +1309,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_META_EXPANSION_TOO_LONG
|
||||
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
|
||||
|
@ -1341,7 +1341,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_TOO_MANY_MODULES
|
||||
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
|
||||
|
@ -1653,7 +1653,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_TIMER_NOT_CANCELED
|
||||
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
|
||||
|
@ -1717,7 +1717,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_INSTRUCTION_MISALIGNMENT
|
||||
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
|
||||
|
@ -1861,7 +1861,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_LOGON_SERVER_CONFLICT
|
||||
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
|
||||
|
@ -1965,7 +1965,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_ILLEGAL_CHARACTER
|
||||
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
|
||||
|
@ -1989,7 +1989,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT
|
||||
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
|
||||
|
@ -2021,7 +2021,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_CANNOT_LOAD_REGISTRY_FILE
|
||||
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
|
||||
|
@ -2109,7 +2109,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_CONVERT_TO_LARGE
|
||||
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
|
||||
|
@ -2117,7 +2117,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_FOUND_OUT_OF_SCOPE
|
||||
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
|
||||
|
@ -2125,7 +2125,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_ALLOCATE_BUCKET
|
||||
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
|
||||
|
@ -2165,7 +2165,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_TIMER_RESOLUTION_NOT_SET
|
||||
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
|
||||
|
@ -2173,7 +2173,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_INSUFFICIENT_LOGON_INFO
|
||||
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
|
||||
|
@ -2181,7 +2181,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_BAD_DLL_ENTRYPOINT
|
||||
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
|
||||
|
@ -2189,7 +2189,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_BAD_SERVICE_ENTRYPOINT
|
||||
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
|
||||
|
@ -2213,7 +2213,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_REGISTRY_QUOTA_LIMIT
|
||||
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
|
||||
|
@ -2245,7 +2245,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_PWD_HISTORY_CONFLICT
|
||||
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
|
||||
|
@ -2317,7 +2317,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_NO_MORE_MATCHES
|
||||
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
|
||||
|
@ -2325,7 +2325,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_RANGE_LIST_CONFLICT
|
||||
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
|
||||
|
@ -2333,7 +2333,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_SERVER_SID_MISMATCH
|
||||
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
|
||||
|
@ -2349,7 +2349,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_FLOAT_MULTIPLE_FAULTS
|
||||
Language=German
|
||||
ERROR_FLOAT_MULTIPLE_FAULTS - Multiple floating point faults.
|
||||
ERROR_FLOAT_MULTIPLE_FAULTS - Mehrere Fließkommafehler.
|
||||
.
|
||||
|
||||
MessageId=631
|
||||
|
@ -2357,7 +2357,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_FLOAT_MULTIPLE_TRAPS
|
||||
Language=German
|
||||
ERROR_FLOAT_MULTIPLE_TRAPS - Multiple floating point traps.
|
||||
ERROR_FLOAT_MULTIPLE_TRAPS - Mehrere Fließkommafallen.
|
||||
.
|
||||
|
||||
MessageId=632
|
||||
|
@ -2365,7 +2365,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_NOINTERFACE
|
||||
Language=German
|
||||
ERROR_NOINTERFACE - The requested interface is not supported.
|
||||
ERROR_NOINTERFACE - Das angeforderte Interface wird nicht unterstützt.
|
||||
.
|
||||
|
||||
MessageId=633
|
||||
|
@ -2373,7 +2373,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DRIVER_FAILED_SLEEP
|
||||
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
|
||||
|
@ -2381,7 +2381,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_CORRUPT_SYSTEM_FILE
|
||||
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
|
||||
|
@ -2389,7 +2389,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_COMMITMENT_MINIMUM
|
||||
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
|
||||
|
@ -2397,7 +2397,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_PNP_RESTART_ENUMERATION
|
||||
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
|
||||
|
@ -2405,7 +2405,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_SYSTEM_IMAGE_BAD_SIGNATURE
|
||||
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
|
||||
|
@ -2413,7 +2413,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_PNP_REBOOT_REQUIRED
|
||||
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
|
||||
|
@ -2421,7 +2421,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_INSUFFICIENT_POWER
|
||||
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
|
||||
|
@ -2429,7 +2429,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_SYSTEM_SHUTDOWN
|
||||
Language=German
|
||||
ERROR_SYSTEM_SHUTDOWN - The system is in the process of shutting down.
|
||||
ERROR_SYSTEM_SHUTDOWN - Das System wird heruntergefahren.
|
||||
.
|
||||
|
||||
MessageId=642
|
||||
|
@ -2437,7 +2437,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_PORT_NOT_SET
|
||||
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
|
||||
|
@ -2453,7 +2453,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_RANGE_NOT_FOUND
|
||||
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
|
||||
|
@ -2461,7 +2461,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_NOT_SAFE_MODE_DRIVER
|
||||
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
|
||||
|
@ -2469,7 +2469,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_FAILED_DRIVER_ENTRY
|
||||
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
|
||||
|
@ -2477,7 +2477,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DEVICE_ENUMERATION_ERROR
|
||||
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
|
||||
|
@ -2485,7 +2485,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_MOUNT_POINT_NOT_RESOLVED
|
||||
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
|
||||
|
@ -2493,7 +2493,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_INVALID_DEVICE_OBJECT_PARAMETER
|
||||
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
|
||||
|
@ -2501,7 +2501,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_MCA_OCCURED
|
||||
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
|
||||
|
@ -2509,7 +2509,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DRIVER_DATABASE_ERROR
|
||||
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
|
||||
|
@ -2517,7 +2517,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_SYSTEM_HIVE_TOO_LARGE
|
||||
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
|
||||
|
@ -2525,7 +2525,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DRIVER_FAILED_PRIOR_UNLOAD
|
||||
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
|
||||
|
@ -2533,7 +2533,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_VOLSNAP_PREPARE_HIBERNATE
|
||||
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
|
||||
|
@ -2549,7 +2549,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_HUNG_DISPLAY_DRIVER_THREAD
|
||||
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
|
||||
|
@ -2557,7 +2557,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_FILE_SYSTEM_LIMITATION
|
||||
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
|
||||
|
@ -2573,7 +2573,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_VERIFIER_STOP
|
||||
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
|
||||
|
@ -2589,7 +2589,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_PNP_BAD_MPS_TABLE
|
||||
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
|
||||
|
@ -2597,7 +2597,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_PNP_TRANSLATION_FAILED
|
||||
Language=German
|
||||
ERROR_PNP_TRANSLATION_FAILED - A translator failed to translate resources.
|
||||
ERROR_PNP_TRANSLATION_FAILED - Ein Übersetzer konnte Ressourcen nicht übersetzen.
|
||||
.
|
||||
|
||||
MessageId=673
|
||||
|
@ -2605,7 +2605,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_PNP_IRQ_TRANSLATION_FAILED
|
||||
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
|
||||
|
@ -2613,7 +2613,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_PNP_INVALID_ID
|
||||
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
|
||||
|
@ -2621,7 +2621,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_WAKE_SYSTEM_DEBUGGER
|
||||
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
|
||||
|
@ -2629,7 +2629,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_HANDLES_CLOSED
|
||||
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
|
||||
|
@ -2637,7 +2637,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_EXTRANEOUS_INFORMATION
|
||||
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
|
||||
|
@ -2669,7 +2669,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_STOPPED_ON_SYMLINK
|
||||
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
|
||||
|
@ -2677,7 +2677,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_LONGJUMP
|
||||
Language=German
|
||||
ERROR_LONGJUMP - A long jump has been executed.
|
||||
ERROR_LONGJUMP - Ein langer Sprung wurde ausgeführt.
|
||||
.
|
||||
|
||||
MessageId=683
|
||||
|
@ -2685,7 +2685,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_PLUGPLAY_QUERY_VETOED
|
||||
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
|
||||
|
@ -2701,7 +2701,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_REGISTRY_HIVE_RECOVERED
|
||||
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
|
||||
|
@ -2709,7 +2709,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DLL_MIGHT_BE_INSECURE
|
||||
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
|
||||
|
@ -2717,7 +2717,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DLL_MIGHT_BE_INCOMPATIBLE
|
||||
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
|
||||
|
@ -2725,7 +2725,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DBG_EXCEPTION_NOT_HANDLED
|
||||
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
|
||||
|
@ -2733,7 +2733,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DBG_REPLY_LATER
|
||||
Language=German
|
||||
ERROR_DBG_REPLY_LATER - Debugger will reply later.
|
||||
ERROR_DBG_REPLY_LATER - Der Debugger wird später antworten.
|
||||
.
|
||||
|
||||
MessageId=690
|
||||
|
@ -2741,7 +2741,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE
|
||||
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
|
||||
|
@ -2749,7 +2749,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DBG_TERMINATE_THREAD
|
||||
Language=German
|
||||
ERROR_DBG_TERMINATE_THREAD - Debugger terminated thread.
|
||||
ERROR_DBG_TERMINATE_THREAD - Der Debugger hat den Thread terminiert.
|
||||
.
|
||||
|
||||
MessageId=692
|
||||
|
@ -2757,7 +2757,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DBG_TERMINATE_PROCESS
|
||||
Language=German
|
||||
ERROR_DBG_TERMINATE_PROCESS - Debugger terminated process.
|
||||
ERROR_DBG_TERMINATE_PROCESS - Der Debugger hat den Prozess terminiert.
|
||||
.
|
||||
|
||||
MessageId=693
|
||||
|
@ -2765,7 +2765,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DBG_CONTROL_C
|
||||
Language=German
|
||||
ERROR_DBG_CONTROL_C - Debugger got control C.
|
||||
ERROR_DBG_CONTROL_C - Der Debugger erhielt Strg-C.
|
||||
.
|
||||
|
||||
MessageId=694
|
||||
|
@ -2773,7 +2773,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DBG_PRINTEXCEPTION_C
|
||||
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
|
||||
|
@ -2781,7 +2781,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DBG_RIPEXCEPTION
|
||||
Language=German
|
||||
ERROR_DBG_RIPEXCEPTION - Debugger received RIP exception.
|
||||
ERROR_DBG_RIPEXCEPTION - Der Debugger erhielt eine RIP-Ausnahme.
|
||||
.
|
||||
|
||||
MessageId=696
|
||||
|
@ -2789,7 +2789,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DBG_CONTROL_BREAK
|
||||
Language=German
|
||||
ERROR_DBG_CONTROL_BREAK - Debugger received control break.
|
||||
ERROR_DBG_CONTROL_BREAK - Der Debugger erhielt Strg-Pause.
|
||||
.
|
||||
|
||||
MessageId=697
|
||||
|
@ -2805,7 +2805,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_OBJECT_NAME_EXISTS
|
||||
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
|
||||
|
@ -2837,7 +2837,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_SEGMENT_NOTIFICATION
|
||||
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
|
||||
|
@ -2869,7 +2869,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_IMAGE_MACHINE_TYPE_MISMATCH
|
||||
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
|
||||
|
@ -2877,7 +2877,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_RECEIVE_PARTIAL
|
||||
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
|
||||
|
@ -2917,7 +2917,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_CHECKING_FILE_SYSTEM
|
||||
Language=German
|
||||
ERROR_CHECKING_FILE_SYSTEM - Checking file system on %wZ.
|
||||
ERROR_CHECKING_FILE_SYSTEM - Prüfe Dateisystem auf %wZ.
|
||||
.
|
||||
|
||||
MessageId=714
|
||||
|
@ -2925,7 +2925,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_PREDEFINED_HANDLE
|
||||
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
|
||||
|
@ -2941,7 +2941,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_WAS_LOCKED
|
||||
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
|
||||
|
@ -2949,7 +2949,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE
|
||||
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
|
||||
|
@ -2997,7 +2997,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_HIBERNATED
|
||||
Language=German
|
||||
ERROR_HIBERNATED - The system was put into hibernation.
|
||||
ERROR_HIBERNATED - Das System wurde in den Ruhezustand versetzt.
|
||||
.
|
||||
|
||||
MessageId=727
|
||||
|
@ -3005,7 +3005,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_RESUME_HIBERNATION
|
||||
Language=German
|
||||
ERROR_RESUME_HIBERNATION - The system was resumed from hibernation.
|
||||
ERROR_RESUME_HIBERNATION - Das System wurde aus dem Ruhezustand fortgesetzt.
|
||||
.
|
||||
|
||||
MessageId=728
|
||||
|
@ -3013,7 +3013,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_FIRMWARE_UPDATED
|
||||
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
|
||||
|
@ -3029,7 +3029,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_WAKE_SYSTEM
|
||||
Language=German
|
||||
ERROR_WAKE_SYSTEM - The system has awoken
|
||||
ERROR_WAKE_SYSTEM - Das System ist erwacht
|
||||
.
|
||||
|
||||
MessageId=741
|
||||
|
@ -3053,7 +3053,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_VOLUME_MOUNTED
|
||||
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
|
||||
|
@ -3133,7 +3133,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_CRASH_DUMP
|
||||
Language=German
|
||||
ERROR_CRASH_DUMP - Crash dump exists in paging file.
|
||||
ERROR_CRASH_DUMP - Absturzabbild existiert in Pagetabelle.
|
||||
.
|
||||
|
||||
MessageId=754
|
||||
|
@ -3141,7 +3141,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_BUFFER_ALL_ZEROS
|
||||
Language=German
|
||||
ERROR_BUFFER_ALL_ZEROS - Specified buffer contains all zeros.
|
||||
ERROR_BUFFER_ALL_ZEROS - Der angegebene Puffer enthält nur Nullen.
|
||||
.
|
||||
|
||||
MessageId=755
|
||||
|
@ -3181,7 +3181,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_PROCESS_NOT_IN_JOB
|
||||
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
|
||||
|
@ -3189,7 +3189,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_PROCESS_IN_JOB
|
||||
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
|
||||
|
@ -3197,7 +3197,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_VOLSNAP_HIBERNATE_READY
|
||||
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
|
||||
|
@ -3237,7 +3237,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DBG_EXCEPTION_HANDLED
|
||||
Language=German
|
||||
ERROR_DBG_EXCEPTION_HANDLED - Debugger handled exception.
|
||||
ERROR_DBG_EXCEPTION_HANDLED - Der Debugger hat eine Ausnahme behandelt.
|
||||
.
|
||||
|
||||
MessageId=767
|
||||
|
@ -3245,7 +3245,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_DBG_CONTINUE
|
||||
Language=German
|
||||
ERROR_DBG_CONTINUE - Debugger continued
|
||||
ERROR_DBG_CONTINUE - Debugger fortgesetzt
|
||||
.
|
||||
|
||||
MessageId=768
|
||||
|
@ -3261,7 +3261,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_COMPRESSION_DISABLED
|
||||
Language=German
|
||||
ERROR_COMPRESSION_DISABLED - Compression is disabled for this volume.
|
||||
ERROR_COMPRESSION_DISABLED - Komprimierung ist für diesen Datenträger deaktiviert.
|
||||
.
|
||||
|
||||
MessageId=770
|
||||
|
@ -3301,7 +3301,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_ERRORS_ENCOUNTERED
|
||||
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
|
||||
|
@ -3309,7 +3309,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_NOT_CAPABLE
|
||||
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
|
||||
|
@ -3325,7 +3325,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_VERSION_PARSE_ERROR
|
||||
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
|
||||
|
@ -3333,7 +3333,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_BADSTARTPOSITION
|
||||
Language=German
|
||||
ERROR_BADSTARTPOSITION - The iterator's start position is invalid.
|
||||
ERROR_BADSTARTPOSITION - Die Startposition des Iterators ist ungültig.
|
||||
.
|
||||
|
||||
MessageId=994
|
||||
|
@ -3341,7 +3341,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_EA_ACCESS_DENIED
|
||||
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
|
||||
|
@ -3373,7 +3373,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_NOACCESS
|
||||
Language=German
|
||||
ERROR_NOACCESS - Invalid access to memory location.
|
||||
ERROR_NOACCESS - Ungültiger Zugriff auf Speicheradresse.
|
||||
.
|
||||
|
||||
MessageId=999
|
||||
|
@ -3389,7 +3389,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_STACK_OVERFLOW
|
||||
Language=German
|
||||
ERROR_STACK_OVERFLOW - Recursion too deep; the stack overflowed.
|
||||
ERROR_STACK_OVERFLOW - Rekursion zu tief; Stapelüberlauf.
|
||||
.
|
||||
|
||||
MessageId=1002
|
||||
|
@ -3405,7 +3405,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_CAN_NOT_COMPLETE
|
||||
Language=German
|
||||
ERROR_CAN_NOT_COMPLETE - Cannot complete this function.
|
||||
ERROR_CAN_NOT_COMPLETE - Kann diese Funktion nicht beenden.
|
||||
.
|
||||
|
||||
MessageId=1004
|
||||
|
@ -3413,7 +3413,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_INVALID_FLAGS
|
||||
Language=German
|
||||
ERROR_INVALID_FLAGS - Invalid flags.
|
||||
ERROR_INVALID_FLAGS - Ungültige Flags.
|
||||
.
|
||||
|
||||
MessageId=1005
|
||||
|
|
|
@ -2471,7 +2471,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_FAILED_DRIVER_ENTRY
|
||||
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
|
||||
|
|
|
@ -2469,7 +2469,7 @@ Severity=Success
|
|||
Facility=System
|
||||
SymbolicName=ERROR_FAILED_DRIVER_ENTRY
|
||||
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
|
||||
|
|
|
@ -3086,16 +3086,29 @@ FlushConsoleInputBuffer(HANDLE hConsoleInput)
|
|||
/*--------------------------------------------------------------
|
||||
* SetConsoleScreenBufferSize
|
||||
*
|
||||
* @unimplemented
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
SetConsoleScreenBufferSize(HANDLE hConsoleOutput,
|
||||
COORD dwSize)
|
||||
{
|
||||
DPRINT1("SetConsoleScreenBufferSize(0x%x, 0x%x) UNIMPLEMENTED!\n", hConsoleOutput, dwSize);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
CSR_API_MESSAGE Request;
|
||||
ULONG CsrRequest;
|
||||
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;
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------
|
||||
|
|
|
@ -22,14 +22,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
|
|||
CAPTION "Âõîä"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
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 "Îòêàç",IDCANCEL,115,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
|
||||
|
||||
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 "Ñèãóðíîñò"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
BEGIN
|
||||
PUSHBUTTON "Îòêàç",IDCANCEL,130,95,99,14
|
||||
PUSHBUTTON "Èçõîä",IDC_LOGOFF,90,76,75,14
|
||||
PUSHBUTTON "Èçêëþ÷âàíå",IDC_SHUTDOWN,170,76,75,14
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
LTEXT "Êàêâî æåëàåòå?",IDC_STATIC,86,60,87,8
|
||||
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
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
PUSHBUTTON "Îòêàç",IDCANCEL,130,95,99,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -27,14 +27,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
|
|||
CAPTION "Pøihlášení"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
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 "Storno",IDCANCEL,115,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
|
||||
|
||||
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"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
BEGIN
|
||||
PUSHBUTTON "Storno",IDCANCEL,170,95,70,14
|
||||
PUSHBUTTON "Odhlásit",IDC_LOGOFF,90,76,70,14
|
||||
PUSHBUTTON "Vypnout",IDC_SHUTDOWN,170,76,70,14
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
LTEXT "Co chcete udìlat?",IDC_STATIC,86,60,87,8
|
||||
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
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
PUSHBUTTON "Storno",IDCANCEL,170,95,70,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -22,14 +22,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
|
|||
CAPTION "Logon"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
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 "Abbrechen",IDCANCEL,103, 122, 50, 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
|
||||
|
||||
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"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
BEGIN
|
||||
PUSHBUTTON "Abbrechen",IDCANCEL,170,95,70,14
|
||||
PUSHBUTTON "Abmelden",IDC_LOGOFF,90,76,70,14
|
||||
PUSHBUTTON "Herunterfahren",IDC_SHUTDOWN,170,76,70,14
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
LTEXT "Was wollen Sie tun?",IDC_STATIC,86,60,87,8
|
||||
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
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
PUSHBUTTON "Abbrechen",IDCANCEL,170,95,70,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -22,14 +22,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
|
|||
CAPTION "Logon"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
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 "Cancel",IDCANCEL,115,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
|
||||
|
||||
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"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
BEGIN
|
||||
PUSHBUTTON "Cancel",IDCANCEL,170,95,70,14
|
||||
PUSHBUTTON "Log off",IDC_LOGOFF,90,76,70,14
|
||||
PUSHBUTTON "Shutdown",IDC_SHUTDOWN,170,76,70,14
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
LTEXT "What do you want to do?",IDC_STATIC,86,60,87,8
|
||||
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
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
PUSHBUTTON "Cancel",IDCANCEL,170,95,70,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -27,14 +27,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
|
|||
CAPTION "Acceder"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
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 "Cancelar",IDCANCEL,115,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
|
||||
|
||||
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"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
BEGIN
|
||||
PUSHBUTTON "Cancelar",IDCANCEL, 186, 95, 70, 14
|
||||
PUSHBUTTON "Salir",IDC_LOGOFF, 92, 76, 88, 14
|
||||
PUSHBUTTON "Cerrar",IDC_SHUTDOWN, 186, 76, 70, 14
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
LTEXT "¿Qué quieres hacer?",IDC_STATIC, 94, 60, 87, 8
|
||||
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
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
PUSHBUTTON "Cancelar",IDCANCEL, 186, 95, 70, 14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -22,14 +22,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
|
|||
CAPTION "Connexion"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
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 "Annuler",IDCANCEL,115,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
|
||||
|
||||
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é"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
BEGIN
|
||||
PUSHBUTTON "Annuler",IDCANCEL, 184, 95, 70, 14
|
||||
PUSHBUTTON "Déconnecter",IDC_LOGOFF, 93, 76, 85, 14
|
||||
PUSHBUTTON "Éteindre",IDC_SHUTDOWN, 184, 76, 70, 14
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
LTEXT "Que voulez vous faire?",IDC_STATIC, 94, 60, 87, 8
|
||||
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
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
PUSHBUTTON "Annuler",IDCANCEL, 184, 95, 70, 14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -22,14 +22,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
|
|||
CAPTION "Masuk"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
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 "Batal",IDCANCEL,115,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
|
||||
|
||||
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"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
BEGIN
|
||||
PUSHBUTTON "Batal",IDCANCEL,170,95,70,14
|
||||
PUSHBUTTON "Keluar",IDC_LOGOFF,90,76,70,14
|
||||
PUSHBUTTON "Matikan",IDC_SHUTDOWN,170,76,70,14
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
LTEXT "Apa yang ingin anda lakukan?",IDC_STATIC,86,60,87,8
|
||||
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
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
PUSHBUTTON "Batal",IDCANCEL,170,95,70,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -30,14 +30,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
|
|||
CAPTION "Logon"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
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 "Annulla",IDCANCEL,115,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
|
||||
|
||||
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"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
BEGIN
|
||||
PUSHBUTTON "Annulla",IDCANCEL,170,95,70,14
|
||||
PUSHBUTTON "Fine sessione",IDC_LOGOFF,90,76,70,14
|
||||
PUSHBUTTON "Spegnimento",IDC_SHUTDOWN,170,76,70,14
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
LTEXT "Cosa volete fare?",IDC_STATIC,86,60,87,8
|
||||
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
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
PUSHBUTTON "Annulla",IDCANCEL,170,95,70,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -22,14 +22,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
|
|||
CAPTION "ログオン"
|
||||
FONT 9, "MS UI Gothic",400,0,1
|
||||
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 "キャンセル",IDCANCEL,115,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
|
||||
|
||||
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 "セキュリティ"
|
||||
FONT 9, "MS UI Gothic",400,0,1
|
||||
BEGIN
|
||||
PUSHBUTTON "キャンセル",IDCANCEL,170,95,70,14
|
||||
PUSHBUTTON "ログオフ",IDC_LOGOFF,90,76,70,14
|
||||
PUSHBUTTON "シャットダウン",IDC_SHUTDOWN,170,76,70,14
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
LTEXT "何をしますか?",IDC_STATIC,86,60,87,8
|
||||
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
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
PUSHBUTTON "キャンセル",IDCANCEL,170,95,70,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -22,14 +22,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
|
|||
CAPTION "Logg på ReactOS"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
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 "Avbryt",IDCANCEL,115,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
|
||||
|
||||
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"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
BEGIN
|
||||
PUSHBUTTON "Avbryt",IDCANCEL, 170, 95, 70, 14
|
||||
PUSHBUTTON "Logg av...",IDC_LOGOFF, 86, 76, 78, 14
|
||||
PUSHBUTTON "Avslutt...",IDC_SHUTDOWN, 170, 76, 70, 14
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
LTEXT "Hva vil du gjøre?",IDC_STATIC, 92, 60, 87, 8
|
||||
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
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
PUSHBUTTON "Avbryt",IDCANCEL, 170, 95, 70, 14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -29,14 +29,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
|
|||
CAPTION "Logon"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
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 "Anuluj",IDCANCEL,115,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
|
||||
|
||||
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"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
BEGIN
|
||||
PUSHBUTTON "Anuluj",IDCANCEL,170,95,70,14
|
||||
PUSHBUTTON "Wyloguj",IDC_LOGOFF,90,76,70,14
|
||||
PUSHBUTTON "Wy³¹cz",IDC_SHUTDOWN,170,76,70,14
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
LTEXT "Co chcesz teraz zrobiæ?",IDC_STATIC,86,60,87,8
|
||||
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
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
PUSHBUTTON "Anuluj",IDCANCEL,170,95,70,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
#pragma code_page(65001)
|
||||
|
||||
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
|
||||
CAPTION "Vă rugăm așteptați..."
|
||||
CAPTION "Va rugam a?tepta?i..."
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
BEGIN
|
||||
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
|
||||
BEGIN
|
||||
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
|
||||
|
||||
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"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
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 "Anulare",IDCANCEL,115,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
|
||||
|
||||
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"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
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 "Închidere",IDC_SHUTDOWN,170,76,70,14
|
||||
LTEXT "Ce vreți să faceți?",IDC_STATIC,86,60,87,8
|
||||
PUSHBUTTON "Blocare computer",IDC_LOCK,10,76,70,14
|
||||
PUSHBUTTON "Gestionar activități",IDC_TASKMGR,90,95,70,14
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
PUSHBUTTON "Gestionar activita?i",IDC_TASKMGR,90,95,70,14
|
||||
PUSHBUTTON "Anulare",IDCANCEL,170,95,70,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_LOGGEDOUTSAS "Bun venit!"
|
||||
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_ASKFORPASSWORD "Parolă: "
|
||||
IDS_FORCELOGOFF "Această acțiune va închide sesiunea utilizatorului curent și va pierde datele nesalvate de acesta. Sigur continuați?"
|
||||
IDS_ASKFORPASSWORD "Parola: "
|
||||
IDS_FORCELOGOFF "Aceasta ac?iune va închide sesiunea utilizatorului curent ?i va pierde datele nesalvate de acesta. Sigur continua?i?"
|
||||
END
|
||||
|
||||
#pragma code_page(default)
|
||||
|
|
|
@ -24,14 +24,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
|
|||
CAPTION "Âõîä"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
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 "Îòìåíà", IDCANCEL, 109, 122, 50, 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
|
||||
|
||||
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 "Áåçîïàñíîñòü"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
BEGIN
|
||||
PUSHBUTTON "Îòìåíà", IDCANCEL, 198, 95, 70, 14
|
||||
PUSHBUTTON "Çàâåðøåíèå ñåàíñà", IDC_LOGOFF, 102, 76, 86, 14
|
||||
PUSHBUTTON "Âûêëþ÷åíèå",IDC_SHUTDOWN, 198, 76, 70, 14
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
LTEXT "Âûáåðèòå íåîáõîäèìîå äåéñòâèå:", IDC_STATIC, 7, 60, 123, 8
|
||||
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
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
PUSHBUTTON "Îòìåíà", IDCANCEL, 198, 95, 70, 14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -26,14 +26,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
|
|||
CAPTION "Prihlásenie"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
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 "Zruši<C5A1>",IDCANCEL,115,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
|
||||
|
||||
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>"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
BEGIN
|
||||
PUSHBUTTON "Zruši<C5A1>",IDCANCEL,170,95,70,14
|
||||
PUSHBUTTON "Odhlási<73>",IDC_LOGOFF,90,76,70,14
|
||||
PUSHBUTTON "Vypnú<6E>",IDC_SHUTDOWN,170,76,70,14
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
LTEXT "Èo chcete urobi<62>?",IDC_STATIC,86,60,87,8
|
||||
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
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
PUSHBUTTON "Zruši<C5A1>",IDCANCEL,170,95,70,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -30,14 +30,14 @@ STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS
|
|||
CAPTION "Âõ³ä"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
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 "Ñêàñóâàòè",IDCANCEL,93, 122, 50, 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
|
||||
|
||||
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 "Áåçïåêà"
|
||||
FONT 8,"MS Shell Dlg",400,0,1
|
||||
BEGIN
|
||||
PUSHBUTTON "Ñêàñóâàòè",IDCANCEL, 165, 95, 86, 14
|
||||
PUSHBUTTON "Âèõ³ä ³ç ñèñòåìè...",IDC_LOGOFF, 80, 76, 80, 14
|
||||
PUSHBUTTON "Çàâåðøåííÿ ðîáîòè...",IDC_SHUTDOWN, 165, 76, 86, 14
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
LTEXT "Ùî Âè õî÷åòå çðîáèòè?",IDC_STATIC, 86, 60, 87, 8
|
||||
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
|
||||
CONTROL IDI_ROSLOGO,IDC_ROSLOGO,"Static",SS_BITMAP,0,0,247,53
|
||||
PUSHBUTTON "Ñêàñóâàòè",IDCANCEL, 165, 95, 86, 14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -415,8 +415,9 @@ DoLoginTasks(
|
|||
IN PWSTR Password)
|
||||
{
|
||||
LPWSTR ProfilePath = NULL;
|
||||
LPWSTR lpEnvironment = NULL;
|
||||
TOKEN_STATISTICS Stats;
|
||||
PWLX_PROFILE_V1_0 pProfile = NULL;
|
||||
PWLX_PROFILE_V2_0 pProfile = NULL;
|
||||
DWORD cbStats, cbSize;
|
||||
BOOL bResult;
|
||||
|
||||
|
@ -449,15 +450,25 @@ DoLoginTasks(
|
|||
}
|
||||
|
||||
/* 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)
|
||||
{
|
||||
WARN("HeapAlloc() failed\n");
|
||||
goto cleanup;
|
||||
}
|
||||
pProfile->dwType = WLX_PROFILE_TYPE_V1_0;
|
||||
pProfile->dwType = WLX_PROFILE_TYPE_V2_0;
|
||||
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,
|
||||
TokenStatistics,
|
||||
(PVOID)&Stats,
|
||||
|
@ -467,6 +478,7 @@ DoLoginTasks(
|
|||
WARN("Couldn't get Authentication id from user token!\n");
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
*pgContext->pAuthenticationId = Stats.AuthenticationId;
|
||||
pgContext->pMprNotifyInfo->pszUserName = DuplicationString(UserName);
|
||||
pgContext->pMprNotifyInfo->pszDomain = DuplicationString(Domain);
|
||||
|
@ -477,6 +489,10 @@ DoLoginTasks(
|
|||
return TRUE;
|
||||
|
||||
cleanup:
|
||||
if (pProfile)
|
||||
{
|
||||
HeapFree(GetProcessHeap(), 0, pProfile->pszEnvironment);
|
||||
}
|
||||
HeapFree(GetProcessHeap(), 0, pProfile);
|
||||
HeapFree(GetProcessHeap(), 0, ProfilePath);
|
||||
return FALSE;
|
||||
|
|
|
@ -21,12 +21,11 @@ END
|
|||
|
||||
IDD_STATUS DIALOGEX DISCARDABLE 0, 0, 200, 280
|
||||
STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Allgemein"
|
||||
CAPTION "Generale"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
END
|
||||
|
||||
|
||||
IDD_LAN_NETSTATUS DIALOGEX DISCARDABLE 0, 0, 200,180
|
||||
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Generale"
|
||||
|
@ -74,10 +73,10 @@ END
|
|||
|
||||
IDD_LAN_NETSTATUSDETAILS DIALOGEX DISCARDABLE 0, 0, 200,200
|
||||
STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION
|
||||
CAPTION "Network Connection Details"
|
||||
CAPTION "Dettagli della connessione di rete"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
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
|
||||
PUSHBUTTON "&Close", IDC_CLOSE, 125, 165, 62, 14
|
||||
END
|
||||
|
@ -90,7 +89,7 @@ BEGIN
|
|||
IDS_DEF_GATEWAY "Default Gateway"
|
||||
IDS_DHCP_SERVER "DHCP Server"
|
||||
IDS_LEASE_OBTAINED "Indirizzo ottenuto"
|
||||
IDS_LEASE_EXPIRES "Indirizzo con scadenza"
|
||||
IDS_LEASE_EXPIRES "Scadenza indirizzo"
|
||||
IDS_DNS_SERVERS "DNS Servers"
|
||||
IDS_WINS_SERVERS "WINS Servers"
|
||||
IDS_PROPERTY "Proprietà"
|
||||
|
@ -116,6 +115,7 @@ BEGIN
|
|||
IDS_NET_REPAIR "Ripara"
|
||||
IDS_NET_CREATELINK "Crea collegamento"
|
||||
IDS_NET_DELETE "Cancella"
|
||||
IDS_NET_RENAME "Rinomina"
|
||||
IDS_NET_PROPERTIES "Proprietà"
|
||||
|
||||
IDS_FORMAT_BIT "%u Bit/s"
|
||||
|
|
|
@ -472,8 +472,6 @@ OPENGL32_LoadICD( LPCWSTR driver )
|
|||
{
|
||||
if (!_wcsicmp( driver, icd->driver_name )) /* found */
|
||||
{
|
||||
icd->refcount++;
|
||||
|
||||
/* release mutex */
|
||||
if (!ReleaseMutex( OPENGL32_processdata.driver_mutex ))
|
||||
DBGPRINT( "Error: ReleaseMutex() failed (%d)", GetLastError() );
|
||||
|
@ -484,8 +482,6 @@ OPENGL32_LoadICD( LPCWSTR driver )
|
|||
|
||||
/* not found - try to load */
|
||||
icd = OPENGL32_LoadDriver( driver );
|
||||
if (icd != NULL)
|
||||
icd->refcount = 1;
|
||||
|
||||
/* release 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? */
|
||||
}
|
||||
|
||||
if (--icd->refcount == 0)
|
||||
if (icd->refcount == 0)
|
||||
ret = OPENGL32_UnloadDriver( icd );
|
||||
|
||||
/* release mutex */
|
||||
|
|
|
@ -191,6 +191,7 @@ extern GLPROCESSDATA OPENGL32_processdata;
|
|||
GLDRIVERDATA *OPENGL32_LoadICD( LPCWSTR driver );
|
||||
BOOL OPENGL32_UnloadICD( GLDRIVERDATA *icd );
|
||||
BOOL APIENTRY rosglMakeCurrent( HDC hdc, HGLRC hglrc );
|
||||
int APIENTRY rosglGetPixelFormat( HDC );
|
||||
BOOL APIENTRY IntUseFontBitmapsA( 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,
|
||||
|
|
|
@ -179,8 +179,11 @@ BOOL
|
|||
ROSGL_DeleteContext( GLRC *glrc )
|
||||
{
|
||||
/* 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 );
|
||||
}
|
||||
|
||||
/* remove from list */
|
||||
ROSGL_RemoveContext( glrc );
|
||||
|
@ -269,7 +272,7 @@ ROSGL_GetPrivateDCData( HDC hdc )
|
|||
data = OPENGL32_processdata.dcdata_list;
|
||||
while (data != NULL)
|
||||
{
|
||||
if (data->hdc == hdc) /* found */
|
||||
if ((data->hdc == hdc) || (WindowFromDC(data->hdc) == WindowFromDC(hdc))) /* found */
|
||||
break;
|
||||
data = data->next;
|
||||
}
|
||||
|
@ -413,7 +416,7 @@ ROSGL_ICDForHDC( HDC hdc )
|
|||
NULL) != NULL)
|
||||
{
|
||||
/* 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? */
|
||||
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 */
|
||||
if (icd->DrvCreateLayerContext != NULL)
|
||||
|
@ -989,6 +1002,12 @@ rosglMakeCurrent( HDC hdc, HGLRC hglrc )
|
|||
glrc->is_current = FALSE;
|
||||
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
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* FILE: dll/win32/shell32/lang/cs-CZ.rc
|
||||
* 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
|
||||
*/
|
||||
|
||||
|
@ -739,5 +739,5 @@ BEGIN
|
|||
IDS_DEFAULT_CLUSTER_SIZE "Výchozí alokaèní velikost"
|
||||
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
|
||||
|
|
|
@ -753,5 +753,5 @@ BEGIN
|
|||
IDS_DEFAULT_CLUSTER_SIZE "Dimensione predefinita di allocazione"
|
||||
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
|
||||
|
|
|
@ -315,9 +315,6 @@ static PIDLCPanelStruct* _ILGetCPanelPointer(LPCITEMIDLIST pidl)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* ISF_ControlPanel_fnEnumObjects
|
||||
*/
|
||||
static BOOL SHELL_RegisterCPanelApp(IEnumIDList* list, LPCSTR path)
|
||||
{
|
||||
LPITEMIDLIST pidl;
|
||||
|
@ -1346,7 +1343,7 @@ static HRESULT WINAPI ICPanel_IContextMenu2_InvokeCommand(
|
|||
}
|
||||
else
|
||||
{
|
||||
FIXME("\n");
|
||||
FIXME("Couldn't retrieve pointer to cpl structure\n");
|
||||
return E_FAIL;
|
||||
}
|
||||
if (SUCCEEDED(IShellLink_Constructor(NULL, &IID_IShellLinkA, (LPVOID*)&isl)))
|
||||
|
|
|
@ -1511,6 +1511,7 @@ static LRESULT ShellView_OnNotify(IShellViewImpl * This, UINT CtlID, LPNMHDR lpn
|
|||
msg.pt = 0;*/
|
||||
|
||||
LPNMLVKEYDOWN plvKeyDown = (LPNMLVKEYDOWN) lpnmh;
|
||||
SHORT ctrl = GetKeyState(VK_CONTROL) & 0x8000;
|
||||
|
||||
/* initiate a rename of the selected file or directory */
|
||||
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);
|
||||
}
|
||||
}
|
||||
else if(plvKeyDown->wVKey == 'C' && ctrl)
|
||||
{
|
||||
FIXME("Need to copy\n");
|
||||
}
|
||||
else if(plvKeyDown->wVKey == 'V' && ctrl)
|
||||
{
|
||||
FIXME("Need to paste\n");
|
||||
}
|
||||
else
|
||||
FIXME("LVN_KEYDOWN key=0x%08x\n",plvKeyDown->wVKey);
|
||||
}
|
||||
|
|
|
@ -439,13 +439,16 @@ CreateEnvironmentBlock(LPVOID *lpEnvironment,
|
|||
FALSE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Set user environment variables */
|
||||
SetUserEnvironment(lpEnvironment,
|
||||
hKeyUser,
|
||||
L"Environment");
|
||||
|
||||
/* Set user volatile environment variables */
|
||||
SetUserEnvironment(lpEnvironment,
|
||||
hKeyUser,
|
||||
L"Volatile Environment");
|
||||
|
||||
RegCloseKey(hKeyUser);
|
||||
|
||||
return TRUE;
|
||||
|
|
|
@ -26,10 +26,38 @@
|
|||
#include "tdiconn.h"
|
||||
#include "debug.h"
|
||||
|
||||
static BOOLEAN CantReadMore( PAFD_FCB FCB ) {
|
||||
UINT BytesAvailable = FCB->Recv.Content - FCB->Recv.BytesUsed;
|
||||
static NTSTATUS RefillSocketBuffer( PAFD_FCB FCB ) {
|
||||
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,
|
||||
|
@ -46,7 +74,22 @@ static NTSTATUS TryToSatisfyRecvRequestFromBuffer( PAFD_FCB FCB,
|
|||
AFD_DbgPrint(MID_TRACE,("Called, BytesAvailable = %d\n",
|
||||
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);
|
||||
|
||||
|
@ -88,23 +131,8 @@ static NTSTATUS TryToSatisfyRecvRequestFromBuffer( PAFD_FCB FCB,
|
|||
if( FCB->Recv.BytesUsed == FCB->Recv.Content ) {
|
||||
FCB->Recv.BytesUsed = FCB->Recv.Content = 0;
|
||||
FCB->PollState &= ~AFD_EVENT_RECEIVE;
|
||||
PollReeval( FCB->DeviceExt, FCB->FileObject );
|
||||
|
||||
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->Recv.Content = FCB->ReceiveIrp.Iosb.Information;
|
||||
}
|
||||
RefillSocketBuffer( FCB );
|
||||
}
|
||||
|
||||
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;
|
||||
} else
|
||||
FCB->PollState &= ~AFD_EVENT_RECEIVE;
|
||||
|
|
|
@ -1457,6 +1457,20 @@ dev_mgr_register_hcd(PUSB_DEV_MANAGER dev_mgr, PHCD hcd)
|
|||
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
|
||||
dev_mgr_register_irp(PUSB_DEV_MANAGER dev_mgr, PIRP pirp, PURB purb)
|
||||
{
|
||||
|
|
|
@ -208,6 +208,12 @@ PUSB_DEV_MANAGER dev_mgr,
|
|||
PHCD hcd
|
||||
);
|
||||
|
||||
VOID
|
||||
dev_mgr_deregister_hcd(
|
||||
PUSB_DEV_MANAGER dev_mgr,
|
||||
UCHAR hcd_id
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
dev_mgr_dispatch(
|
||||
IN PUSB_DEV_MANAGER dev_mgr,
|
||||
|
|
|
@ -58,15 +58,7 @@
|
|||
|
||||
#define endp_mult_count( endp ) ( ( ( endp->pusb_endp_desc->wMaxPacketSize & 0x1800 ) >> 11 ) + 1 )
|
||||
|
||||
#if 0
|
||||
/* WTF?! */
|
||||
#define release_adapter( padapTER ) \
|
||||
{\
|
||||
( ( padapTER ) ); \
|
||||
}
|
||||
#else
|
||||
#define release_adapter( padapTER ) (void)(padapTER)
|
||||
#endif
|
||||
#define release_adapter( padapTER ) HalPutDmaAdapter(padapTER)
|
||||
|
||||
#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_release(PDEVICE_OBJECT pdev);
|
||||
BOOLEAN ehci_release(PDEVICE_OBJECT pdev, PUSB_DEV_MANAGER dev_mgr);
|
||||
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
|
@ -3374,7 +3366,7 @@ ehci_hcd_release(PHCD hcd)
|
|||
|
||||
ehci = ehci_from_hcd(hcd);
|
||||
pdev_ext = ehci->pdev_ext;
|
||||
return ehci_release(pdev_ext->pdev_obj);
|
||||
return ehci_release(pdev_ext->pdev_obj, hcd->dev_mgr);
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
|
@ -3461,18 +3453,19 @@ ehci_probe(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, PUSB_DEV_MANAGER d
|
|||
PDEVICE_OBJECT pdev;
|
||||
BYTE buffer[sizeof(PCI_COMMON_CONFIG)];
|
||||
PEHCI_DEVICE_EXTENSION pdev_ext;
|
||||
LONG count = 0;
|
||||
|
||||
slot_num.u.AsULONG = 0;
|
||||
pci_config = (PPCI_COMMON_CONFIG) buffer;
|
||||
pdev = NULL;
|
||||
|
||||
//scan the bus to find ehci controller
|
||||
for(bus = 0; bus < 3; bus++) /* enum bus0-bus2 */
|
||||
//scan the PCI buses to find ehci controller
|
||||
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;
|
||||
for(j = 0; j < PCI_MAX_FUNCTIONS; j++)
|
||||
for(j = 0; j <= PCI_MAX_FUNCTION; 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
|
||||
pdev = ehci_alloc(drvr_obj, reg_path, ((bus << 8) | (i << 3) | j), dev_mgr);
|
||||
|
||||
if (!pdev)
|
||||
continue;
|
||||
if (pdev)
|
||||
#ifdef _MULTI_EHCI
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
//fatal error
|
||||
ehci_delete_device(pdev);
|
||||
ehci_delete_device(pdev, dev_mgr);
|
||||
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);
|
||||
release_adapter(pdev_ext->padapter);
|
||||
pdev_ext->padapter = NULL;
|
||||
ehci_delete_device(pdev);
|
||||
ehci_delete_device(pdev, dev_mgr);
|
||||
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");
|
||||
release_adapter(pdev_ext->padapter);
|
||||
pdev_ext->padapter = NULL;
|
||||
ehci_delete_device(pdev);
|
||||
ehci_delete_device(pdev, dev_mgr);
|
||||
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);
|
||||
pdev_ext->padapter = NULL;
|
||||
ehci_delete_device(pdev);
|
||||
ehci_delete_device(pdev, dev_mgr);
|
||||
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);
|
||||
pdev_ext->padapter = NULL;
|
||||
ehci_delete_device(pdev);
|
||||
ehci_delete_device(pdev, dev_mgr);
|
||||
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
|
||||
!= STATUS_SUCCESS)
|
||||
{
|
||||
ehci_release(pdev);
|
||||
ehci_release(pdev, dev_mgr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -4016,7 +4017,7 @@ ehci_get_capabilities(PEHCI_DEV ehci, PBYTE base)
|
|||
}
|
||||
|
||||
BOOLEAN
|
||||
ehci_delete_device(PDEVICE_OBJECT pdev)
|
||||
ehci_delete_device(PDEVICE_OBJECT pdev, PUSB_DEV_MANAGER dev_mgr)
|
||||
{
|
||||
STRING string;
|
||||
UNICODE_STRING symb_name;
|
||||
|
@ -4036,6 +4037,8 @@ ehci_delete_device(PDEVICE_OBJECT pdev)
|
|||
IoDeleteSymbolicLink(&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)
|
||||
ExFreePool(pdev_ext->res_list); // not allocated by usb_alloc_mem
|
||||
|
||||
|
@ -4061,7 +4064,7 @@ ehci_stop(PEHCI_DEV ehci)
|
|||
}
|
||||
|
||||
BOOLEAN
|
||||
ehci_release(PDEVICE_OBJECT pdev)
|
||||
ehci_release(PDEVICE_OBJECT pdev, PUSB_DEV_MANAGER dev_mgr)
|
||||
{
|
||||
PEHCI_DEVICE_EXTENSION pdev_ext;
|
||||
PEHCI_DEV ehci;
|
||||
|
@ -4094,7 +4097,7 @@ ehci_release(PDEVICE_OBJECT pdev)
|
|||
release_adapter(pdev_ext->padapter);
|
||||
pdev_ext->padapter = NULL;
|
||||
|
||||
ehci_delete_device(pdev);
|
||||
ehci_delete_device(pdev, dev_mgr);
|
||||
|
||||
return FALSE;
|
||||
|
||||
|
|
|
@ -65,15 +65,7 @@ extern PDEVICE_OBJECT ehci_probe(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_pa
|
|||
: enDP->pusb_endp_desc->wMaxPacketSize )
|
||||
|
||||
|
||||
#if 0
|
||||
/* WTF?! */
|
||||
#define release_adapter( padapTER ) \
|
||||
{\
|
||||
( ( padapTER ) ); \
|
||||
}
|
||||
#else
|
||||
#define release_adapter( padapTER ) (void)(padapTER)
|
||||
#endif
|
||||
#define release_adapter( padapTER ) HalPutDmaAdapter(padapTER)
|
||||
|
||||
#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_release(PDEVICE_OBJECT pdev);
|
||||
BOOLEAN uhci_release(PDEVICE_OBJECT pdev, PUSB_DEV_MANAGER dev_mgr);
|
||||
|
||||
static VOID uhci_stop(PUHCI_DEV uhci);
|
||||
|
||||
|
@ -473,7 +465,7 @@ uhci_create_device(PDRIVER_OBJECT drvr_obj, PUSB_DEV_MANAGER dev_mgr)
|
|||
}
|
||||
|
||||
BOOLEAN
|
||||
uhci_delete_device(PDEVICE_OBJECT pdev)
|
||||
uhci_delete_device(PDEVICE_OBJECT pdev, PUSB_DEV_MANAGER dev_mgr)
|
||||
{
|
||||
STRING string;
|
||||
UNICODE_STRING symb_name;
|
||||
|
@ -493,6 +485,8 @@ uhci_delete_device(PDEVICE_OBJECT pdev)
|
|||
IoDeleteSymbolicLink(&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)
|
||||
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;
|
||||
pdev = NULL;
|
||||
|
||||
//scan the bus to find uhci controller
|
||||
for(bus = 0; bus < 3; bus++) /* enum bus0-bus2 */
|
||||
//scan the PCI buses to find uhci controller
|
||||
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;
|
||||
for(j = 0; j < PCI_MAX_FUNCTIONS; j++)
|
||||
for(j = 0; j <= PCI_MAX_FUNCTION; 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 */
|
||||
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
|
||||
#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);
|
||||
if (pdev)
|
||||
#ifdef _MULTI_UHCI
|
||||
count++;
|
||||
#else
|
||||
goto LBL_LOOPOUT;
|
||||
#endif
|
||||
}
|
||||
|
@ -669,6 +660,8 @@ uhci_probe(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, PUSB_DEV_MANAGER d
|
|||
#ifndef _MULTI_UHCI
|
||||
LBL_LOOPOUT:
|
||||
#endif
|
||||
DbgPrint("Found %d UHCI controllers\n", count);
|
||||
|
||||
if (pdev)
|
||||
{
|
||||
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)
|
||||
{
|
||||
//fatal error
|
||||
uhci_delete_device(pdev);
|
||||
uhci_delete_device(pdev, dev_mgr);
|
||||
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);
|
||||
release_adapter(pdev_ext->padapter);
|
||||
pdev_ext->padapter = NULL;
|
||||
uhci_delete_device(pdev);
|
||||
uhci_delete_device(pdev, dev_mgr);
|
||||
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");
|
||||
release_adapter(pdev_ext->padapter);
|
||||
pdev_ext->padapter = NULL;
|
||||
uhci_delete_device(pdev);
|
||||
uhci_delete_device(pdev, dev_mgr);
|
||||
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);
|
||||
pdev_ext->padapter = NULL;
|
||||
uhci_delete_device(pdev);
|
||||
uhci_delete_device(pdev, dev_mgr);
|
||||
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);
|
||||
pdev_ext->padapter = NULL;
|
||||
uhci_delete_device(pdev);
|
||||
uhci_delete_device(pdev, dev_mgr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -857,7 +850,7 @@ uhci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
|
|||
FALSE) //No float save
|
||||
!= STATUS_SUCCESS)
|
||||
{
|
||||
uhci_release(pdev);
|
||||
uhci_release(pdev, dev_mgr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -865,7 +858,7 @@ uhci_alloc(PDRIVER_OBJECT drvr_obj, PUNICODE_STRING reg_path, ULONG bus_addr, PU
|
|||
}
|
||||
|
||||
BOOLEAN
|
||||
uhci_release(PDEVICE_OBJECT pdev)
|
||||
uhci_release(PDEVICE_OBJECT pdev, PUSB_DEV_MANAGER dev_mgr)
|
||||
{
|
||||
PDEVICE_EXTENSION pdev_ext;
|
||||
PUHCI_DEV uhci;
|
||||
|
@ -901,7 +894,7 @@ uhci_release(PDEVICE_OBJECT pdev)
|
|||
release_adapter(pdev_ext->padapter);
|
||||
pdev_ext->padapter = NULL;
|
||||
|
||||
uhci_delete_device(pdev);
|
||||
uhci_delete_device(pdev, dev_mgr);
|
||||
|
||||
return FALSE;
|
||||
|
||||
|
@ -3680,7 +3673,7 @@ uhci_hcd_release(struct _HCD * hcd)
|
|||
uhci = uhci_from_hcd(hcd);
|
||||
pdev_ext = uhci->pdev_ext;
|
||||
|
||||
return uhci_release(pdev_ext->pdev_obj);
|
||||
return uhci_release(pdev_ext->pdev_obj, hcd->dev_mgr);
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
<!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
|
||||
<module name="usbdriver" type="kernelmodedriver" installbase="system32/drivers" installname="usbdriver.sys">
|
||||
<define name="INCLUDE_EHCI" />
|
||||
<define name="_MULTI_UHCI" />
|
||||
<define name="_MULTI_EHCI" />
|
||||
<define name="_X86" />
|
||||
<include base="usbdriver">.</include>
|
||||
<library>ntoskrnl</library>
|
||||
|
|
|
@ -602,7 +602,6 @@ CPortPinDMus::Init(
|
|||
DPRINT("Failed to add pin to service group\n");
|
||||
return Status;
|
||||
}
|
||||
m_ServiceGroup->SupportDelayedService();
|
||||
}
|
||||
|
||||
Status = m_IrpQueue->Init(ConnectDetails, 0, 0, NULL);
|
||||
|
|
|
@ -1213,7 +1213,6 @@ CPortPinWaveCyclic::Init(
|
|||
return Status;
|
||||
}
|
||||
|
||||
m_ServiceGroup->SupportDelayedService();
|
||||
m_Stream->SetState(KSSTATE_STOP);
|
||||
m_State = KSSTATE_STOP;
|
||||
m_CommonBufferOffset = 0;
|
||||
|
@ -1224,6 +1223,8 @@ CPortPinWaveCyclic::Init(
|
|||
m_Delay = Int32x32To64(10, -10000);
|
||||
|
||||
Status = m_Stream->SetNotificationFreq(10, &m_FrameSize);
|
||||
PC_ASSERT(NT_SUCCESS(Status));
|
||||
PC_ASSERT(m_FrameSize);
|
||||
|
||||
SilenceBuffer = AllocateItem(NonPagedPool, m_FrameSize, TAG_PORTCLASS);
|
||||
if (!SilenceBuffer)
|
||||
|
|
|
@ -815,7 +815,6 @@ CPortPinWavePci::Init(
|
|||
DPRINT("Failed to add pin to service group\n");
|
||||
return Status;
|
||||
}
|
||||
m_ServiceGroup->SupportDelayedService();
|
||||
}
|
||||
|
||||
// delay of 10 milisec
|
||||
|
|
|
@ -340,7 +340,7 @@ CPortDMus::NewRegistryKey(
|
|||
RegistryKeyType,
|
||||
DesiredAccess,
|
||||
m_pDeviceObject,
|
||||
NULL,//FIXME
|
||||
(ISubdevice*)this,
|
||||
ObjectAttributes,
|
||||
CreateOptions,
|
||||
Disposition);
|
||||
|
|
|
@ -299,7 +299,7 @@ CPortTopology::NewRegistryKey(
|
|||
RegistryKeyType,
|
||||
DesiredAccess,
|
||||
m_pDeviceObject,
|
||||
NULL,//FIXME
|
||||
(ISubdevice*)this,
|
||||
ObjectAttributes,
|
||||
CreateOptions,
|
||||
Disposition);
|
||||
|
|
|
@ -340,7 +340,7 @@ CPortWaveCyclic::NewRegistryKey(
|
|||
DPRINT("IPortWaveCyclic_fnNewRegistryKey called w/o initialized\n");
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -359,7 +359,7 @@ CPortWavePci::NewRegistryKey(
|
|||
RegistryKeyType,
|
||||
DesiredAccess,
|
||||
m_pDeviceObject,
|
||||
NULL,//FIXME
|
||||
(ISubdevice*)this,
|
||||
ObjectAttributes,
|
||||
CreateOptions,
|
||||
Disposition);
|
||||
|
|
|
@ -329,7 +329,7 @@ CPortWaveRT::NewRegistryKey(
|
|||
DPRINT("IPortWaveRT_fnNewRegistryKey called w/o initialized\n");
|
||||
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
|
||||
|
|
|
@ -270,6 +270,9 @@ PcNewRegistryKey(
|
|||
NTSTATUS Status = STATUS_UNSUCCESSFUL;
|
||||
CRegistryKey * RegistryKey;
|
||||
PPCLASS_DEVICE_EXTENSION DeviceExt;
|
||||
PSUBDEVICE_DESCRIPTOR SubDeviceDescriptor;
|
||||
ISubdevice * Device;
|
||||
PSYMBOLICLINK_ENTRY SymEntry;
|
||||
|
||||
DPRINT("PcNewRegistryKey entered\n");
|
||||
|
||||
|
@ -294,8 +297,8 @@ PcNewRegistryKey(
|
|||
// object attributes is mandatory
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
// try to open the key
|
||||
Status = ZwOpenKey(&hHandle, DesiredAccess, ObjectAttributes);
|
||||
// try to create the key
|
||||
Status = ZwCreateKey(&hHandle, DesiredAccess, ObjectAttributes, 0, NULL, CreateOptions, Disposition);
|
||||
}
|
||||
else if (RegistryKeyType == DeviceRegistryKey ||
|
||||
RegistryKeyType == DriverRegistryKey ||
|
||||
|
@ -305,7 +308,7 @@ PcNewRegistryKey(
|
|||
if (RegistryKeyType == HwProfileRegistryKey)
|
||||
{
|
||||
// IoOpenDeviceRegistryKey used different constant
|
||||
RegistryKeyType = PLUGPLAY_REGKEY_CURRENT_HWPROFILE;
|
||||
RegistryKeyType = PLUGPLAY_REGKEY_CURRENT_HWPROFILE | PLUGPLAY_REGKEY_DEVICE;
|
||||
}
|
||||
|
||||
// obtain the new device extension
|
||||
|
@ -315,24 +318,71 @@ PcNewRegistryKey(
|
|||
}
|
||||
else if (RegistryKeyType == DeviceInterfaceRegistryKey)
|
||||
{
|
||||
// FIXME
|
||||
UNIMPLEMENTED
|
||||
DbgBreakPoint();
|
||||
if (SubDevice == NULL)
|
||||
{
|
||||
// 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))
|
||||
{
|
||||
DPRINT1("PcNewRegistryKey failed with %lx\n", Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
// allocate new registry key object
|
||||
RegistryKey = new(NonPagedPool, TAG_PORTCLASS)CRegistryKey(OuterUnknown, hHandle);
|
||||
if (!RegistryKey)
|
||||
{
|
||||
// not enough memory
|
||||
ZwClose(hHandle);
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
|
||||
// query for interface
|
||||
Status = RegistryKey->QueryInterface(IID_IRegistryKey, (PVOID*)OutRegistryKey);
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
// out of memory
|
||||
delete RegistryKey;
|
||||
}
|
||||
|
||||
|
|
|
@ -54,12 +54,10 @@ protected:
|
|||
|
||||
LIST_ENTRY m_ServiceSinkHead;
|
||||
|
||||
BOOL m_Initialized;
|
||||
BOOL m_TimerActive;
|
||||
BOOL m_TimerInitialized;
|
||||
KTIMER m_Timer;
|
||||
KDPC m_Dpc;
|
||||
KEVENT m_Event;
|
||||
LONG m_ThreadActive;
|
||||
KSPIN_LOCK m_Lock;
|
||||
|
||||
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)
|
||||
{
|
||||
// initialize dpc
|
||||
KeInitializeDpc(&m_Dpc, IServiceGroupDpc, (PVOID)this);
|
||||
|
||||
// set highest importance
|
||||
KeSetImportanceDpc(&m_Dpc, HighImportance);
|
||||
KeInitializeEvent(&m_Event, NotificationEvent, FALSE);
|
||||
|
||||
// initialize service group list lock
|
||||
KeInitializeSpinLock(&m_Lock);
|
||||
|
||||
// initialize service group list
|
||||
InitializeListHead(&m_ServiceSinkHead);
|
||||
}
|
||||
|
||||
|
@ -119,15 +124,34 @@ CServiceGroup::RequestService()
|
|||
|
||||
DPRINT("CServiceGroup::RequestService() Dpc at Level %u\n", KeGetCurrentIrql());
|
||||
|
||||
if (KeGetCurrentIrql() > DISPATCH_LEVEL)
|
||||
if (m_TimerInitialized)
|
||||
{
|
||||
KeInsertQueueDpc(&m_Dpc, NULL, NULL);
|
||||
return;
|
||||
}
|
||||
LARGE_INTEGER DueTime;
|
||||
|
||||
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
|
||||
KeInsertQueueDpc(&m_Dpc, NULL, NULL);
|
||||
KeLowerIrql(OldIrql);
|
||||
// no due time
|
||||
DueTime.QuadPart = 0LL;
|
||||
|
||||
// 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)
|
||||
{
|
||||
PGROUP_ENTRY Entry;
|
||||
KIRQL OldLevel;
|
||||
|
||||
// sanity check
|
||||
PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL);
|
||||
|
||||
// allocate service sink entry
|
||||
Entry = (PGROUP_ENTRY)AllocateItem(NonPagedPool, sizeof(GROUP_ENTRY), TAG_PORTCLASS);
|
||||
if (!Entry)
|
||||
{
|
||||
// out of memory
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
|
||||
// initialize service sink entry
|
||||
Entry->pServiceSink = pServiceSink;
|
||||
// increment reference count
|
||||
pServiceSink->AddRef();
|
||||
|
||||
// acquire service group list lock
|
||||
KeAcquireSpinLock(&m_Lock, &OldLevel);
|
||||
|
||||
// insert into service sink list
|
||||
InsertTailList(&m_ServiceSinkHead, &Entry->Entry);
|
||||
|
||||
// release service group list lock
|
||||
KeReleaseSpinLock(&m_Lock, OldLevel);
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -162,23 +201,45 @@ CServiceGroup::RemoveMember(
|
|||
{
|
||||
PLIST_ENTRY CurEntry;
|
||||
PGROUP_ENTRY Entry;
|
||||
KIRQL OldLevel;
|
||||
|
||||
// sanity check
|
||||
PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL);
|
||||
|
||||
// acquire service group list lock
|
||||
KeAcquireSpinLock(&m_Lock, &OldLevel);
|
||||
|
||||
// grab first entry
|
||||
CurEntry = m_ServiceSinkHead.Flink;
|
||||
|
||||
// loop list until the passed entry is found
|
||||
while (CurEntry != &m_ServiceSinkHead)
|
||||
{
|
||||
// grab entry
|
||||
Entry = CONTAINING_RECORD(CurEntry, GROUP_ENTRY, Entry);
|
||||
|
||||
// check if it matches the passed entry
|
||||
if (Entry->pServiceSink == pServiceSink)
|
||||
{
|
||||
// remove entry from list
|
||||
RemoveEntryList(&Entry->Entry);
|
||||
|
||||
// release service sink reference
|
||||
pServiceSink->Release();
|
||||
|
||||
// free service sink entry
|
||||
FreeItem(Entry, TAG_PORTCLASS);
|
||||
return;
|
||||
|
||||
// leave loop
|
||||
break;
|
||||
}
|
||||
// move to next entry
|
||||
CurEntry = CurEntry->Flink;
|
||||
}
|
||||
|
||||
// release service group list lock
|
||||
KeReleaseSpinLock(&m_Lock, OldLevel);
|
||||
|
||||
}
|
||||
|
||||
VOID
|
||||
|
@ -194,73 +255,40 @@ IServiceGroupDpc(
|
|||
PGROUP_ENTRY Entry;
|
||||
CServiceGroup * This = (CServiceGroup*)DeferredContext;
|
||||
|
||||
// acquire service group list lock
|
||||
KeAcquireSpinLockAtDpcLevel(&This->m_Lock);
|
||||
|
||||
// grab first entry
|
||||
CurEntry = This->m_ServiceSinkHead.Flink;
|
||||
|
||||
// loop the list and call the attached service sink/group
|
||||
while (CurEntry != &This->m_ServiceSinkHead)
|
||||
{
|
||||
//grab current entry
|
||||
Entry = (PGROUP_ENTRY)CONTAINING_RECORD(CurEntry, GROUP_ENTRY, Entry);
|
||||
|
||||
// call service sink/group
|
||||
Entry->pServiceSink->RequestService();
|
||||
|
||||
// move to next entry
|
||||
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
|
||||
NTAPI
|
||||
CServiceGroup::SupportDelayedService()
|
||||
{
|
||||
//NTSTATUS Status;
|
||||
//HANDLE ThreadHandle;
|
||||
|
||||
PC_ASSERT_IRQL(DISPATCH_LEVEL);
|
||||
|
||||
if (m_Initialized)
|
||||
return;
|
||||
// initialize the timer
|
||||
KeInitializeTimer(&m_Timer);
|
||||
|
||||
KeInitializeTimerEx(&m_Timer, NotificationTimer);
|
||||
|
||||
#if 0
|
||||
Status = PsCreateSystemThread(&ThreadHandle, THREAD_ALL_ACCESS, NULL, 0, NULL, ServiceGroupThread, (PVOID)This);
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
ZwClose(ThreadHandle);
|
||||
m_Initialized = TRUE;
|
||||
}
|
||||
#endif
|
||||
// use the timer to perform service requests
|
||||
m_TimerInitialized = TRUE;
|
||||
}
|
||||
|
||||
VOID
|
||||
|
@ -270,17 +298,14 @@ CServiceGroup::RequestDelayedService(
|
|||
{
|
||||
LARGE_INTEGER DueTime;
|
||||
|
||||
// sanity check
|
||||
PC_ASSERT_IRQL(DISPATCH_LEVEL);
|
||||
PC_ASSERT(m_TimerInitialized);
|
||||
|
||||
DueTime.QuadPart = ullDelay;
|
||||
|
||||
if (m_Initialized)
|
||||
{
|
||||
if (KeGetCurrentIrql() <= DISPATCH_LEVEL)
|
||||
KeSetTimer(&m_Timer, DueTime, &m_Dpc);
|
||||
else
|
||||
KeInsertQueueDpc(&m_Dpc, NULL, NULL);
|
||||
}
|
||||
// set the timer
|
||||
KeSetTimer(&m_Timer, DueTime, &m_Dpc);
|
||||
}
|
||||
|
||||
VOID
|
||||
|
@ -288,11 +313,10 @@ NTAPI
|
|||
CServiceGroup::CancelDelayedService()
|
||||
{
|
||||
PC_ASSERT_IRQL(DISPATCH_LEVEL);
|
||||
PC_ASSERT(m_TimerInitialized);
|
||||
|
||||
if (m_Initialized)
|
||||
{
|
||||
KeCancelTimer(&m_Timer);
|
||||
}
|
||||
// cancel the timer
|
||||
KeCancelTimer(&m_Timer);
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
|
@ -303,19 +327,31 @@ PcNewServiceGroup(
|
|||
{
|
||||
CServiceGroup * This;
|
||||
NTSTATUS Status;
|
||||
|
||||
DPRINT("PcNewServiceGroup entered\n");
|
||||
|
||||
This = new(NonPagedPool, TAG_PORTCLASS)CServiceGroup(OuterUnknown);
|
||||
if (!This)
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
//FIXME support aggregation
|
||||
PC_ASSERT(OuterUnknown == NULL);
|
||||
|
||||
// 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);
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
// failed to acquire service sink interface
|
||||
delete This;
|
||||
return Status;
|
||||
}
|
||||
|
||||
// done
|
||||
return Status;
|
||||
}
|
||||
|
|
|
@ -97,7 +97,6 @@ HandleSysAudioFilterPinProperties(
|
|||
NTSTATUS Status;
|
||||
PKSAUDIO_DEVICE_ENTRY Entry;
|
||||
ULONG BytesReturned;
|
||||
PKSP_PIN Pin;
|
||||
|
||||
// in order to access pin properties of a sysaudio device
|
||||
// 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));
|
||||
}
|
||||
|
||||
Pin = (PKSP_PIN)Property;
|
||||
|
||||
Entry = GetListEntry(&DeviceExtension->KsAudioDeviceList, ((KSP_PIN*)Property)->Reserved);
|
||||
if (!Entry)
|
||||
{
|
||||
|
@ -119,64 +116,15 @@ HandleSysAudioFilterPinProperties(
|
|||
return SetIrpIoStatus(Irp, STATUS_INVALID_PARAMETER, 0);
|
||||
}
|
||||
|
||||
if (!Entry->Pins)
|
||||
{
|
||||
/* 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,
|
||||
/* forward request to the filter implementing the property */
|
||||
Status = KsSynchronousIoControlDevice(Entry->FileObject, KernelMode, IOCTL_KS_PROPERTY,
|
||||
(PVOID)IoStack->Parameters.DeviceIoControl.Type3InputBuffer,
|
||||
IoStack->Parameters.DeviceIoControl.InputBufferLength,
|
||||
Irp->UserBuffer,
|
||||
IoStack->Parameters.DeviceIoControl.OutputBufferLength,
|
||||
&BytesReturned);
|
||||
|
||||
return SetIrpIoStatus(Irp, Status, BytesReturned);
|
||||
}
|
||||
return SetIrpIoStatus(Irp, Status, BytesReturned);
|
||||
}
|
||||
|
||||
|
||||
|
@ -328,7 +276,7 @@ GetPinInstanceCount(
|
|||
PinRequest.Property.Set = KSPROPSETID_Pin;
|
||||
PinRequest.Property.Flags = KSPROPERTY_TYPE_GET;
|
||||
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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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 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
|
||||
OpenDevice(
|
||||
IN PUNICODE_STRING DeviceName,
|
||||
|
@ -199,8 +66,6 @@ InsertAudioDevice(
|
|||
IN PUNICODE_STRING DeviceName)
|
||||
{
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
PFILTER_WORKER_CONTEXT Ctx = NULL;
|
||||
PIO_WORKITEM WorkItem = NULL;
|
||||
PSYSAUDIODEVEXT DeviceExtension;
|
||||
PKSAUDIO_DEVICE_ENTRY DeviceEntry = NULL;
|
||||
|
||||
|
@ -215,24 +80,6 @@ InsertAudioDevice(
|
|||
/* initialize audio 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 */
|
||||
DeviceEntry->DeviceName.Length = 0;
|
||||
DeviceEntry->DeviceName.MaximumLength = DeviceName->MaximumLength + 10 * sizeof(WCHAR);
|
||||
|
@ -255,9 +102,6 @@ InsertAudioDevice(
|
|||
goto cleanup;
|
||||
}
|
||||
|
||||
Ctx->DeviceEntry = DeviceEntry;
|
||||
Ctx->WorkItem = WorkItem;
|
||||
|
||||
/* fetch device extension */
|
||||
DeviceExtension = (PSYSAUDIODEVEXT)DeviceObject->DeviceExtension;
|
||||
/* insert new audio device */
|
||||
|
@ -265,16 +109,9 @@ InsertAudioDevice(
|
|||
InterlockedIncrement((PLONG)&DeviceExtension->NumberOfKsAudioDevices);
|
||||
|
||||
DPRINT("Successfully opened audio device %u Device %S\n", DeviceExtension->NumberOfKsAudioDevices, DeviceEntry->DeviceName.Buffer);
|
||||
IoQueueWorkItem(WorkItem, FilterPinWorkerRoutine, DelayedWorkQueue, (PVOID)Ctx);
|
||||
return Status;
|
||||
|
||||
cleanup:
|
||||
if (Ctx)
|
||||
ExFreePool(Ctx);
|
||||
|
||||
if (WorkItem)
|
||||
IoFreeWorkItem(WorkItem);
|
||||
|
||||
if (DeviceEntry)
|
||||
{
|
||||
if (DeviceEntry->DeviceName.Buffer)
|
||||
|
|
|
@ -53,10 +53,10 @@ SysAudio_Shutdown(
|
|||
|
||||
/* close audio device handle */
|
||||
ZwClose(DeviceEntry->Handle);
|
||||
|
||||
/* free device string */
|
||||
RtlFreeUnicodeString(&DeviceEntry->DeviceName);
|
||||
/* free pins */
|
||||
ExFreePool(DeviceEntry->Pins);
|
||||
|
||||
/* free audio device entry */
|
||||
ExFreePool(DeviceEntry);
|
||||
}
|
||||
|
|
|
@ -354,7 +354,7 @@ InstantiatePins(
|
|||
}
|
||||
#endif
|
||||
|
||||
DeviceEntry->Pins[Connect->PinId].References = 0;
|
||||
//DeviceEntry->Pins[Connect->PinId].References = 0;
|
||||
|
||||
/* initialize dispatch context */
|
||||
DispatchContext->Handle = RealPinHandle;
|
||||
|
@ -385,6 +385,44 @@ InstantiatePins(
|
|||
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
|
||||
NTAPI
|
||||
DispatchCreateSysAudioPin(
|
||||
|
@ -394,7 +432,7 @@ DispatchCreateSysAudioPin(
|
|||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
PIO_STACK_LOCATION IoStack;
|
||||
PKSAUDIO_DEVICE_ENTRY DeviceEntry;
|
||||
PKSPIN_CONNECT Connect = NULL;
|
||||
PKSPIN_CONNECT Connect;
|
||||
PDISPATCH_CONTEXT DispatchContext;
|
||||
|
||||
DPRINT("DispatchCreateSysAudioPin entered\n");
|
||||
|
@ -410,9 +448,6 @@ DispatchCreateSysAudioPin(
|
|||
/* get current attached virtual device */
|
||||
DeviceEntry = (PKSAUDIO_DEVICE_ENTRY)IoStack->FileObject->RelatedFileObject->FsContext;
|
||||
|
||||
/* now validate pin connect request */
|
||||
Status = KsValidateConnectRequest(Irp, DeviceEntry->PinDescriptorsCount, DeviceEntry->PinDescriptors, &Connect);
|
||||
|
||||
/* check for success */
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
|
@ -422,6 +457,19 @@ DispatchCreateSysAudioPin(
|
|||
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 */
|
||||
DispatchContext = ExAllocatePool(NonPagedPool, sizeof(DISPATCH_CONTEXT));
|
||||
if (!DispatchContext)
|
||||
|
|
|
@ -24,9 +24,7 @@ typedef struct
|
|||
HANDLE Handle; // handle to audio device
|
||||
PFILE_OBJECT FileObject; // file objecto to audio device
|
||||
|
||||
PIN_INFO * Pins; // array of PIN_INFO
|
||||
ULONG PinDescriptorsCount; // number of pin descriptors
|
||||
KSPIN_DESCRIPTOR *PinDescriptors; // pin descriptors array
|
||||
//PIN_INFO * Pins; // array of PIN_INFO
|
||||
}KSAUDIO_DEVICE_ENTRY, *PKSAUDIO_DEVICE_ENTRY;
|
||||
|
||||
typedef struct
|
||||
|
@ -62,20 +60,6 @@ typedef struct
|
|||
HANDLE hMixerPin; // handle to mixer pin
|
||||
}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
|
||||
SysAudioAllocateDeviceHeader(
|
||||
IN SYSAUDIODEVEXT *DeviceExtension);
|
||||
|
|
|
@ -51,6 +51,7 @@
|
|||
@ stdcall HalInitializeProcessor(long ptr)
|
||||
@ stdcall HalMakeBeep(long)
|
||||
@ stdcall HalProcessorIdle()
|
||||
@ stdcall HalPutDmaAdapter(ptr)
|
||||
@ stdcall HalQueryDisplayParameters(ptr ptr ptr ptr)
|
||||
@ stdcall HalQueryRealTimeClock(ptr)
|
||||
@ stdcall HalReadDmaCounter(ptr)
|
||||
|
|
|
@ -360,10 +360,10 @@ HalpGetPCIData(IN PBUS_HANDLER BusHandler,
|
|||
(1 == BusHandler->BusNumber && 0 != Slot.u.bits.DeviceNumber))
|
||||
{
|
||||
DPRINT("Blacklisted PCI slot\n");
|
||||
if (0 == Offset && 2 <= Length)
|
||||
if (0 == Offset && sizeof(USHORT) <= Length)
|
||||
{
|
||||
*(PUSHORT)Buffer = PCI_INVALID_VENDORID;
|
||||
return 2;
|
||||
return sizeof(USHORT);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -700,7 +700,6 @@ HaliPciInterfaceReadConfig(IN PBUS_HANDLER RootBusHandler,
|
|||
IN ULONG Length)
|
||||
{
|
||||
BUS_HANDLER BusHandler;
|
||||
PPCI_COMMON_CONFIG PciData = (PPCI_COMMON_CONFIG)Buffer;
|
||||
|
||||
/* Setup fake PCI Bus handler */
|
||||
RtlCopyMemory(&BusHandler, &HalpFakePciBusHandler, sizeof(BUS_HANDLER));
|
||||
|
@ -709,21 +708,6 @@ HaliPciInterfaceReadConfig(IN PBUS_HANDLER RootBusHandler,
|
|||
/* Read configuration data */
|
||||
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;
|
||||
}
|
||||
|
@ -970,6 +954,7 @@ HalpInitializePciStubs(VOID)
|
|||
ULONG i;
|
||||
PCI_SLOT_NUMBER j;
|
||||
ULONG VendorId = 0;
|
||||
ULONG MaxPciBusNumber;
|
||||
|
||||
/* Query registry information */
|
||||
PciRegistryInfo = HalpQueryPciRegistryInfo();
|
||||
|
@ -977,11 +962,19 @@ HalpInitializePciStubs(VOID)
|
|||
{
|
||||
/* Assume type 1 */
|
||||
PciType = 1;
|
||||
|
||||
/* Force a manual bus scan later */
|
||||
MaxPciBusNumber = MAXULONG;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Get the type and free the info structure */
|
||||
/* Get the PCI type */
|
||||
PciType = PciRegistryInfo->HardwareMechanism & 0xF;
|
||||
|
||||
/* Get MaxPciBusNumber and make it 0-based */
|
||||
MaxPciBusNumber = PciRegistryInfo->NoBuses - 1;
|
||||
|
||||
/* Free the info structure */
|
||||
ExFreePool(PciRegistryInfo);
|
||||
}
|
||||
|
||||
|
@ -1007,7 +1000,7 @@ HalpInitializePciStubs(VOID)
|
|||
/* Type 2 PCI Bus */
|
||||
case 2:
|
||||
|
||||
/* Copy the Type 1 handler data */
|
||||
/* Copy the Type 2 handler data */
|
||||
RtlCopyMemory(&PCIConfigHandler,
|
||||
&PCIConfigHandlerType2,
|
||||
sizeof (PCIConfigHandler));
|
||||
|
@ -1027,31 +1020,44 @@ HalpInitializePciStubs(VOID)
|
|||
DbgPrint("HAL: Unknown PCI type\n");
|
||||
}
|
||||
|
||||
/* Loop all possible buses */
|
||||
for (i = 0; i < 256; i++)
|
||||
/* Run a forced bus scan if needed */
|
||||
if (MaxPciBusNumber == MAXULONG)
|
||||
{
|
||||
/* Loop all devices */
|
||||
for (j.u.AsULONG = 0; j.u.AsULONG < 32; j.u.AsULONG++)
|
||||
/* Initialize the max bus number to 0xFF */
|
||||
HalpMaxPciBus = 0xFF;
|
||||
|
||||
/* Initialize the counter */
|
||||
MaxPciBusNumber = 0;
|
||||
|
||||
/* Loop all possible buses */
|
||||
for (i = 0; i < HalpMaxPciBus; i++)
|
||||
{
|
||||
/* Query the interface */
|
||||
if (HaliPciInterfaceReadConfig(NULL,
|
||||
i,
|
||||
j,
|
||||
&VendorId,
|
||||
0,
|
||||
sizeof(ULONG)))
|
||||
/* Loop all devices */
|
||||
for (j.u.AsULONG = 0; j.u.AsULONG < BusData->MaxDevice; j.u.AsULONG++)
|
||||
{
|
||||
/* Validate the vendor ID */
|
||||
if ((USHORT)VendorId != PCI_INVALID_VENDORID)
|
||||
/* Query the interface */
|
||||
if (HaliPciInterfaceReadConfig(NULL,
|
||||
i,
|
||||
j,
|
||||
&VendorId,
|
||||
0,
|
||||
sizeof(ULONG)))
|
||||
{
|
||||
/* Set this as the maximum ID */
|
||||
HalpMaxPciBus = i;
|
||||
break;
|
||||
/* Validate the vendor ID */
|
||||
if ((USHORT)VendorId != PCI_INVALID_VENDORID)
|
||||
{
|
||||
/* Set this as the maximum ID */
|
||||
MaxPciBusNumber = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Set the real max bus number */
|
||||
HalpMaxPciBus = MaxPciBusNumber;
|
||||
|
||||
/* We're done */
|
||||
HalpPCIConfigInitialized = TRUE;
|
||||
}
|
||||
|
|
|
@ -472,6 +472,11 @@ typedef struct
|
|||
DWORD ProcessGroup;
|
||||
} 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))
|
||||
|
@ -551,6 +556,7 @@ typedef struct
|
|||
#define GET_CONSOLE_ALIASES_EXES_LENGTH (0x3D)
|
||||
#define GENERATE_CTRL_EVENT (0x3E)
|
||||
#define CREATE_THREAD (0x3F)
|
||||
#define SET_SCREEN_BUFFER_SIZE (0x40)
|
||||
|
||||
/* Keep in sync with definition below. */
|
||||
#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_LENGTH GetConsoleAliasesExesLength;
|
||||
CSRSS_GENERATE_CTRL_EVENT GenerateCtrlEvent;
|
||||
CSRSS_SET_SCREEN_BUFFER_SIZE SetScreenBufferSize;
|
||||
} Data;
|
||||
} CSR_API_MESSAGE, *PCSR_API_MESSAGE;
|
||||
|
||||
|
|
|
@ -189,6 +189,7 @@ InfHostOpenFile(PHINF InfHandle,
|
|||
if (FileLength != fread(FileBuffer, (size_t)1, (size_t)FileLength, File))
|
||||
{
|
||||
DPRINT1("fread() failed (errno %d)\n", errno);
|
||||
FREE(FileBuffer);
|
||||
fclose(File);
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ RtlMultiByteToUnicodeN(
|
|||
*ResultSize = Size * sizeof(WCHAR);
|
||||
|
||||
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 + 1] = 0;
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -1612,7 +1612,7 @@ Phase1InitializationDiscard(IN PVOID Context)
|
|||
else if (!strncmp(SafeBoot, "NETWORK", 7))
|
||||
{
|
||||
/* With Networking */
|
||||
InitSafeBootMode = 1;
|
||||
InitSafeBootMode = 2;
|
||||
SafeBoot += 7;
|
||||
MessageCode = BOOTING_IN_SAFEMODE_NETWORK;
|
||||
}
|
||||
|
|
|
@ -14,8 +14,10 @@ PULONG MmGetPageDirectory(VOID);
|
|||
#define PAGETABLE_MAP (0xc0000000)
|
||||
#define PAGEDIRECTORY_MAP (0xc0000000 + (PAGETABLE_MAP / (1024)))
|
||||
|
||||
/* FIXME: These are different for PAE */
|
||||
#define PTE_BASE 0xC0000000
|
||||
#define PDE_BASE 0xC0300000
|
||||
#define PDE_TOP 0xC0300FFF
|
||||
#define PTE_TOP 0xC03FFFFF
|
||||
#define HYPER_SPACE 0xC0400000
|
||||
|
||||
|
|
|
@ -166,8 +166,8 @@ KdInitSystem(ULONG BootPhase,
|
|||
/* XXX Check for settings that we support */
|
||||
if (strstr(CommandLine, "BREAK")) KdpEarlyBreak = TRUE;
|
||||
if (strstr(CommandLine, "NODEBUG")) KdDebuggerEnabled = FALSE;
|
||||
if (strstr(CommandLine, "CRASHDEBUG")) KdDebuggerEnabled = FALSE;
|
||||
if (strstr(CommandLine, "DEBUG"))
|
||||
else if (strstr(CommandLine, "CRASHDEBUG")) KdDebuggerEnabled = FALSE;
|
||||
else if (strstr(CommandLine, "DEBUG"))
|
||||
{
|
||||
/* Enable on the serial port */
|
||||
KdDebuggerEnabled = TRUE;
|
||||
|
|
|
@ -1697,7 +1697,7 @@ KdbpGetCommandLineSettings(
|
|||
|
||||
while (p1 && (p2 = strchr(p1, ' ')))
|
||||
{
|
||||
p2++;
|
||||
p2 += 2;
|
||||
|
||||
if (!_strnicmp(p2, "KDSERIAL", 8))
|
||||
{
|
||||
|
|
|
@ -1206,7 +1206,7 @@ KiTrap0EHandler(IN PKTRAP_FRAME TrapFrame)
|
|||
(PVOID)Cr2,
|
||||
TrapFrame->SegCs & MODE_MASK,
|
||||
TrapFrame);
|
||||
if (Status == STATUS_SUCCESS) KiEoiHelper(TrapFrame);
|
||||
if (NT_SUCCESS(Status)) KiEoiHelper(TrapFrame);
|
||||
|
||||
/* Check for S-LIST fault */
|
||||
if (TrapFrame->Eip == (ULONG_PTR)ExpInterlockedPopEntrySListFault)
|
||||
|
|
|
@ -41,7 +41,7 @@ ULONG MmSessionPoolSize;
|
|||
ULONG MmSessionImageSize;
|
||||
PVOID MiSystemViewStart;
|
||||
ULONG MmSystemViewSize;
|
||||
PFN_NUMBER MmSystemPageDirectory;
|
||||
PFN_NUMBER MmSystemPageDirectory[PD_COUNT];
|
||||
PMMPTE MmSystemPagePtes;
|
||||
ULONG MmNumberOfSystemPtes;
|
||||
ULONG MxPfnAllocation;
|
||||
|
|
|
@ -18,6 +18,185 @@
|
|||
|
||||
/* 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
|
||||
NTAPI
|
||||
MiCheckForContiguousMemory(IN PVOID BaseAddress,
|
||||
|
@ -143,7 +322,10 @@ MiFindContiguousMemory(IN PFN_NUMBER LowestPfn,
|
|||
{
|
||||
PFN_NUMBER Page;
|
||||
PHYSICAL_ADDRESS PhysicalAddress;
|
||||
PAGED_CODE ();
|
||||
PMMPFN Pfn1, EndPfn;
|
||||
PMMPTE PointerPte;
|
||||
PVOID BaseAddress;
|
||||
PAGED_CODE();
|
||||
ASSERT(SizeInPages != 0);
|
||||
|
||||
//
|
||||
|
@ -160,7 +342,22 @@ MiFindContiguousMemory(IN PFN_NUMBER LowestPfn,
|
|||
// We'll just piggyback on the I/O memory mapper
|
||||
//
|
||||
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
|
||||
|
@ -249,6 +446,7 @@ MiFreeContiguousMemory(IN PVOID BaseAddress)
|
|||
KIRQL OldIrql;
|
||||
PFN_NUMBER PageFrameIndex, LastPage, PageCount;
|
||||
PMMPFN Pfn1, StartPfn;
|
||||
PMMPTE PointerPte;
|
||||
PAGED_CODE();
|
||||
|
||||
//
|
||||
|
@ -267,10 +465,9 @@ MiFreeContiguousMemory(IN PVOID BaseAddress)
|
|||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// Otherwise, get the PTE and page number for the allocation
|
||||
//
|
||||
PageFrameIndex = PFN_FROM_PTE(MiAddressToPte(BaseAddress));
|
||||
/* Get the PTE and frame number for the allocation*/
|
||||
PointerPte = MiAddressToPte(BaseAddress);
|
||||
PageFrameIndex = PFN_FROM_PTE(PointerPte);
|
||||
|
||||
//
|
||||
// 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
|
||||
//
|
||||
KeBugCheckEx (BAD_POOL_CALLER,
|
||||
0x60,
|
||||
(ULONG_PTR)BaseAddress,
|
||||
0,
|
||||
0);
|
||||
KeBugCheckEx(BAD_POOL_CALLER,
|
||||
0x60,
|
||||
(ULONG_PTR)BaseAddress,
|
||||
0,
|
||||
0);
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -294,16 +491,21 @@ MiFreeContiguousMemory(IN PVOID BaseAddress)
|
|||
StartPfn = Pfn1;
|
||||
Pfn1->u3.e1.StartOfAllocation = 0;
|
||||
|
||||
//
|
||||
// Look the PFNs
|
||||
//
|
||||
/* Loop the PFNs until we find the one that marks the end of the allocation */
|
||||
do
|
||||
{
|
||||
//
|
||||
// Until we find the one that marks the end of the allocation
|
||||
//
|
||||
/* Make sure these are the pages we setup in the allocation routine */
|
||||
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);
|
||||
|
||||
|
||||
//
|
||||
// Found it, unmark it
|
||||
//
|
||||
|
@ -328,14 +530,14 @@ MiFreeContiguousMemory(IN PVOID BaseAddress)
|
|||
//
|
||||
// Loop all the pages
|
||||
//
|
||||
LastPage = PageFrameIndex + PageCount;
|
||||
LastPage = PageFrameIndex + PageCount;
|
||||
do
|
||||
{
|
||||
//
|
||||
// Free each one, and move on
|
||||
//
|
||||
MmReleasePageMemoryConsumer(MC_NPPOOL, PageFrameIndex);
|
||||
} while (++PageFrameIndex < LastPage);
|
||||
MmReleasePageMemoryConsumer(MC_NPPOOL, PageFrameIndex++);
|
||||
} while (PageFrameIndex < LastPage);
|
||||
|
||||
//
|
||||
// Release the PFN lock
|
||||
|
|
|
@ -151,6 +151,7 @@ MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
|
|||
MMPTE TempPde, TempPte;
|
||||
PVOID NonPagedPoolExpansionVa;
|
||||
ULONG OldCount;
|
||||
KIRQL OldIrql;
|
||||
|
||||
/* Check for kernel stack size that's too big */
|
||||
if (MmLargeStackSize > (KERNEL_LARGE_STACK_SIZE / _1KB))
|
||||
|
@ -338,7 +339,7 @@ MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
|
|||
MmNonPagedSystemStart = (PVOID)((ULONG_PTR)MmNonPagedPoolStart -
|
||||
(MmNumberOfSystemPtes + 1) * PAGE_SIZE);
|
||||
MmNonPagedSystemStart = (PVOID)((ULONG_PTR)MmNonPagedSystemStart &
|
||||
~((4 * 1024 * 1024) - 1));
|
||||
~(PDE_MAPPED_VA - 1));
|
||||
|
||||
//
|
||||
// Don't let it go below the minimum
|
||||
|
@ -386,7 +387,7 @@ MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
|
|||
//
|
||||
MmPfnDatabase[0] = (PVOID)0xB0000000;
|
||||
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
|
||||
|
@ -541,21 +542,26 @@ MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
|
|||
//
|
||||
MiInitializeSystemPtes(PointerPte, MmNumberOfSystemPtes, SystemPteSpace);
|
||||
|
||||
//
|
||||
// Get the PDE For hyperspace
|
||||
//
|
||||
/* Get the PDE For hyperspace */
|
||||
StartPde = MiAddressToPde(HYPER_SPACE);
|
||||
|
||||
//
|
||||
// Allocate a page for it and create it
|
||||
//
|
||||
PageFrameIndex = MmAllocPage(MC_SYSTEM);
|
||||
/* Lock PFN database */
|
||||
OldIrql = KeAcquireQueuedSpinLock(LockQueuePfnLock);
|
||||
|
||||
/* Allocate a page for hyperspace and create it */
|
||||
PageFrameIndex = MiRemoveAnyPage(0);
|
||||
TempPde.u.Hard.PageFrameNumber = PageFrameIndex;
|
||||
TempPde.u.Hard.Global = FALSE; // Hyperspace is local!
|
||||
ASSERT(StartPde->u.Hard.Valid == 0);
|
||||
ASSERT(TempPde.u.Hard.Valid == 1);
|
||||
*StartPde = TempPde;
|
||||
|
||||
/* Flush the TLB */
|
||||
KeFlushCurrentTb();
|
||||
|
||||
/* Release the lock */
|
||||
KeReleaseQueuedSpinLock(LockQueuePfnLock, OldIrql);
|
||||
|
||||
//
|
||||
// Zero out the page table now
|
||||
//
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
#define _1KB (1024)
|
||||
#define _1MB (1024 * _1KB)
|
||||
|
||||
/* Are mapped by a PDE */
|
||||
/* Area mapped by a PDE */
|
||||
#define PDE_MAPPED_VA (PTE_COUNT * PAGE_SIZE)
|
||||
|
||||
/* Size of a PDE directory, and size of a page table */
|
||||
|
@ -89,6 +89,36 @@
|
|||
#define MM_DECOMMIT 0x10
|
||||
#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
|
||||
//
|
||||
|
@ -101,6 +131,11 @@
|
|||
//
|
||||
#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
|
||||
//
|
||||
|
@ -266,6 +301,10 @@ extern PVOID MiSystemViewStart;
|
|||
extern ULONG MmSystemViewSize;
|
||||
extern PVOID MmSessionBase;
|
||||
extern PVOID MiSessionSpaceEnd;
|
||||
extern PMMPTE MiSessionImagePteStart;
|
||||
extern PMMPTE MiSessionImagePteEnd;
|
||||
extern PMMPTE MiSessionBasePte;
|
||||
extern PMMPTE MiSessionLastPte;
|
||||
extern ULONG MmSizeOfPagedPoolInBytes;
|
||||
extern PMMPTE MmSystemPagePtes;
|
||||
extern PVOID MmSystemCacheStart;
|
||||
|
@ -309,16 +348,17 @@ extern ULONG MmTotalFreeSystemPtes[MaximumPtePoolTypes];
|
|||
extern PFN_NUMBER MmTotalSystemDriverPages;
|
||||
extern PVOID MiSessionImageStart;
|
||||
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_PFNENTRY_TO_PFN(x) (x - MmPfnDatabase[1])
|
||||
|
||||
#define MI_IS_SESSION_IMAGE_ADDRESS(Address) \
|
||||
(((Address) >= MiSessionImageStart) && ((Address) < MiSessionImageEnd))
|
||||
|
||||
#define MI_IS_SESSION_ADDRESS(Address) \
|
||||
(((Address) >= MmSessionBase) && ((Address) < MiSessionSpaceEnd))
|
||||
|
||||
//
|
||||
// Returns if the page is physically resident (ie: a large page)
|
||||
// FIXFIX: CISC/x86 only?
|
||||
//
|
||||
FORCEINLINE
|
||||
BOOLEAN
|
||||
MI_IS_PHYSICAL_ADDRESS(IN PVOID Address)
|
||||
|
@ -409,6 +449,12 @@ MmArmAccessFault(
|
|||
IN PVOID TrapInformation
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
FASTCALL
|
||||
MiCheckPdeForPagedPool(
|
||||
IN PVOID Address
|
||||
);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
MiInitializeNonPagedPool(
|
||||
|
@ -532,6 +578,18 @@ MiRemoveHeadList(
|
|||
IN PMMPFNLIST ListHead
|
||||
);
|
||||
|
||||
PFN_NUMBER
|
||||
NTAPI
|
||||
MiAllocatePfn(
|
||||
IN PMMPTE PointerPte,
|
||||
IN ULONG Protection
|
||||
);
|
||||
|
||||
PFN_NUMBER
|
||||
NTAPI
|
||||
MiRemoveAnyPage(
|
||||
IN ULONG Color
|
||||
);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
|
@ -563,4 +621,10 @@ MiSyncCachedRanges(
|
|||
VOID
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
MiIsPfnInUse(
|
||||
IN PMMPFN Pfn1
|
||||
);
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -136,6 +136,14 @@ ULONG MmSessionViewSize;
|
|||
ULONG MmSessionPoolSize;
|
||||
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
|
||||
// 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
|
||||
// address.
|
||||
//
|
||||
PFN_NUMBER MmSystemPageDirectory;
|
||||
PFN_NUMBER MmSystemPageDirectory[PD_COUNT];
|
||||
PMMPTE MmSystemPagePtes;
|
||||
|
||||
//
|
||||
|
@ -217,6 +225,11 @@ ULONG MmUserProbeAddress;
|
|||
PVOID MmHighestUserAddress;
|
||||
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 MmSystemCacheEnd;
|
||||
MMSUPPORT MmSystemCacheWs;
|
||||
|
@ -1483,7 +1496,8 @@ MiBuildPagedPool(VOID)
|
|||
// Get the page frame number for the system page directory
|
||||
//
|
||||
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
|
||||
|
@ -1500,7 +1514,8 @@ MiBuildPagedPool(VOID)
|
|||
// way).
|
||||
//
|
||||
TempPte = ValidKernelPte;
|
||||
TempPte.u.Hard.PageFrameNumber = MmSystemPageDirectory;
|
||||
ASSERT(PD_COUNT == 1);
|
||||
TempPte.u.Hard.PageFrameNumber = MmSystemPageDirectory[0];
|
||||
ASSERT(PointerPte->u.Hard.Valid == 0);
|
||||
ASSERT(TempPte.u.Hard.Valid == 1);
|
||||
*PointerPte = TempPte;
|
||||
|
@ -1698,6 +1713,10 @@ MmArmInitSystem(IN ULONG Phase,
|
|||
MmUserProbeAddress = (ULONG_PTR)MmSystemRangeStart - 0x10000;
|
||||
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
|
||||
// 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 *= PAGE_SIZE;
|
||||
MmBootImageSize = (MmBootImageSize + (4 * 1024 * 1024) - 1) & ~((4 * 1024 * 1024) - 1);
|
||||
ASSERT((MmBootImageSize % (4 * 1024 * 1024)) == 0);
|
||||
MmBootImageSize = (MmBootImageSize + PDE_MAPPED_VA - 1) & ~(PDE_MAPPED_VA - 1);
|
||||
ASSERT((MmBootImageSize % PDE_MAPPED_VA) == 0);
|
||||
|
||||
//
|
||||
// Set the size of session view, pool, and image
|
||||
|
@ -1770,7 +1789,12 @@ MmArmInitSystem(IN ULONG Phase,
|
|||
//
|
||||
MiSystemViewStart = (PVOID)((ULONG_PTR)MmSessionBase -
|
||||
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 */
|
||||
InitializeListHead(&MmLoadedUserImageList);
|
||||
|
|
|
@ -27,6 +27,10 @@ MiCheckPdeForPagedPool(IN PVOID Address)
|
|||
PMMPDE PointerPde;
|
||||
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
|
||||
//
|
||||
|
@ -60,6 +64,9 @@ MiCheckPdeForPagedPool(IN PVOID Address)
|
|||
//
|
||||
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
|
||||
//
|
||||
|
@ -88,6 +95,10 @@ MiResolveDemandZeroFault(IN PVOID Address,
|
|||
Address,
|
||||
Process);
|
||||
|
||||
/* Must currently only be called by paging path, for system addresses only */
|
||||
ASSERT(OldIrql == MM_NOIRQL);
|
||||
ASSERT(Process == NULL);
|
||||
|
||||
//
|
||||
// Lock the PFN database
|
||||
//
|
||||
|
@ -110,11 +121,16 @@ MiResolveDemandZeroFault(IN PVOID Address,
|
|||
//
|
||||
InterlockedIncrement(&KeGetCurrentPrcb()->MmDemandZeroCount);
|
||||
|
||||
/* Shouldn't see faults for user PTEs yet */
|
||||
ASSERT(PointerPte > MiHighestUserPte);
|
||||
|
||||
//
|
||||
// Build the PTE
|
||||
//
|
||||
TempPte = ValidKernelPte;
|
||||
TempPte.u.Hard.PageFrameNumber = PageFrameNumber;
|
||||
ASSERT(TempPte.u.Hard.Valid == 1);
|
||||
ASSERT(PointerPte->u.Hard.Valid == 0);
|
||||
*PointerPte = TempPte;
|
||||
ASSERT(PointerPte->u.Hard.Valid == 1);
|
||||
|
||||
|
@ -155,6 +171,9 @@ MiDispatchFault(IN BOOLEAN StoreInstruction,
|
|||
//
|
||||
TempPte = *PointerPte;
|
||||
|
||||
/* No prototype */
|
||||
ASSERT(PrototypePte == NULL);
|
||||
|
||||
//
|
||||
// The PTE must be invalid, but not totally blank
|
||||
//
|
||||
|
@ -175,7 +194,8 @@ MiDispatchFault(IN BOOLEAN StoreInstruction,
|
|||
Status = MiResolveDemandZeroFault(Address,
|
||||
PointerPte,
|
||||
Process,
|
||||
-1);
|
||||
MM_NOIRQL);
|
||||
ASSERT(KeAreAllApcsDisabled () == TRUE);
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
//
|
||||
|
@ -304,7 +324,7 @@ MmArmAccessFault(IN BOOLEAN StoreInstruction,
|
|||
//
|
||||
// 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
|
||||
|
|
|
@ -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
|
||||
NTAPI
|
||||
MiRemoveHeadList(IN PMMPFNLIST ListHead)
|
||||
|
@ -285,17 +454,19 @@ MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
|
|||
{
|
||||
PMMPFNLIST ListHead;
|
||||
PFN_NUMBER LastPage;
|
||||
PMMPFN Pfn1, Blink;
|
||||
PMMPFN Pfn1;
|
||||
#if 0
|
||||
ULONG Color;
|
||||
PMMCOLOR_TABLES ColorHead;
|
||||
|
||||
PMMPFN Blink;
|
||||
PMMCOLOR_TABLES ColorTable;
|
||||
#endif
|
||||
/* Make sure the page index is valid */
|
||||
ASSERT((PageFrameIndex != 0) &&
|
||||
(PageFrameIndex <= MmHighestPhysicalPage) &&
|
||||
(PageFrameIndex >= MmLowestPhysicalPage));
|
||||
|
||||
/* 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 */
|
||||
ASSERT(Pfn1->u4.MustBeCached == 0);
|
||||
|
@ -313,7 +484,7 @@ MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
|
|||
if (LastPage != LIST_HEAD)
|
||||
{
|
||||
/* 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
|
||||
{
|
||||
|
@ -336,8 +507,8 @@ MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
|
|||
Pfn1->u4.InPageError = 0;
|
||||
Pfn1->u4.AweAllocation = 0;
|
||||
|
||||
/* Not yet until we switch to this */
|
||||
//MmAvailablePages++;
|
||||
/* Increase available pages */
|
||||
MmAvailablePages++;
|
||||
|
||||
/* Check if we've reached the configured low memory threshold */
|
||||
if (MmAvailablePages == MmLowMemoryThreshold)
|
||||
|
@ -351,21 +522,22 @@ MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
|
|||
KeSetEvent(MiHighMemoryEvent, 0, FALSE);
|
||||
}
|
||||
|
||||
#if 0 // When using ARM3 PFN
|
||||
/* Get the page color */
|
||||
Color = PageFrameIndex & MmSecondaryColorMask;
|
||||
|
||||
/* Get the first page on the color list */
|
||||
ColorHead = &MmFreePagesByColor[FreePageList][Color];
|
||||
if (ColorHead->Flink == LIST_HEAD)
|
||||
ColorTable = &MmFreePagesByColor[FreePageList][Color];
|
||||
if (ColorTable->Flink == LIST_HEAD)
|
||||
{
|
||||
/* The list is empty, so we are the first page */
|
||||
Pfn1->u4.PteFrame = -1;
|
||||
ColorHead->Flink = PageFrameIndex;
|
||||
ColorTable->Flink = PageFrameIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Get the previous page */
|
||||
Blink = (PMMPFN)ColorHead->Blink;
|
||||
Blink = (PMMPFN)ColorTable->Blink;
|
||||
|
||||
/* Make it link to us */
|
||||
Pfn1->u4.PteFrame = MI_PFNENTRY_TO_PFN(Blink);
|
||||
|
@ -373,13 +545,20 @@ MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
|
|||
}
|
||||
|
||||
/* Now initialize our own list pointers */
|
||||
ColorHead->Blink = Pfn1;
|
||||
ColorTable->Blink = Pfn1;
|
||||
Pfn1->OriginalPte.u.Long = LIST_HEAD;
|
||||
|
||||
/* 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 */
|
||||
|
|
|
@ -334,12 +334,13 @@ MiAllocatePoolPages(IN POOL_TYPE PoolType,
|
|||
//
|
||||
// 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) /
|
||||
sizeof(MMPTE)] = TempPte;
|
||||
|
||||
//
|
||||
// Write the actual PTE now
|
||||
//
|
||||
/* Write the actual PTE now */
|
||||
ASSERT(TempPte.u.Hard.Valid == 1);
|
||||
*PointerPte++ = TempPte;
|
||||
|
||||
//
|
||||
|
@ -432,6 +433,7 @@ MiAllocatePoolPages(IN POOL_TYPE PoolType,
|
|||
//
|
||||
// Write the demand zero PTE and keep going
|
||||
//
|
||||
ASSERT(PointerPte->u.Hard.Valid == 0);
|
||||
*PointerPte++ = TempPte;
|
||||
} while (PointerPte < StartPte);
|
||||
|
||||
|
@ -593,14 +595,15 @@ MiAllocatePoolPages(IN POOL_TYPE PoolType,
|
|||
//
|
||||
PageFrameNumber = MmAllocPage(MC_NPPOOL);
|
||||
|
||||
//
|
||||
// Get the PFN entry for it
|
||||
//
|
||||
/* Get the PFN entry for it and fill it out */
|
||||
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;
|
||||
ASSERT(PointerPte->u.Hard.Valid == 0);
|
||||
ASSERT(TempPte.u.Hard.Valid == 1);
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue