Sync with trunk head (part 1 of x)
authorAmine Khaldi <amine.khaldi@reactos.org>
Fri, 26 Mar 2010 09:25:42 +0000 (09:25 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Fri, 26 Mar 2010 09:25:42 +0000 (09:25 +0000)
svn path=/branches/header-work/; revision=46461

36 files changed:
ReactOS-amd64.rbuild
base/services/tcpsvcs/tcpsvcs.rbuild
base/shell/explorer/explorer.rbuild
boot/bootdata/hiveinst_amd64.inf [new file with mode: 0644]
boot/bootdata/packages/reactos.dff [deleted file]
config-amd64.template.rbuild
dll/win32/browseui/internettoolbar.cpp
drivers/bus/acpi/busmgr/bus.c
drivers/bus/acpi/main.c
hal/hal.rbuild
hal/halx86/generic/amd64/systimer.S [new file with mode: 0644]
hal/halx86/generic/amd64/x86bios.c [new file with mode: 0644]
hal/halx86/generic/cmos.c
hal/halx86/generic/i386/portio.c [moved from hal/halx86/generic/portio.c with 100% similarity]
hal/halx86/generic/i386/systimer.S [moved from hal/halx86/generic/systimer.S with 100% similarity]
hal/halx86/generic/i386/trap.S [moved from hal/halx86/generic/trap.S with 100% similarity]
hal/halx86/generic/misc.c
hal/halx86/generic/spinlock.c
hal/halx86/hal_generic.rbuild
hal/halx86/hal_generic_mp.rbuild
hal/halx86/hal_generic_up.rbuild
hal/halx86/halamd64.rbuild
hal/halx86/halmps.rbuild
hal/halx86/include/halp.h
hal/halx86/mp/amd64/mps.S [new file with mode: 0644]
hal/halx86/mp/i386/mps.S [moved from hal/halx86/mp/mps.S with 100% similarity]
hal/halx86/mp/i386/mpsboot.asm [moved from hal/halx86/mp/mpsboot.asm with 100% similarity]
hal/halx86/mp/i386/mpsirql.c [moved from hal/halx86/mp/mpsirql.c with 89% similarity]
hal/halx86/mp/spinlock.c [deleted file]
hal/halx86/up/pic.c [moved from hal/halx86/generic/pic.c with 100% similarity]
hal/halx86/up/processor.c [moved from hal/halx86/generic/processor.c with 100% similarity]
include/dxsdk/bdatif.idl [new file with mode: 0644]
include/dxsdk/dxsdk.rbuild
ntoskrnl/config/cmalloc.c
ntoskrnl/include/internal/cm_x.h
ntoskrnl/po/events.c

index 9d299ca..8b74473 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
-<project name="ReactOS" makefile="makefile-amd64.auto" xmlns:xi="http://www.w3.org/2001/XInclude">
+<project name="ReactOS" makefile="makefile-amd64.auto" xmlns:xi="http://www.w3.org/2001/XInclude" allowwarnings="true">
        <xi:include href="config-amd64.rbuild">
                <xi:fallback>
                        <xi:include href="config-amd64.template.rbuild" />
                        <compilerflag>-ftracer</compilerflag>
                        <compilerflag>-momit-leaf-frame-pointer</compilerflag>
                </if>
+               <compilerflag>-fms-extensions</compilerflag>
                <compilerflag>-mpreferred-stack-boundary=4</compilerflag>
                <compilerflag compiler="midl">-m64 --win64</compilerflag>
                <!-- compilerflag compiler="cc,cxx">-gstabs+</compilerflag -->
                <!-- compilerflag compiler="as">-gstabs+</compilerflag -->
                <compilerflag>-U_X86_</compilerflag>
                <compilerflag>-Wno-format</compilerflag>
+               <compilerflag>-fno-leading-underscore</compilerflag>
        </group>
 
        <group linkerset="ld">
@@ -42,6 +44,8 @@
                <linkerflag>-section-alignment=0x1000</linkerflag>
                <linkerflag>--unique=.eh_frame</linkerflag>
                <linkerflag>-static</linkerflag>
+               <linkerflag>-fno-leading-underscore</linkerflag>
+               <linkerflag>--exclude-all-symbols</linkerflag>
        </group>
 
        <if property="USERMODE" value="1">
index f2b435f..5d1618f 100644 (file)
@@ -1,5 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
+<installfile installbase="system32/drivers/etc">quotes</installfile>
 <module name="tcpsvcs" type="win32cui" installbase="system32" installname="tcpsvcs.exe" unicode="yes">
        <include base="arp">.</include>
        <library>ws2_32</library>
index 7d64e7f..7ee5871 100644 (file)
@@ -64,7 +64,7 @@
        <file>explorer.rc</file>
        <linkerflag>--enable-stdcall-fixup</linkerflag>
 </module>
-<installfile installbase=".">explorer-cfg-template.xml</installfile>
+<installfile>explorer-cfg-template.xml</installfile>
 <directory name="notifyhook">
        <xi:include href="notifyhook/notifyhook.rbuild" />
 </directory>
diff --git a/boot/bootdata/hiveinst_amd64.inf b/boot/bootdata/hiveinst_amd64.inf
new file mode 100644 (file)
index 0000000..dd7fcdf
--- /dev/null
@@ -0,0 +1,19 @@
+[Version]
+Signature = "$ReactOS$"
+
+[AddReg]
+; Enable _one_ driver per section by removing the leading semicolon.
+
+;
+; Display driver section
+;
+
+; VBE SVGA driver
+HKLM,"SYSTEM\CurrentControlSet\Services\VBE","Start",0x00010001,0x00000001
+HKLM,"SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\VBE\Device0","DefaultSettings.VRefresh",0x00010001,1
+HKLM,"SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\VBE\Device0","DefaultSettings.BitsPerPel",0x00010001,16
+HKLM,"SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\VBE\Device0","DefaultSettings.XResolution",0x00010001,800
+HKLM,"SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\VBE\Device0","DefaultSettings.YResolution",0x00010001,600
+
+; VGA miniport driver
+HKLM,"SYSTEM\CurrentControlSet\Services\Vga","Start",0x00010001,0x00000001
diff --git a/boot/bootdata/packages/reactos.dff b/boot/bootdata/packages/reactos.dff
deleted file mode 100644 (file)
index a58e5c1..0000000
+++ /dev/null
@@ -1,812 +0,0 @@
-; Main ReactOS package
-
-.Set DiskLabelTemplate="ReactOS"                ; Label of disk
-.Set CabinetNameTemplate="reactos.cab"          ; reactos.cab
-.Set InfFileName="reactos.inf"                  ; reactos.inf
-
-
-;.Set Cabinet=on
-;.Set Compress=on
-
-.InfBegin
-[Version]
-Signature = "$ReactOS$"
-
-[Directories]
-1 = system32
-2 = system32\drivers
-3 = Fonts
-4 =
-5 = system32\drivers\etc
-6 = inf
-7 = bin
-8 = media
-
-.InfEnd
-
-; Contents of disk
-.InfBegin
-[SourceFiles]
-.InfEnd
-
-
-; Base files
-base\applications\cacls\cacls.exe                       1
-base\applications\calc\calc.exe                         1
-base\applications\charmap\charmap.exe                   1
-base\applications\cmdutils\dbgprint\dbgprint.exe        1
-base\applications\cmdutils\doskey\doskey.exe            1
-base\applications\cmdutils\find\find.exe                1
-base\applications\cmdutils\hostname\hostname.exe        1
-base\applications\cmdutils\lodctr\lodctr.exe            1
-base\applications\cmdutils\more\more.exe                1
-base\applications\cmdutils\reg\reg.exe                  1
-base\applications\cmdutils\xcopy\xcopy.exe              1
-base\applications\control\control.exe                   1
-base\applications\dxdiag\dxdiag.exe                     1
-base\applications\fontview\fontview.exe                 1
-base\applications\mscutils\devmgmt\devmgmt.exe          1
-base\applications\mscutils\eventvwr\eventvwr.exe        1
-base\applications\games\solitaire\sol.exe               1
-base\applications\games\spider\spider.exe               1
-base\applications\games\winemine\winemine.exe           1
-base\applications\hh\hh.exe                             4
-base\applications\kbswitch\kbswitch.exe                 1
-base\applications\kbswitch\kbsdll\kbsdll.dll            1
-base\applications\logoff\logoff.exe                     1
-base\applications\magnify\magnify.exe                   1
-base\applications\mplay32\mplay32.exe                   1
-base\applications\msconfig\msconfig.exe                 1
-base\applications\mstsc\mstsc.exe                       1
-base\applications\network\arp\arp.exe                   1
-base\applications\network\dwnl\dwnl.exe                 1
-base\applications\network\route\route.exe               1
-base\applications\network\finger\finger.exe             1
-base\applications\network\ftp\ftp.exe                   1
-base\applications\network\ipconfig\ipconfig.exe         1
-base\applications\network\netstat\netstat.exe           1
-base\applications\network\nslookup\nslookup.exe         1
-base\applications\network\ping\ping.exe                 1
-base\applications\network\telnet\telnet.exe             1
-base\applications\network\tracert\tracert.exe           1
-base\applications\network\whois\whois.exe               1
-base\applications\notepad\notepad.exe                   1
-base\applications\paint\paint.exe                       1
-base\applications\rapps\rapps.exe                       1
-base\applications\regedit\regedit.exe                   4
-base\applications\regedit\clb\clb.dll                   1
-base\applications\regedt32\regedt32.exe                 1
-base\applications\sc\sc.exe                             1
-base\applications\screensavers\3dtext\3dtext.scr        1
-base\applications\screensavers\logon\logon.scr          1
-base\applications\mscutils\servman\servman.exe          1
-base\applications\shutdown\shutdown.exe                 1
-base\applications\sndrec32\sndrec32.exe                 1
-base\applications\sndvol32\sndvol32.exe                 1
-base\applications\taskmgr\taskmgr.exe                   1
-base\applications\winhlp32\winhlp32.exe                 4
-base\applications\winver\winver.exe                     1
-base\applications\wordpad\wordpad.exe                   1
-base\applications\write\write.exe                       1
-
-base\services\audiosrv\audiosrv.exe                 1
-base\services\dhcp\dhcp.exe                         1
-base\services\eventlog\eventlog.exe                 1
-base\services\rpcss\rpcss.exe                       1
-base\services\spoolsv\spoolsv.exe                   1
-base\services\tcpsvcs\tcpsvcs.exe                   1
-base\services\telnetd\telnetd.exe                   1
-base\services\tcpsvcs\quotes                        5
-base\services\umpnpmgr\umpnpmgr.exe                 1
-base\services\wlansvc\wlansvc.exe                   1
-base\services\svchost\svchost.exe                   1
-
-base\setup\setup\setup.exe                          1
-base\setup\vmwinst\vmwinst.exe                      1
-
-base\shell\cmd\cmd.exe                              1
-base\shell\explorer\explorer.exe                    4
-base\shell\explorer\explorer-cfg-template.xml       4
-base\shell\explorer\notifyhook\notifyhook.dll       1
-base\shell\explorer-new\explorer_new.exe            4   optional
-
-base\system\autochk\autochk.exe                     1
-base\system\bootok\bootok.exe                       1
-base\system\format\format.exe                       1
-base\system\lsass\lsass.exe                         1
-base\system\msiexec\msiexec.exe                     1
-base\system\regsvr32\regsvr32.exe                   1
-base\system\rundll32\rundll32.exe                   1
-base\system\runonce\runonce.exe                     1
-base\system\services\services.exe                   1
-base\system\userinit\userinit.exe                   1
-base\system\winlogon\winlogon.exe                   1
-base\system\expand\expand.exe                       1
-base\system\smss\smss.exe                           1
-
-
-; Dynamic Link Libraries
-dll\3rdparty\mesa32\mesa32.dll                      1
-dll\3rdparty\libjpeg\libjpeg.dll                    1
-dll\3rdparty\libxslt\libxslt.dll                    1
-dll\3rdparty\dxtn\dxtn.dll                          1   optional
-
-dll\cpl\access\access.cpl                           1
-dll\cpl\appwiz\appwiz.cpl                           1
-dll\cpl\console\console.dll                         1
-dll\cpl\desk\desk.cpl                               1
-dll\cpl\hdwwiz\hdwwiz.cpl                           1
-dll\cpl\input\input.dll                             1
-dll\cpl\intl\intl.cpl                               1
-dll\cpl\joy\joy.cpl                                 1
-;dll\cpl\liccpa\liccpa.cpl                          1
-dll\cpl\main\main.cpl                               1
-dll\cpl\mmsys\mmsys.cpl                             1
-dll\cpl\ncpa\ncpa.cpl                               1
-;dll\cpl\odbccp32\odbccp32.cpl                      1
-dll\cpl\powercfg\powercfg.cpl                       1
-dll\cpl\sysdm\sysdm.cpl                             1
-;dll\cpl\telephon\telephon.cpl                      1
-dll\cpl\timedate\timedate.cpl                       1
-;dll\cpl\usrmgr\usrmgr.cpl                          1
-
-dll\directx\amstream\amstream.dll                   1
-dll\directx\dinput\dinput.dll                       1
-dll\directx\dinput8\dinput8.dll                     1
-dll\directx\dmusic\dmusic.dll                       1
-dll\directx\dplay\dplay.dll                         1
-dll\directx\dplayx\dplayx.dll                       1
-dll\directx\dsound\dsound.dll                       1
-dll\directx\dxdiagn\dxdiagn.dll                     1
-dll\directx\wine\ddraw\ddraw.dll                    1
-dll\directx\d3d8thk\d3d8thk.dll                     1
-dll\directx\devenum\devenum.dll                     1
-dll\directx\ksproxy\ksproxy.ax                      1
-dll\directx\ksuser\ksuser.dll                       1
-dll\directx\msdmo\msdmo.dll                         1
-dll\directx\quartz\quartz.dll                       1
-dll\directx\qedit\qedit.dll                         1
-dll\directx\wine\d3d8\d3d8.dll                      1
-dll\directx\wine\wined3d\wined3d.dll                1
-dll\directx\wine\d3d9\d3d9.dll                      1
-
-dll\keyboard\kbda1\kbda1.dll                        1
-dll\keyboard\kbda2\kbda2.dll                        1
-dll\keyboard\kbda3\kbda3.dll                        1
-dll\keyboard\kbdal\kbdal.dll                        1
-dll\keyboard\kbdarme\kbdarme.dll                    1
-dll\keyboard\kbdarmw\kbdarmw.dll                    1
-dll\keyboard\kbdaze\kbdaze.dll                      1
-dll\keyboard\kbdazel\kbdazel.dll                    1
-dll\keyboard\kbdbgm\kbdbgm.dll                      1
-dll\keyboard\kbdbgt\kbdbgt.dll                      1
-dll\keyboard\kbdblr\kbdblr.dll                      1
-dll\keyboard\kbdbr\kbdbr.dll                        1
-dll\keyboard\kbdbga\kbdbga.dll                      1
-dll\keyboard\kbdbe\kbdbe.dll                        1
-dll\keyboard\kbdbur\kbdbur.dll                      1
-dll\keyboard\kbdcan\kbdcan.dll                      1
-dll\keyboard\kbdcr\kbdcr.dll                        1
-dll\keyboard\kbdcz\kbdcz.dll                        1
-dll\keyboard\kbdcz1\kbdcz1.dll                      1
-dll\keyboard\kbdda\kbdda.dll                        1
-dll\keyboard\kbddv\kbddv.dll                        1
-dll\keyboard\kbdes\kbdes.dll                        1
-dll\keyboard\kbdest\kbdest.dll                      1
-dll\keyboard\kbdfc\kbdfc.dll                        1
-dll\keyboard\kbdfi\kbdfi.dll                        1
-dll\keyboard\kbdfr\kbdfr.dll                        1
-dll\keyboard\kbdgeo\kbdgeo.dll                      1
-dll\keyboard\kbdgerg\kbdgerg.dll                    1
-dll\keyboard\kbdgneo\kbdgneo.dll                    1
-dll\keyboard\kbdgrist\kbdgrist.dll                  1
-dll\keyboard\kbdgr\kbdgr.dll                        1
-dll\keyboard\kbdhe\kbdhe.dll                        1
-dll\keyboard\kbdheb\kbdheb.dll                      1
-dll\keyboard\kbdhu\kbdhu.dll                        1
-dll\keyboard\kbdic\kbdic.dll                        1
-dll\keyboard\kbdinasa\kbdinasa.dll                  1
-dll\keyboard\kbdinben\kbdinben.dll                  1
-dll\keyboard\kbdindev\kbdindev.dll                  1
-dll\keyboard\kbdinguj\kbdinguj.dll                  1
-dll\keyboard\kbdinmal\kbdinmal.dll                  1
-dll\keyboard\kbdir\kbdir.dll                        1
-dll\keyboard\kbdit\kbdit.dll                        1
-dll\keyboard\kbdja\kbdja.dll                        1
-dll\keyboard\kbdkaz\kbdkaz.dll                      1
-dll\keyboard\kbdla\kbdla.dll                        1
-dll\keyboard\kbdlt1\kbdlt1.dll                      1
-dll\keyboard\kbdlv\kbdlv.dll                        1
-dll\keyboard\kbdmac\kbdmac.dll                      1
-dll\keyboard\kbdne\kbdne.dll                        1
-dll\keyboard\kbdno\kbdno.dll                        1
-dll\keyboard\kbdpl1\kbdpl1.dll                      1
-dll\keyboard\kbdpo\kbdpo.dll                        1
-dll\keyboard\kbdro\kbdro.dll                        1
-dll\keyboard\kbdru\kbdru.dll                        1
-dll\keyboard\kbdru1\kbdru1.dll                      1
-dll\keyboard\kbdsg\kbdsg.dll                        1
-dll\keyboard\kbdsk\kbdsk.dll                        1
-dll\keyboard\kbdsk1\kbdsk1.dll                      1
-dll\keyboard\kbdsw\kbdsw.dll                        1
-dll\keyboard\kbdtat\kbdtat.dll                      1
-dll\keyboard\kbdth0\kbdth0.dll                      1
-dll\keyboard\kbdth1\kbdth1.dll                      1
-dll\keyboard\kbdth2\kbdth2.dll                      1
-dll\keyboard\kbdth3\kbdth3.dll                      1
-dll\keyboard\kbdtuf\kbdtuf.dll                      1
-dll\keyboard\kbdtuq\kbdtuq.dll                      1
-dll\keyboard\kbduk\kbduk.dll                        1
-dll\keyboard\kbdur\kbdur.dll                        1
-dll\keyboard\kbdurs\kbdurs.dll                      1
-dll\keyboard\kbdus\kbdus.dll                        1
-dll\keyboard\kbdusa\kbdusa.dll                      1
-dll\keyboard\kbdusl\kbdusl.dll                      1
-dll\keyboard\kbdusr\kbdusr.dll                      1
-dll\keyboard\kbdusx\kbdusx.dll                      1
-dll\keyboard\kbduzb\kbduzb.dll                      1
-dll\keyboard\kbdvntc\kbdvntc.dll                    1
-dll\keyboard\kbdycc\kbdycc.dll                      1
-dll\keyboard\kbdycl\kbdycl.dll                      1
-dll\keyboard\kbdko\kbdko.dll                        1
-
-dll\ntdll\ntdll.dll                                 1
-
-dll\win32\acledit\acledit.dll                       1
-dll\win32\aclui\aclui.dll                           1
-dll\win32\activeds\activeds.dll                     1
-dll\win32\advapi32\advapi32.dll                     1
-dll\win32\advpack\advpack.dll                       1
-dll\win32\actxprxy\actxprxy.dll                     1
-dll\win32\atl\atl.dll                               1
-dll\win32\authz\authz.dll                           1
-dll\win32\avicap32\avicap32.dll                     1
-dll\win32\avifil32\avifil32.dll                     1
-dll\win32\batt\batt.dll                             1
-dll\win32\bcrypt\bcrypt.dll                         1
-dll\win32\beepmidi\beepmidi.dll                     1
-dll\win32\browseui\browseui.dll                     1
-dll\win32\cabinet\cabinet.dll                       1
-dll\win32\cards\cards.dll                           1
-dll\win32\cfgmgr32\cfgmgr32.dll                     1
-dll\win32\clusapi\clusapi.dll                       1
-dll\win32\comcat\comcat.dll                         1
-dll\win32\comctl32\comctl32.dll                     1
-dll\win32\comdlg32\comdlg32.dll                     1
-dll\win32\compstui\compstui.dll                     1
-dll\win32\credui\credui.dll                         1
-dll\win32\crtdll\crtdll.dll                         1
-dll\win32\crypt32\crypt32.dll                       1
-dll\win32\cryptdlg\cryptdlg.dll                     1
-dll\win32\cryptdll\cryptdll.dll                     1
-dll\win32\cryptnet\cryptnet.dll                     1
-dll\win32\cryptui\cryptui.dll                       1
-dll\win32\dbghelp\dbghelp.dll                       1
-dll\win32\dciman32\dciman32.dll                     1
-dll\win32\dwmapi\dwmapi.dll                         1
-dll\win32\devmgr\devmgr.dll                         1
-dll\win32\dhcpcsvc\dhcpcsvc.dll                     1
-dll\win32\dnsapi\dnsapi.dll                         1
-dll\win32\faultrep\faultrep.dll                     1
-dll\win32\fmifs\fmifs.dll                           1
-dll\win32\fusion\fusion.dll                         1
-dll\win32\gdi32\gdi32.dll                           1
-dll\win32\gdiplus\gdiplus.dll                       1
-dll\win32\getuname\getuname.dll                     1
-dll\win32\glu32\glu32.dll                           1
-dll\win32\hhctrl.ocx\hhctrl.ocx                     1
-dll\win32\hid\hid.dll                               1
-dll\win32\hlink\hlink.dll                           1
-dll\win32\hnetcfg\hnetcfg.dll                       1
-dll\win32\httpapi\httpapi.dll                       1
-dll\win32\iccvid\iccvid.dll                         1
-dll\win32\icmp\icmp.dll                             1
-dll\win32\imaadp32.acm\imaadp32.acm                 1
-dll\win32\imagehlp\imagehlp.dll                     1
-dll\win32\imm32\imm32.dll                           1
-dll\win32\inetcomm\inetcomm.dll                     1
-dll\win32\inetmib1\inetmib1.dll                     1
-dll\win32\initpki\initpki.dll                       1
-dll\win32\inseng\inseng.dll                         1
-dll\win32\iphlpapi\iphlpapi.dll                     1
-dll\win32\itircl\itircl.dll                         1
-dll\win32\itss\itss.dll                             1
-dll\win32\jscript\jscript.dll                       1
-dll\win32\kernel32\kernel32.dll                     1
-dll\win32\loadperf\loadperf.dll                     1
-dll\win32\localspl\localspl.dll                     1
-dll\win32\localui\localui.dll                       1
-dll\win32\lsasrv\lsasrv.dll                         1
-dll\win32\lz32\lz32.dll                             1
-dll\win32\mapi32\mapi32.dll                         1
-dll\win32\mciavi32\mciavi32.dll                     1
-dll\win32\mcicda\mcicda.dll                         1
-dll\win32\mciqtz32\mciqtz32.dll                     1
-dll\win32\mciseq\mciseq.dll                         1
-dll\win32\mciwave\mciwave.dll                       1
-dll\win32\mlang\mlang.dll                           1
-dll\win32\mmdrv\mmdrv.dll                           1
-dll\win32\modemui\modemui.dll                       1
-dll\win32\mpr\mpr.dll                               1
-dll\win32\mprapi\mprapi.dll                         1
-dll\win32\msacm32\msacm32.dll                       1
-dll\win32\msacm32\msacm32.drv\msacm32.drv           1
-dll\win32\msadp32.acm\msadp32.acm                   1
-dll\win32\msafd\msafd.dll                           1
-dll\win32\mscat32\mscat32.dll                       1
-dll\win32\mscms\mscms.dll                           1
-dll\win32\mscoree\mscoree.dll                       1
-dll\win32\msctf\msctf.dll                           1
-dll\win32\msftedit\msftedit.dll                     1
-dll\win32\msg711.acm\msg711.acm                     1
-dll\win32\msgina\msgina.dll                         1
-dll\win32\msgsm32.acm\msgsm32.acm                   1
-dll\win32\mshtml\mshtml.dll                         1
-dll\win32\mshtml.tlb\mshtml.tlb                     1
-dll\win32\msi\msi.dll                               1
-dll\win32\msimg32\msimg32.dll                       1
-dll\win32\msimtf\msimtf.dll                         1
-dll\win32\msisip\msisip.dll                         1
-dll\win32\msisys.ocx\msisys.ocx                     1
-dll\win32\msnet32\msnet32.dll                       1
-dll\win32\msrle32\msrle32.dll                       1
-dll\win32\mssign32\mssign32.dll                     1
-dll\win32\mssip32\mssip32.dll                       1
-dll\win32\mstask\mstask.dll                         1
-dll\win32\msvcrt\msvcrt.dll                         1
-dll\win32\msvcrt20\msvcrt20.dll                     1
-dll\win32\msvcrt40\msvcrt40.dll                     1
-dll\win32\msvfw32\msvfw32.dll                       1
-dll\win32\msvidc32\msvidc32.dll                     1
-dll\win32\mswsock\mswsock.dll                       1
-dll\win32\msxml3\msxml3.dll                         1
-dll\win32\nddeapi\nddeapi.dll                       1
-dll\win32\netapi32\netapi32.dll                     1
-dll\win32\netcfgx\netcfgx.dll                       1
-dll\win32\netid\netid.dll                           1
-dll\win32\netshell\netshell.dll                     1
-dll\win32\newdev\newdev.dll                         1
-dll\win32\ntdsapi\ntdsapi.dll                       1
-dll\win32\ntlanman\ntlanman.dll                     1
-dll\win32\ntmarta\ntmarta.dll                       1
-dll\win32\ntprint\ntprint.dll                       1
-dll\win32\objsel\objsel.dll                         1
-dll\win32\odbc32\odbc32.dll                         1
-dll\win32\odbccp32\odbccp32.dll                     1
-dll\win32\ole32\ole32.dll                           1
-dll\win32\oleacc\oleacc.dll                         1
-dll\win32\oleaut32\oleaut32.dll                     1
-dll\win32\olecli32\olecli32.dll                     1
-dll\win32\oledlg\oledlg.dll                         1
-dll\win32\olepro32\olepro32.dll                     1
-dll\win32\olesvr32\olesvr32.dll                     1
-dll\win32\olethk32\olethk32.dll                     1
-dll\win32\opengl32\opengl32.dll                     1
-dll\win32\pdh\pdh.dll                               1
-dll\win32\pidgen\pidgen.dll                         1
-dll\win32\powrprof\powrprof.dll                     1
-dll\win32\printui\printui.dll                       1
-dll\win32\psapi\psapi.dll                           1
-dll\win32\pstorec\pstorec.dll                       1
-dll\win32\qmgr\qmgr.dll                             1
-dll\win32\qmgrprxy\qmgrprxy.dll                     1
-dll\win32\query\query.dll                           1
-dll\win32\rasadhlp\rasadhlp.dll                     1
-dll\win32\rasapi32\rasapi32.dll                     1
-dll\win32\rasdlg\rasdlg.dll                         1
-dll\win32\resutils\resutils.dll                     1
-dll\win32\rasman\rasman.dll                         1
-dll\win32\riched20\riched20.dll                     1
-dll\win32\riched32\riched32.dll                     1
-dll\win32\rpcrt4\rpcrt4.dll                         1
-dll\win32\rsabase\rsabase.dll                       1
-dll\win32\rsaenh\rsaenh.dll                         1
-dll\win32\samlib\samlib.dll                         1
-dll\win32\samsrv\samsrv.dll                         1
-dll\win32\sccbase\sccbase.dll                       1
-dll\win32\schannel\schannel.dll                     1
-dll\win32\secur32\secur32.dll                       1
-dll\win32\security\security.dll                     1
-dll\win32\sensapi\sensapi.dll                       1
-dll\win32\serialui\serialui.dll                     1
-dll\win32\setupapi\setupapi.dll                     1
-dll\win32\sfc\sfc.dll                               1
-dll\win32\sfc_os\sfc_os.dll                         1
-dll\win32\shdoclc\shdoclc.dll                       1
-dll\win32\shdocvw\shdocvw.dll                       1
-dll\win32\shell32\shell32.dll                       1
-dll\win32\shfolder\shfolder.dll                     1
-dll\win32\shimgvw\shimgvw.dll                       1
-dll\win32\shlwapi\shlwapi.dll                       1
-dll\win32\slbcsp\slbcsp.dll                         1
-dll\win32\smdll\smdll.dll                           1
-dll\win32\snmpapi\snmpapi.dll                       1
-dll\win32\softpub\softpub.dll                       1
-dll\win32\spoolss\spoolss.dll                       1
-dll\win32\srclient\srclient.dll                     1
-dll\win32\stdole2.tlb\stdole2.tlb                   1
-dll\win32\stdole32.tlb\stdole32.tlb                 1
-dll\win32\sti\sti.dll                               1
-dll\win32\sxs\sxs.dll                               1
-dll\win32\syssetup\syssetup.dll                     1
-dll\win32\t2embed\t2embed.dll                       1
-dll\win32\tapi32\tapi32.dll                         1
-dll\win32\tapiui\tapiui.dll                         1
-dll\win32\traffic\traffic.dll                       1
-dll\win32\twain_32\twain_32.dll                     1
-dll\win32\uext2\uext2.dll                           1
-dll\win32\ufat\ufat.dll                             1
-dll\win32\ufatx\ufatx.dll                           1   optional
-dll\win32\untfs\untfs.dll                           1
-dll\win32\updspapi\updspapi.dll                     1
-dll\win32\url\url.dll                               1
-dll\win32\urlmon\urlmon.dll                         1
-dll\win32\user32\user32.dll                         1
-dll\win32\userenv\userenv.dll                       1
-dll\win32\usp10\usp10.dll                           1
-dll\win32\uxtheme\uxtheme.dll                       1
-dll\win32\vdmdbg\vdmdbg.dll                         1
-dll\win32\version\version.dll                       1
-dll\win32\windowscodecs\windowscodecs.dll           1
-dll\win32\winemp3.acm\winemp3.acm                   1
-dll\win32\winfax\winfax.dll                         1
-dll\win32\winhttp\winhttp.dll                       1
-dll\win32\wininet\wininet.dll                       1
-dll\win32\winmm\winmm.dll                           1
-dll\win32\winspool\winspool.drv                     1
-dll\win32\winsta\winsta.dll                         1
-dll\win32\wlanapi\wlanapi.dll                       1
-dll\win32\wintrust\wintrust.dll                     1
-dll\win32\wldap32\wldap32.dll                       1
-dll\win32\wmi\wmi.dll                               1
-dll\win32\ws2_32\ws2_32.dll                         1
-dll\win32\ws2help\ws2help.dll                       1
-dll\win32\wshirda\wshirda.dll                       1
-dll\win32\wshtcpip\wshtcpip.dll                     1
-dll\win32\wsock32\wsock32.dll                       1
-dll\win32\wtsapi32\wtsapi32.dll                     1
-dll\win32\wuapi\wuapi.dll                           1
-dll\win32\xinput1_1\xinput1_1.dll                   1
-dll\win32\xinput1_2\xinput1_2.dll                   1
-dll\win32\xinput1_3\xinput1_3.dll                   1
-dll\win32\xinput9_1_0\xinput9_1_0.dll               1
-dll\win32\xmllite\xmllite.dll                       1
-dll\win32\winmm\midimap\midimap.dll                 1
-dll\win32\wdmaud.drv\wdmaud.drv                     1
-
-; Shell Extensions
-dll\shellext\deskadp\deskadp.dll                    1
-dll\shellext\deskmon\deskmon.dll                    1
-
-; Drivers
-drivers\base\bootvid\bootvid.dll                    1
-drivers\base\beep\beep.sys                          2
-drivers\base\null\null.sys                          2
-drivers\base\nmidebug\nmidebug.sys                  2
-
-drivers\battery\cmbatt\cmbatt.sys                   2
-drivers\battery\battc\battc.sys                     2
-
-drivers\bus\isapnp\isapnp.sys                       2
-
-drivers\directx\dxapi\dxapi.sys                     2
-drivers\directx\dxg\dxg.sys                         2
-drivers\directx\dxgthk\dxgthk.sys                   2
-
-drivers\filesystems\fs_rec\fs_rec.sys               2
-drivers\filesystems\msfs\msfs.sys                   2
-drivers\filesystems\mup\mup.sys                     2
-drivers\filesystems\npfs\npfs.sys                   2
-
-drivers\input\mouclass\mouclass.sys                 2
-drivers\input\sermouse\sermouse.sys                 2
-
-drivers\ksfilter\ks\ks.sys                          2
-
-drivers\network\afd\afd.sys                         2
-drivers\network\ndis\ndis.sys                       2
-drivers\network\tcpip\tcpip.sys                     2
-drivers\network\tdi\tdi.sys                         2
-drivers\network\dd\ne2000\ne2000.sys                2
-drivers\network\dd\pcnet\pcnet.sys                  2
-
-drivers\serial\serenum\serenum.sys                  2
-drivers\serial\serial\serial.sys                    2
-
-drivers\storage\ide\pciide\pciide.sys               2
-drivers\storage\ide\pciidex\pciidex.sys             2
-
-;drivers\usb\miniport\usbohci\usbohci.sys           2
-;drivers\usb\miniport\usbuhci\usbuhci.sys           2
-;drivers\usb\usbhub\usbhub.sys                      2
-;drivers\usb\usbport\usbport.sys                    2
-drivers\usb\nt4compat\usbdriver\usbdriver.sys       2
-
-drivers\video\displays\vga\vgaddi.dll               1
-drivers\video\displays\framebuf\framebuf.dll        1
-drivers\video\miniport\vga\vgamp.sys                2
-drivers\video\miniport\vbe\vbemp.sys                2
-drivers\video\videoprt\videoprt.sys                 2
-drivers\video\font\ftfd\ftfd.dll                   1
-
-drivers\wdm\audio\filters\kmixer\kmixer.sys         2
-drivers\wdm\audio\sysaudio\sysaudio.sys             2
-drivers\wdm\audio\legacy\wdmaud\wdmaud.sys          2
-drivers\wdm\audio\backpln\portcls\portcls.sys       2
-drivers\wdm\audio\drm\drmk\drmk.sys                 2
-drivers\wmi\wmilib.sys                              2
-
-; Media
-media\fonts\DejaVuSans.ttf                          3
-media\fonts\DejaVuSans-Bold.ttf                     3
-media\fonts\DejaVuSans-BoldOblique.ttf              3
-media\fonts\DejaVuSansMono.ttf                      3
-media\fonts\DejaVuSansMono-Bold.ttf                 3
-media\fonts\DejaVuSansMono-BoldOblique.ttf          3
-media\fonts\DejaVuSansMono-Oblique.ttf              3
-media\fonts\DejaVuSans-Oblique.ttf                  3
-media\fonts\DejaVuSerif.ttf                         3
-media\fonts\DejaVuSerif-Bold.ttf                    3
-media\fonts\DejaVuSerif-BoldItalic.ttf              3
-media\fonts\DejaVuSerif-Italic.ttf                  3
-
-media\fonts\FreeMono.ttf                            3
-media\fonts\FreeMonoBold.ttf                        3
-media\fonts\FreeMonoBoldOblique.ttf                 3
-media\fonts\FreeMonoOblique.ttf                     3
-
-media\fonts\LiberationMono-Bold.ttf                 3
-media\fonts\LiberationMono-BoldItalic.ttf           3
-media\fonts\LiberationMono-Italic.ttf               3
-media\fonts\LiberationMono-Regular.ttf              3
-media\fonts\LiberationSans-Bold.ttf                 3
-media\fonts\LiberationSans-BoldItalic.ttf           3
-media\fonts\LiberationSans-Italic.ttf               3
-media\fonts\LiberationSans-Regular.ttf              3
-media\fonts\LiberationSerif-Bold.ttf                3
-media\fonts\LiberationSerif-BoldItalic.ttf          3
-media\fonts\LiberationSerif-Italic.ttf              3
-media\fonts\LiberationSerif-Regular.ttf             3
-
-media\fonts\Marlett.ttf                             3
-media\fonts\symbol.ttf                              3
-media\fonts\tahoma.ttf                              3
-media\fonts\tahomabd.ttf                            3
-
-media\nls\c_037.nls                                 1
-media\nls\c_424.nls                                 1
-media\nls\c_500.nls                                 1
-media\nls\c_737.nls                                 1
-media\nls\c_775.nls                                 1
-media\nls\c_850.nls                                 1
-media\nls\c_852.nls                                 1
-media\nls\c_855.nls                                 1
-media\nls\c_856.nls                                 1
-media\nls\c_857.nls                                 1
-media\nls\c_860.nls                                 1
-media\nls\c_861.nls                                 1
-media\nls\c_862.nls                                 1
-media\nls\c_863.nls                                 1
-media\nls\c_864.nls                                 1
-media\nls\c_865.nls                                 1
-media\nls\c_866.nls                                 1
-media\nls\c_869.nls                                 1
-media\nls\c_874.nls                                 1
-media\nls\c_875.nls                                 1
-media\nls\c_878.nls                                 1
-media\nls\c_932.nls                                 1
-media\nls\c_936.nls                                 1
-media\nls\c_949.nls                                 1
-media\nls\c_950.nls                                 1
-media\nls\c_1006.nls                                1
-media\nls\c_1026.nls                                1
-media\nls\c_1250.nls                                1
-media\nls\c_1251.nls                                1
-media\nls\c_1253.nls                                1
-media\nls\c_1254.nls                                1
-media\nls\c_1255.nls                                1
-media\nls\c_1256.nls                                1
-media\nls\c_1257.nls                                1
-media\nls\c_1258.nls                                1
-media\nls\c_10000.nls                               1
-media\nls\c_10006.nls                               1
-media\nls\c_10007.nls                               1
-media\nls\c_10029.nls                               1
-media\nls\c_10079.nls                               1
-media\nls\c_10081.nls                               1
-media\nls\c_20866.nls                               1
-media\nls\c_21866.nls                               1
-media\nls\c_28591.nls                               1
-media\nls\c_28592.nls                               1
-media\nls\c_28593.nls                               1
-media\nls\c_28594.nls                               1
-media\nls\c_28595.nls                               1
-media\nls\c_28596.nls                               1
-media\nls\c_28597.nls                               1
-media\nls\c_28598.nls                               1
-media\nls\c_28599.nls                               1
-media\nls\c_28600.nls                               1
-media\nls\c_28603.nls                               1
-media\nls\c_28604.nls                               1
-media\nls\c_28605.nls                               1
-media\nls\c_28606.nls                               1
-media\drivers\etc\services                          5
-media\inf\audio.inf                                 6
-media\inf\acpi.inf                                  6
-media\inf\battery.inf                               6
-media\inf\cdrom.inf                                 6
-media\inf\cpu.inf                                   6
-media\inf\display.inf                               6
-media\inf\font.inf                                  6
-media\inf\fdc.inf                                   6
-media\inf\hdc.inf                                   6
-media\inf\intl.inf                                  6
-media\inf\layout.inf                                6
-media\inf\machine.inf                               6
-media\inf\msmouse.inf                               6
-media\inf\keyboard.inf                              6
-media\inf\ks.inf                                    6
-media\inf\NET_NIC.inf                               6
-media\inf\netamd.inf                                6
-media\inf\netisa.inf                                6
-media\inf\netrtpnt.inf                              6
-media\inf\nettcpip.inf                              6
-media\inf\ports.inf                                 6
-media\inf\scsi.inf                                  6
-media\inf\syssetup.inf                              6
-media\inf\usbport.inf                               6
-media\inf\usb.inf                                   6
-media\inf\usbstor.inf                               6
-media\inf\xboxdisp.inf                              6
-
-
-; Media Files
-media\sounds\ReactOS_LogOn.wav                      8
-
-; Ini Files
-boot\bootdata\system.ini                            4
-
-; Regression Testing
-boot\bootdata\bootcdregtest\regtest.cmd             7   optional
-
-; Subsystems
-subsystems\win32\csrss\csrss.exe                    1
-subsystems\win32\csrss\win32csr\win32csr.dll        1
-subsystems\win32\csrss\csrsrv\csrsrv.dll            1
-subsystems\ntvdm\ntvdm.exe                          1
-subsystems\win32\win32k\win32k.sys                  1
-
-; Optional/proprietary files
-modules\optional\DroidSansFallback.ttf              3  optional
-modules\optional\NOTICE_for_Droid_Font.txt          4  optional
-modules\optional\netkvm2k.inf                       6  optional
-modules\optional\netkvm2k.cat                       6  optional
-modules\optional\netkvm.sys                         2  optional
-modules\optional\alcxwdm.inf                        6  optional
-modules\optional\alcxwdm.sys                        2  optional
-modules\optional\mfc42.dll                          1  optional
-modules\optional\mfc42u.dll                         1  optional
-modules\optional\mfc71.dll                          1  optional
-modules\optional\mfc71u.dll                         1  optional
-modules\optional\msvbvm50.dll                       1  optional
-modules\optional\msvbvm60.dll                       1  optional
-modules\optional\msvcirt.dll                        1  optional
-modules\optional\msvcp71.dll                        1  optional
-modules\optional\msvcr71.dll                        1  optional
-modules\optional\vmx_fb.dll                         1  optional
-modules\optional\vmx_mode.dll                       1  optional
-modules\optional\vmx_svga.inf                       6  optional
-modules\optional\vmx_svga.sys                       2  optional
-modules\optional\wine_gecko-1.0.0-x86.cab           4  optional
-
-; Rosapps
-modules\rosapps\applications\screensavers\cylfrac\cylfrac.scr              1   optional
-modules\rosapps\applications\screensavers\matrix\matrix.scr                1   optional
-modules\rosapps\applications\screensavers\blankscr\scrnsave.scr            1   optional
-modules\rosapps\applications\screensavers\starfield\starfield.scr          1   optional
-modules\rosapps\applications\screensavers\mazescr\mazescr.scr              1   optional
-modules\rosapps\applications\screensavers\butterflies\butterflies.scr      1   optional
-modules\rosapps\applications\cmdutils\comp\comp.exe                                     1   optional
-modules\rosapps\applications\cmdutils\mode\mode.exe                                     1   optional
-modules\rosapps\applications\cmdutils\sort\sort.exe                                     1   optional
-modules\rosapps\applications\cmdutils\tee\tee.exe                                       1   optional
-modules\rosapps\applications\cmdutils\touch\touch.exe                                   1   optional
-modules\rosapps\applications\cmdutils\uptime\uptime.exe                                 1   optional
-modules\rosapps\applications\cmdutils\y\y.exe                                           1   optional
-modules\rosapps\applications\devutils\gdb2\gdb2.exe                                     1   optional
-modules\rosapps\applications\devutils\gdihv\gdihv.exe                                   1   optional
-modules\rosapps\applications\devutils\genguid\genguid.exe                               1   optional
-modules\rosapps\applications\sysutils\gettype\gettype.exe                               1   optional
-modules\rosapps\applications\net\ncftp\ncftp.exe                                        1   optional
-modules\rosapps\applications\net\netreg\netreg.exe                                      1   optional
-modules\rosapps\applications\net\niclist\niclist.exe                                    1   optional
-modules\rosapps\applications\net\roshttpd\roshttpd.exe                                  1   optional
-modules\rosapps\applications\notevil\notevil.exe                                        1   optional
-modules\rosapps\applications\sysutils\chkdsk\chkdsk.exe                                 1   optional
-modules\rosapps\applications\sysutils\systeminfo\systeminfo.exe                         1   optional
-modules\rosapps\applications\sysutils\chklib\chklib.exe                                 1   optional
-modules\rosapps\applications\sysutils\ctm\ctm.exe                                       1   optional
-modules\rosapps\applications\sysutils\kill\kill.exe                                     1   optional
-modules\rosapps\applications\sysutils\lsdd\lsdd.exe                                     1   optional
-modules\rosapps\applications\sysutils\man\man.exe                                       1   optional
-modules\rosapps\applications\sysutils\pedump\pedump.exe                                 1   optional
-modules\rosapps\applications\sysutils\regexpl\regexpl.exe                               1   optional
-modules\rosapps\applications\sysutils\tcat\tcat.exe                                     1   optional
-modules\rosapps\applications\sysutils\tlist\tlist.exe                                   1   optional
-modules\rosapps\applications\sysutils\screenshot\screenshot.exe                         1   optional
-modules\rosapps\applications\sysutils\utils\binpatch\binpatch.exe                       1   optional
-modules\rosapps\applications\sysutils\utils\cat\cat.exe                                 1   optional
-modules\rosapps\applications\sysutils\utils\driver\load\load.exe                        1   optional
-modules\rosapps\applications\sysutils\utils\driver\unload\unload.exe                    1   optional
-modules\rosapps\applications\sysutils\utils\infinst\infinst.exe                         1   optional
-modules\rosapps\applications\sysutils\utils\nts2w32err\nts2w32err.exe                   1   optional
-modules\rosapps\applications\sysutils\utils\objdir\objdir.exe                           1   optional
-modules\rosapps\applications\sysutils\utils\partinfo\partinfo.exe                       1   optional
-modules\rosapps\applications\sysutils\utils\ps\ps.exe                                   1   optional
-modules\rosapps\applications\sysutils\utils\rosperf\rosperf.exe                         1   optional
-modules\rosapps\applications\sysutils\utils\stats\stats.exe                             1   optional
-modules\rosapps\applications\sysutils\utils\tickcount\tickcount.exe                     1   optional
-modules\rosapps\applications\winfile\winfile.exe                                        1   optional
-modules\rosapps\demos\maze\maze.exe                                        1   optional
-modules\rosapps\drivers\green\green.sys                                    2   optional
-
-; Rostests
-modules\rostests\rosautotest\rosautotest.exe                               1   optional
-modules\rostests\tests\pseh2\pseh2_test.exe                                7   optional
-modules\rostests\winetests\advapi32\advapi32_winetest.exe                  7   optional
-modules\rostests\winetests\advpack\advpack_winetest.exe                    7   optional
-modules\rostests\winetests\browseui\browseui_winetest.exe                  7   optional
-modules\rostests\winetests\cabinet\cabinet_winetest.exe                    7   optional
-modules\rostests\winetests\comcat\comcat_winetest.exe                      7   optional
-modules\rostests\winetests\comctl32\comctl32_winetest.exe                  7   optional
-modules\rostests\winetests\comdlg32\comdlg32_winetest.exe                  7   optional
-modules\rostests\winetests\crypt32\crypt32_winetest.exe                    7   optional
-modules\rostests\winetests\cryptnet\cryptnet_winetest.exe                  7   optional
-modules\rostests\winetests\dsound\dsound_winetest.exe                      7   optional
-modules\rostests\winetests\gdi32\gdi32_winetest.exe                        7   optional
-modules\rostests\winetests\gdiplus\gdiplus_winetest.exe                    7   optional
-modules\rostests\winetests\hlink\hlink_winetest.exe                        7   optional
-modules\rostests\winetests\icmp\icmp_winetest.exe                          7   optional
-modules\rostests\winetests\iphlpapi\iphlpapi_winetest.exe                  7   optional
-modules\rostests\winetests\jscript\jscript_winetest.exe                    7   optional
-modules\rostests\winetests\kernel32\kernel32_winetest.exe                  7   optional
-modules\rostests\winetests\lz32\lz32_winetest.exe                          7   optional
-modules\rostests\winetests\mapi32\mapi32_winetest.exe                      7   optional
-modules\rostests\winetests\mlang\mlang_winetest.exe                        7   optional
-modules\rostests\winetests\mshtml\mshtml_winetest.exe                      7   optional
-modules\rostests\winetests\msi\msi_winetest.exe                            7   optional
-modules\rostests\winetests\mstask\mstask_winetest.exe                      7   optional
-modules\rostests\winetests\msvcrt\msvcrt_winetest.exe                      7   optional
-modules\rostests\winetests\msxml3\msxml3_winetest.exe                      7   optional
-modules\rostests\winetests\netapi32\netapi32_winetest.exe                  7   optional
-modules\rostests\winetests\ntdll\ntdll_winetest.exe                        7   optional
-modules\rostests\winetests\odbccp32\odbccp32_winetest.exe                  7   optional
-modules\rostests\winetests\ole32\ole32_winetest.exe                        7   optional
-modules\rostests\winetests\oleaut32\oleaut32_winetest.exe                  7   optional
-modules\rostests\winetests\powrprof\powrprof_winetest.exe                  7   optional
-modules\rostests\winetests\psapi\psapi_winetest.exe                        7   optional
-modules\rostests\winetests\riched20\riched20_winetest.exe                  7   optional
-modules\rostests\winetests\rpcrt4\rpcrt4_winetest.exe                      7   optional
-modules\rostests\winetests\rsabase\rsabase_winetest.exe                    7   optional
-modules\rostests\winetests\rsaenh\rsaenh_winetest.exe                      7   optional
-modules\rostests\winetests\schannel\schannel_winetest.exe                  7   optional
-modules\rostests\winetests\secur32\secur32_winetest.exe                    7   optional
-modules\rostests\winetests\setupapi\setupapi_winetest.exe                  7   optional
-modules\rostests\winetests\shdocvw\shdocvw_winetest.exe                    7   optional
-modules\rostests\winetests\shell32\shell32_winetest.exe                    7   optional
-modules\rostests\winetests\shlwapi\shlwapi_winetest.exe                    7   optional
-modules\rostests\winetests\urlmon\urlmon_winetest.exe                      7   optional
-modules\rostests\winetests\user32\user32_winetest.exe                      7   optional
-modules\rostests\winetests\usp10\usp10_winetest.exe                        7   optional
-modules\rostests\winetests\uxtheme\uxtheme_winetest.exe                    7   optional
-modules\rostests\winetests\version\version_winetest.exe                    7   optional
-modules\rostests\winetests\winhttp\winhttp_winetest.exe                    7   optional
-modules\rostests\winetests\wininet\wininet_winetest.exe                    7   optional
-modules\rostests\winetests\winmm\winmm_winetest.exe                        7   optional
-modules\rostests\winetests\wintrust\wintrust_winetest.exe                  7   optional
-modules\rostests\winetests\wlanapi\wlanapi_winetest.exe                    7   optional
-modules\rostests\winetests\ws2_32\ws2_32_winetest.exe                      7   optional
-modules\rostests\winetests\xmllite\xmllite_winetest.exe                    7   optional
-
-
-modules\wallpaper\Angelus_02_ROSWP.bmp                                     4   optional
index 7ffc089..942da26 100644 (file)
@@ -65,7 +65,7 @@
        enable this (except they/you purchased a license from the patent owner).
        This settings is disabled (0) by default.
 -->
-<property name="NSWPAT" value="1" />
+<property name="NSWPAT" value="0" />
 
 <!--
        Whether to compile with the KD protocol. This will disable support for KDBG
index f64fcf3..c4f6bd0 100644 (file)
@@ -416,8 +416,8 @@ HRESULT STDMETHODCALLTYPE CMenuCallback::CallbackSM(LPSMDATA psmd, UINT uMsg, WP
                        if ((infoPtr->dwMask & SMIM_FLAGS) != 0)
                                if (psmd->uId == FCIDM_MENU_FAVORITES)
                                        infoPtr->dwFlags |= SMIF_DROPCASCADE;
-                               else
-                                       infoPtr->dwFlags |= SMIF_TRACKPOPUP;
+                               else{
+                                       infoPtr->dwFlags |= SMIF_TRACKPOPUP;}
                        if ((infoPtr->dwMask & SMIM_ICON) != 0)
                                infoPtr->iIcon = -1;
                        }
index 6309f20..ae04c2c 100644 (file)
@@ -58,6 +58,7 @@ KSPIN_LOCK    acpi_bus_event_lock;
 LIST_HEAD(acpi_bus_event_list);
 //DECLARE_WAIT_QUEUE_HEAD(acpi_bus_event_queue);
 KEVENT AcpiEventQueue;
+KDPC event_dpc;
 
 
 static int
@@ -455,6 +456,21 @@ acpi_bus_get_perf_flags (
                                 Event Management
    -------------------------------------------------------------------------- */
 
+void
+acpi_bus_generate_event_dpc(PKDPC Dpc,
+                            PVOID DeferredContext,
+                            PVOID SystemArgument1,
+                            PVOID SystemArgument2)
+{
+       struct acpi_bus_event *event = SystemArgument1;
+       KIRQL OldIrql;
+
+       KeAcquireSpinLock(&acpi_bus_event_lock, &OldIrql);
+       list_add_tail(&event->node, &acpi_bus_event_list);
+       KeReleaseSpinLock(&acpi_bus_event_lock, OldIrql);
+
+       KeSetEvent(&AcpiEventQueue, IO_NO_INCREMENT, FALSE);
+}
 
 int
 acpi_bus_generate_event (
@@ -463,10 +479,8 @@ acpi_bus_generate_event (
        int                     data)
 {
        struct acpi_bus_event   *event = NULL;
-       //unsigned long         flags = 0;
-       KIRQL OldIrql;
 
-       DPRINT1("acpi_bus_generate_event");
+       DPRINT("acpi_bus_generate_event");
 
        if (!device)
                return_VALUE(AE_BAD_PARAMETER);
@@ -484,14 +498,8 @@ acpi_bus_generate_event (
        event->type = type;
        event->data = data;
 
-       //spin_lock_irqsave(&acpi_bus_event_lock, flags);
-       KeAcquireSpinLock(&acpi_bus_event_lock, &OldIrql);
-       list_add_tail(&event->node, &acpi_bus_event_list);
-       KeReleaseSpinLock(&acpi_bus_event_lock, OldIrql);
-       //spin_unlock_irqrestore(&acpi_bus_event_lock, flags);
-
-       KeSetEvent(&AcpiEventQueue, IO_NO_INCREMENT, FALSE);
-       //wake_up_interruptible(&acpi_bus_event_queue);
+       if (!KeInsertQueueDpc(&event_dpc, event, NULL))
+           ExFreePool(event);
 
        return_VALUE(0);
 }
@@ -506,7 +514,7 @@ acpi_bus_receive_event (
 
        //DECLARE_WAITQUEUE(wait, current);
 
-       DPRINT1("acpi_bus_receive_event");
+       DPRINT("acpi_bus_receive_event");
 
        if (!event)
                return AE_BAD_PARAMETER;
@@ -1153,9 +1161,11 @@ acpi_bus_add (
        case ACPI_BUS_TYPE_SYSTEM:
                sprintf(device->pnp.bus_id, "%s", "ACPI");
                break;
+       case ACPI_BUS_TYPE_POWER_BUTTONF:
        case ACPI_BUS_TYPE_POWER_BUTTON:
                sprintf(device->pnp.bus_id, "%s", "PWRF");
                break;
+       case ACPI_BUS_TYPE_SLEEP_BUTTONF:
        case ACPI_BUS_TYPE_SLEEP_BUTTON:
                sprintf(device->pnp.bus_id, "%s", "SLPF");
                break;
@@ -1589,6 +1599,8 @@ acpi_bus_init (void)
 
        DPRINT("acpi_bus_init");
 
+        KeInitializeDpc(&event_dpc, acpi_bus_generate_event_dpc, NULL);
+
        status = AcpiEnableSubsystem(ACPI_FULL_INITIALIZATION);
        if (ACPI_FAILURE(status)) {
                DPRINT1("Unable to start the ACPI Interpreter\n");
index 4cbdfda..bc1d78d 100644 (file)
@@ -182,6 +182,40 @@ ACPIDispatchCreateClose(
    return STATUS_SUCCESS;
 }
 
+VOID
+NTAPI
+ButtonWaitThread(PVOID Context)
+{
+    PIRP Irp = Context;
+    int result;
+    struct acpi_bus_event event;
+    ULONG ButtonEvent;
+
+    while (ACPI_SUCCESS(result = acpi_bus_receive_event(&event)) &&
+           event.type != ACPI_BUTTON_NOTIFY_STATUS);
+
+    if (!ACPI_SUCCESS(result))
+    {
+       Irp->IoStatus.Status = STATUS_UNSUCCESSFUL;
+    }
+    else
+    {
+       if (strstr(event.bus_id, "PWRF"))
+           ButtonEvent = SYS_BUTTON_POWER;
+       else if (strstr(event.bus_id, "SLPF"))
+           ButtonEvent = SYS_BUTTON_SLEEP;
+       else
+           ButtonEvent = 0;
+
+       RtlCopyMemory(Irp->AssociatedIrp.SystemBuffer, &ButtonEvent, sizeof(ButtonEvent));
+       Irp->IoStatus.Status = STATUS_SUCCESS;
+       Irp->IoStatus.Information = sizeof(ULONG);
+    }
+
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+}
+    
+
 NTSTATUS
 NTAPI
 ACPIDispatchDeviceControl(
@@ -192,6 +226,7 @@ ACPIDispatchDeviceControl(
     NTSTATUS                status = STATUS_NOT_SUPPORTED;
     PCOMMON_DEVICE_DATA     commonData;
     ULONG Caps = 0;
+    HANDLE ThreadHandle;
 
     PAGED_CODE ();
 
@@ -264,7 +299,12 @@ ACPIDispatchDeviceControl(
               }
               break;
 
-           /* TODO: Implement other IOCTLs */
+           case IOCTL_GET_SYS_BUTTON_EVENT:
+              PsCreateSystemThread(&ThreadHandle, THREAD_ALL_ACCESS, 0, 0, 0, ButtonWaitThread, Irp);
+              ZwClose(ThreadHandle);
+
+              status = STATUS_PENDING;
+              break;
 
            default:
               DPRINT1("Unsupported IOCTL: %x\n", irpStack->Parameters.DeviceIoControl.IoControlCode);
@@ -279,6 +319,8 @@ ACPIDispatchDeviceControl(
        Irp->IoStatus.Status = status;
        IoCompleteRequest(Irp, IO_NO_INCREMENT);
     }
+    else
+       IoMarkIrpPending(Irp);
 
     return status;
 }
index b846b04..c81a61d 100644 (file)
@@ -2,10 +2,16 @@
 <!DOCTYPE group SYSTEM "../tools/rbuild/project.dtd">
 <group xmlns:xi="http://www.w3.org/2001/XInclude">
 
-    <if property="ARCH" value="i386">
-           <directory name="halx86">
-                   <xi:include href="halx86/directory.rbuild" />
-           </directory>
+       <if property="ARCH" value="i386">
+               <directory name="halx86">
+                       <xi:include href="halx86/directory.rbuild" />
+               </directory>
+       </if>
+
+       <if property="ARCH" value="amd64">
+               <directory name="halx86">
+                       <xi:include href="halx86/directory.rbuild" />
+               </directory>
        </if>
 
        <if property="ARCH" value="powerpc">
diff --git a/hal/halx86/generic/amd64/systimer.S b/hal/halx86/generic/amd64/systimer.S
new file mode 100644 (file)
index 0000000..1cb3b6e
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * FILE:            hal/halx86/generic/timer.S
+ * COPYRIGHT:       See COPYING in the top level directory
+ * PURPOSE:         System Timer Interrupt and Management
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ */
+
+/* INCLUDES ******************************************************************/
+
+#include <reactos/asm.h>
+#include <ndk/amd64/asm.h>
+
+/* GLOBALS *******************************************************************/
+
+.data
+
+.global MsgUnimplemented
+MsgUnimplemented:
+.asciz "WARNING:  %s at %s:%d is UNIMPLEMENTED!\n"
+
+
+/* FUNCTIONS *****************************************************************/
+
+.text
+.code64
+
+PUBLIC HalpCalibrateStallExecution@0
+HalpCalibrateStallExecution@0:
+
+
+PUBLIC HalpProfileInterrupt
+HalpProfileInterrupt:
+
+
+PUBLIC KeStallExecutionProcessor
+KeStallExecutionProcessor:
+
+    /* Get the number of microseconds required */
+    jecxz Done
+
+    /* Multiply by the stall factor */
+    mov eax, gs:[KPCR_STALL_SCALE_FACTOR]
+    mul ecx
+
+    /* Align to 16 bytes */
+    .align 16
+
+    /* Jump to subtraction loop */
+    jmp SubtractLoop
+
+    /* Align to 16 bytes */
+    .align 16
+
+    /* Subtract one count */
+SubtractLoop:
+    sub eax, 1
+    jnz SubtractLoop
+
+Done:
+    /* Return */
+    ret 4
+
+
+PUBLIC HalpQuery8254Counter
+HalpQuery8254Counter:
+
+    /* Save EFLAGS and disable interrupts */
+    pushfq
+    cli
+
+    /* Set timer data */
+    mov al, 0
+    out 0x43, al
+    jmp $+2
+
+    /* Read current timer */
+    in al, 0x40
+    jmp $+2
+    movzx ecx, al
+    in al, 0x40
+    mov ch, al
+
+    /* Return it and restore interrupt state */
+    mov eax, ecx
+    popfq
+    ret
+
+PUBLIC HalpClockInterrupt
+HalpClockInterrupt:
+    UNIMPLEMENTED _HalpClockInterrupt
+    iret
+
diff --git a/hal/halx86/generic/amd64/x86bios.c b/hal/halx86/generic/amd64/x86bios.c
new file mode 100644 (file)
index 0000000..3b43bf1
--- /dev/null
@@ -0,0 +1,289 @@
+/*
+ * PROJECT:         ReactOS HAL
+ * LICENSE:         GPL, See COPYING in the top level directory
+ * FILE:            hal/halx86/generic/amd64/x86bios.c
+ * PURPOSE:         
+ * PROGRAMMERS:     Timo Kreuzer (timo.kreuzer@reactos.org)
+ */
+
+/* INCLUDES ******************************************************************/
+
+#include <hal.h>
+//#define NDEBUG
+#include <debug.h>
+
+#include "x86emu.h"
+
+/* This page serves as fallback for pages used by Mm */
+#define DEFAULT_PAGE 0x21
+
+/* GLOBALS *******************************************************************/
+
+BOOLEAN x86BiosIsInitialized;
+LONG x86BiosBufferIsAllocated = 0;
+PUCHAR x86BiosMemoryMapping;
+
+
+VOID
+NTAPI
+DbgDumpPage(PUCHAR MemBuffer, USHORT Segment)
+{
+    ULONG x, y, Offset;
+
+    for (y = 0; y < 0x100; y++)
+    {
+        for (x = 0; x < 0x10; x++)
+        {
+            Offset = Segment * 16 + y * 16 + x;
+            DbgPrint("%02x ", MemBuffer[Offset]);
+        }
+        DbgPrint("\n");
+    }
+}
+
+VOID
+NTAPI
+HalInitializeBios(ULONG Unknown, PLOADER_PARAMETER_BLOCK LoaderBlock)
+{
+    PPFN_NUMBER PfnArray;
+    PFN_NUMBER Pfn, Last;
+    PMEMORY_ALLOCATION_DESCRIPTOR Descriptor;
+    PLIST_ENTRY ListEntry;
+    PMDL Mdl;
+
+    /* Allocate an MDL for 1MB */
+    Mdl = IoAllocateMdl(NULL, 0x100000, FALSE, FALSE, NULL);
+    if (!Mdl)
+    {
+        ASSERT(FALSE);
+    }
+
+    /* Get pointer to the pfn array */
+    PfnArray = MmGetMdlPfnArray(Mdl);
+
+    /* Fill the array with low memory PFNs */
+    for (Pfn = 0; Pfn < 0x100; Pfn++)
+    {
+        PfnArray[Pfn] = Pfn;
+    }
+
+    /* Loop the memory descriptors */
+    for (ListEntry = LoaderBlock->MemoryDescriptorListHead.Flink;
+         ListEntry != &LoaderBlock->MemoryDescriptorListHead;
+         ListEntry = ListEntry->Flink)
+    {
+        /* Get the memory descriptor */
+        Descriptor = CONTAINING_RECORD(ListEntry,
+                                       MEMORY_ALLOCATION_DESCRIPTOR,
+                                       ListEntry);
+
+        /* Check if the memory is in the low range */
+        if (Descriptor->BasePage < 0x100)
+        {
+            /* Check if the memory type is firmware */
+            if (Descriptor->MemoryType != LoaderFirmwarePermanent &&
+                Descriptor->MemoryType != LoaderSpecialMemory)
+            {
+                /* It's something else, so don't use it! */
+                Last = min(Descriptor->BasePage + Descriptor->PageCount, 0x100);
+                for (Pfn = Descriptor->BasePage; Pfn < Last; Pfn++)
+                {
+                    /* Set each page to the default page */
+                    PfnArray[Pfn] = DEFAULT_PAGE;
+                }
+            }
+        }
+    }
+
+    Mdl->MdlFlags = MDL_PAGES_LOCKED;
+
+    /* Map the MDL to system space */
+    x86BiosMemoryMapping = MmGetSystemAddressForMdlSafe(Mdl, HighPagePriority);
+    ASSERT(x86BiosMemoryMapping);
+
+    DPRINT1("memory: %p, %p\n", *(PVOID*)x86BiosMemoryMapping, *(PVOID*)(x86BiosMemoryMapping + 8));
+    //DbgDumpPage(x86BiosMemoryMapping, 0xc351);
+
+    x86BiosIsInitialized = TRUE;
+    
+    HalpBiosDisplayReset();
+}
+
+NTSTATUS
+NTAPI
+x86BiosAllocateBuffer(
+    ULONG *Size,
+    USHORT *Segment,
+    USHORT *Offset)
+{
+    /* Check if the system is initialized and the buffer is large enough */
+    if (!x86BiosIsInitialized || *Size > PAGE_SIZE)
+    {
+        /* Something was wrong, fail! */
+        return STATUS_INSUFFICIENT_RESOURCES;
+    }
+
+    /* Check if the buffer is already allocated */
+    if (InterlockedBitTestAndSet(&x86BiosBufferIsAllocated, 0))
+    {
+        /* Buffer was already allocated, fail */
+        return STATUS_INSUFFICIENT_RESOURCES;
+    }
+
+    /* The buffer is sufficient, return hardcoded address and size */
+    *Size = PAGE_SIZE;
+    *Segment = 0x2000;
+    *Offset = 0;
+
+    return STATUS_SUCCESS;;
+}
+
+NTSTATUS
+NTAPI
+x86BiosFreeBuffer(
+    USHORT Segment,
+    USHORT Offset)
+{
+    /* Check if the system is initialized and if the address matches */
+    if (!x86BiosIsInitialized || Segment != 0x2000 || Offset != 0)
+    {
+        /* Something was wrong, fail */
+        return STATUS_INVALID_PARAMETER;
+    }
+
+    /* Check if the buffer was allocated */
+    if (!InterlockedBitTestAndReset(&x86BiosBufferIsAllocated, 0))
+    {
+        /* It was not, fail */
+        return STATUS_INVALID_PARAMETER;
+    }
+
+    /* Buffer is freed, nothing more to do */
+    return STATUS_SUCCESS;;
+}
+
+NTSTATUS
+NTAPI
+x86BiosReadMemory(
+    USHORT Segment,
+    USHORT Offset,
+    PVOID Buffer,
+    ULONG Size)
+{
+    ULONG_PTR Address;
+
+    /* Calculate the physical address */
+    Address = (Segment << 4) + Offset;
+
+    /* Check if it's valid */
+    if (!x86BiosIsInitialized || Address + Size > 0x100000)
+    {
+        /* Invalid */
+        return STATUS_INVALID_PARAMETER;
+    }
+
+    /* Copy the memory to the buffer */
+    RtlCopyMemory(Buffer, x86BiosMemoryMapping + Address, Size);
+
+    /* Return success */
+    return STATUS_SUCCESS;
+}
+
+NTSTATUS
+NTAPI
+x86BiosWriteMemory(
+    USHORT Segment,
+    USHORT Offset,
+    PVOID Buffer,
+    ULONG Size)
+{
+    ULONG_PTR Address;
+
+    /* Calculate the physical address */
+    Address = (Segment << 4) + Offset;
+
+    /* Check if it's valid */
+    if (!x86BiosIsInitialized || Address + Size > 0x100000)
+    {
+        /* Invalid */
+        return STATUS_INVALID_PARAMETER;
+    }
+
+    /* Copy the memory from the buffer */
+    RtlCopyMemory(x86BiosMemoryMapping + Address, Buffer, Size);
+
+    /* Return success */
+    return STATUS_SUCCESS;
+}
+
+BOOLEAN
+NTAPI
+x86BiosCall(
+    ULONG InterruptNumber,
+    X86_BIOS_REGISTERS *Registers)
+{
+    X86_VM_STATE VmState;
+    struct
+    {
+        USHORT Ip;
+        USHORT SegCs;
+    } *InterrupTable;
+
+    /* Zero the VmState */
+    RtlZeroMemory(&VmState, sizeof(VmState));
+
+    /* Copy the registers */
+    VmState.BiosRegisters = *Registers;
+
+    /* Set the physical memory buffer */
+    VmState.MemBuffer = x86BiosMemoryMapping;
+
+    /* Set Eflags */
+    VmState.Registers.Eflags.Long = 0; // FIXME
+
+    /* Setup stack */
+    VmState.Registers.SegSs = 0; // FIXME
+    VmState.Registers.Sp = 0x2000 - 2; // FIXME
+
+    /* Initialize IP from the interrupt vector table */
+    InterrupTable = (PVOID)x86BiosMemoryMapping;
+    VmState.Registers.SegCs = InterrupTable[InterruptNumber].SegCs;
+    VmState.Registers.Eip = InterrupTable[InterruptNumber].Ip;
+    
+    /* Make the function return on IRET */
+    VmState.Flags.ReturnOnIret = 1;
+
+    /* Call the x86 emulator */
+    x86Emulator(&VmState);
+
+    /* Copy registers back to caller */
+    *Registers = VmState.BiosRegisters;
+
+    return TRUE;
+}
+
+BOOLEAN
+NTAPI
+HalpBiosDisplayReset(VOID)
+{
+    X86_BIOS_REGISTERS Registers;
+    ULONG OldEflags;
+
+    /* Save flags and disable interrupts */
+    OldEflags = __readeflags();
+    _disable();
+
+    /* Set AH = 0 (Set video mode), AL = 0x12 (640x480x16 vga) */
+    Registers.Eax = 0x12;
+
+    /* Call INT 0x10 */
+    x86BiosCall(0x10, &Registers);
+
+    // FIXME: check result
+
+    /* Restore previous flags */
+    __writeeflags(OldEflags);
+
+    return TRUE;
+}
+
index a25c429..225b6e3 100644 (file)
 
 /* GLOBALS *******************************************************************/
 
-KSPIN_LOCK HalpSystemHardwareLock;
 UCHAR HalpCmosCenturyOffset;
-ULONG HalpSystemHardwareFlags;
 
-/* PRIVATE FUNCTIONS **********************************************************/
-
-VOID
-NTAPI
-HalpAcquireSystemHardwareSpinLock(VOID)
-{
-    ULONG Flags;
-
-    /* Get flags and disable interrupts */
-    Flags = __readeflags();
-    _disable();
-
-    /* Acquire the lock */
-    KxAcquireSpinLock(&HalpSystemHardwareLock);
-
-    /* We have the lock, save the flags now */
-    HalpSystemHardwareFlags = Flags;
-}
-
-VOID
-NTAPI
-HalpReleaseCmosSpinLock(VOID)
-{
-    ULONG Flags;
-
-    /* Get the flags */
-    Flags = HalpSystemHardwareFlags;
-
-    /* Release the lock */
-    KxReleaseSpinLock(&HalpSystemHardwareLock);
-
-    /* Restore the flags */
-    __writeeflags(Flags);
-}
+/* PRIVATE FUNCTIONS *********************************************************/
 
 FORCEINLINE
 UCHAR
index d188d50..4ddd30e 100644 (file)
@@ -245,3 +245,60 @@ KeFlushWriteBuffer(VOID)
     //
     return;
 }
+
+#ifdef _M_IX86
+/* x86 fastcall wrappers */
+
+#undef KeRaiseIrql
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+KeRaiseIrql(KIRQL NewIrql,
+            PKIRQL OldIrql)
+{
+    /* Call the fastcall function */
+    *OldIrql = KfRaiseIrql(NewIrql);
+}
+
+#undef KeLowerIrql
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+KeLowerIrql(KIRQL NewIrql)
+{
+    /* Call the fastcall function */
+    KfLowerIrql(NewIrql);
+}
+
+#undef KeAcquireSpinLock
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+KeAcquireSpinLock(PKSPIN_LOCK SpinLock,
+                  PKIRQL OldIrql)
+{
+    /* Call the fastcall function */
+    *OldIrql = KfAcquireSpinLock(SpinLock);
+}
+
+#undef KeReleaseSpinLock
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+KeReleaseSpinLock(PKSPIN_LOCK SpinLock,
+                  KIRQL NewIrql)
+{
+    /* Call the fastcall function */
+    KfReleaseSpinLock(SpinLock, NewIrql);
+}
+
+#endif
+
index 059bbba..1aab8d5 100644 (file)
@@ -8,29 +8,25 @@
 
 /* INCLUDES ******************************************************************/
 
-/* Enable this (and the define in irq.S) to make UP HAL work for MP Kernel */
-/* #define CONFIG_SMP */
+/* This file is compiled twice. Once for UP and once for MP */
 
 #include <hal.h>
 #define NDEBUG
 #include <debug.h>
 
+#include <internal/spinlock.h>
+
 #undef KeAcquireSpinLock
 #undef KeReleaseSpinLock
 
+/* GLOBALS *******************************************************************/
+
+ULONG HalpSystemHardwareFlags;
+KSPIN_LOCK HalpSystemHardwareLock;
+
 /* FUNCTIONS *****************************************************************/
 
-/*
- * @implemented
- */
-VOID
-NTAPI
-KeAcquireSpinLock(PKSPIN_LOCK SpinLock,
-                  PKIRQL OldIrql)
-{
-    /* Call the fastcall function */
-    *OldIrql = KfAcquireSpinLock(SpinLock);
-}
+#ifdef _M_IX86
 
 /*
  * @implemented
@@ -49,18 +45,6 @@ KeAcquireSpinLockRaiseToSynch(PKSPIN_LOCK SpinLock)
     return OldIrql;
 }
 
-/*
- * @implemented
- */
-VOID
-NTAPI
-KeReleaseSpinLock(PKSPIN_LOCK SpinLock,
-                  KIRQL NewIrql)
-{
-    /* Call the fastcall function */
-    KfReleaseSpinLock(SpinLock, NewIrql);
-}
-
 /*
  * @implemented
  */
@@ -228,27 +212,38 @@ KeTryToAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber,
     return TRUE;
 }
 
-#undef KeRaiseIrql
-/*
- * @implemented
- */
+#endif
+
 VOID
 NTAPI
-KeRaiseIrql(KIRQL NewIrql,
-            PKIRQL OldIrql)
+HalpAcquireSystemHardwareSpinLock(VOID)
 {
-    /* Call the fastcall function */
-    *OldIrql = KfRaiseIrql(NewIrql);
+    ULONG Flags;
+
+    /* Get flags and disable interrupts */
+    Flags = __readeflags();
+    _disable();
+
+    /* Acquire the lock */
+    KxAcquireSpinLock(&HalpSystemHardwareLock);
+
+    /* We have the lock, save the flags now */
+    HalpSystemHardwareFlags = Flags;
 }
 
-#undef KeLowerIrql
-/*
- * @implemented
- */
 VOID
 NTAPI
-KeLowerIrql(KIRQL NewIrql)
+HalpReleaseCmosSpinLock(VOID)
 {
-    /* Call the fastcall function */
-    KfLowerIrql(NewIrql);
+    ULONG Flags;
+
+    /* Get the flags */
+    Flags = HalpSystemHardwareFlags;
+
+    /* Release the lock */
+    KxReleaseSpinLock(&HalpSystemHardwareLock);
+
+    /* Restore the flags */
+    __writeeflags(Flags);
 }
+
index 99528c9..154379f 100644 (file)
                        <file>beep.c</file>
                        <file>bios.c</file>
                        <file>cmos.c</file>
+                       <file>display.c</file>
                        <file>dma.c</file>
                        <file>drive.c</file>
-                       <file>display.c</file>
                        <file>halinit.c</file>
                        <file>misc.c</file>
-                       <file>portio.c</file>
                        <file>profil.c</file>
                        <file>reboot.c</file>
                        <file>sysinfo.c</file>
-                       <file>systimer.S</file>
                        <file>timer.c</file>
-                       <file>trap.S</file>
                        <file>usage.c</file>
+                       <if property="ARCH" value="i386">
+                               <directory name="i386">
+                                       <file>portio.c</file>
+                                       <file>systimer.S</file>
+                                       <file>trap.S</file>
+                               </directory>
+                       </if>
+                       <if property="ARCH" value="amd64">
+                               <directory name="amd64">
+                                       <file>x86bios.c</file>
+                                       <file>systimer.S</file>
+                               </directory>
+                       </if>
                </directory>
                <directory name="include">
                        <pch>hal.h</pch>
                </directory>
        </module>
+
        <module name="mini_hal" type="objectlibrary">
                <include>include</include>
                <include base="ntoskrnl">include</include>
                        <file>display.c</file>
                        <file>drive.c</file>
                        <file>misc.c</file>
-                       <file>pic.c</file>
-                       <file>portio.c</file>
-                       <file>processor.c</file>
                        <file>profil.c</file>
                        <file>reboot.c</file>
                        <file>spinlock.c</file>
                        <file>sysinfo.c</file>
-                       <file>systimer.S</file>
                        <file>timer.c</file>
                        <file>usage.c</file>
+                       <if property="ARCH" value="i386">
+                               <directory name="i386">
+                                       <file>portio.c</file>
+                                       <file>systimer.S</file>
+                               </directory>
+                       </if>
                </directory>
                <directory name="up">
                        <file>halinit_up.c</file>
+                       <file>pic.c</file>
+                       <file>processor.c</file>
                </directory>
        </module>
 </group>
index 5bf819c..5063a04 100644 (file)
@@ -7,6 +7,9 @@
                <define name="_NTHALDLL_" />
                <define name="_NTHAL_" />
                <define name="CONFIG_SMP" />
+               <directory name="generic">
+                       <file>spinlock.c</file>
+               </directory>
                <directory name="mp">
                        <file>apic.c</file>
                        <file>halinit_mp.c</file>
@@ -14,7 +17,6 @@
                        <file>ipi_mp.c</file>
                        <file>mpconfig.c</file>
                        <file>processor_mp.c</file>
-                       <file>spinlock.c</file>
                        <file>halmp.rc</file>
                </directory>
        </module>
index 405da09..732a374 100644 (file)
@@ -7,9 +7,11 @@
                <define name="_NTHALDLL_" />
                <define name="_NTHAL_" />
                <directory name="generic">
+                       <file>spinlock.c</file>
+               </directory>
+               <directory name="up">
                        <file>pic.c</file>
                        <file>processor.c</file>
-                       <file>spinlock.c</file>
                </directory>
        </module>
 </group>
index 8b13789..4a09aa2 100644 (file)
@@ -1 +1,27 @@
+<?xml version="1.0"?>
+<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
+<group xmlns:xi="http://www.w3.org/2001/XInclude">
+<module name="hal" type="kernelmodedll" entrypoint="HalInitSystem" installbase="system32" installname="hal.dll">
+       <importlibrary base="hal" definition="../hal.pspec" />
+       <bootstrap installbase="$(CDOUTPUT)" nameoncd="hal.dll" />
+       <include base="hal">include</include>
+       <include base="ntoskrnl">include</include>
+       <!-- include base="x86emu">.</include -->
+       <define name="_DISABLE_TIDENTS" />
+       <define name="_NTHAL_" />
+       <define name="_X86BIOS_" />
+       <library>hal_generic</library>
+       <library>hal_generic_up</library>
+       <library>ntoskrnl</library>
+       <!-- library>x86emu</library -->
+
+       <directory name="mp">
+               <file>halinit_mp.c</file>
+               <file>halmp.rc</file>
+               <directory name="amd64">
+                       <!-- file>mps.S</file -->
+               </directory>
+       </directory>
+</module>
+</group>
 
index 05bab41..ad17eac 100644 (file)
                <library>ntoskrnl</library>
                <library>libcntpr</library>
                <directory name="mp">
-                       <file>mps.S</file>
-                       <file>mpsboot.asm</file>
-                       <file>mpsirql.c</file>
-
+                       <if property="ARCH" value="i386">
+                               <directory name="i386">
+                                       <file>mps.S</file>
+                                       <file>mpsboot.asm</file>
+                                       <file>mpsirql.c</file>
+                               </directory>
+                       </if>
                </directory>
        </module>
 </group>
index 16c82df..6fd63fa 100644 (file)
@@ -681,100 +681,7 @@ HalpReleaseCmosSpinLock(
     VOID
 );
 
-//
-// This is duplicated from ke_x.h
-//
-#ifdef CONFIG_SMP
-//
-// Spinlock Acquisition at IRQL >= DISPATCH_LEVEL
-//
-FORCEINLINE
-VOID
-KxAcquireSpinLock(IN PKSPIN_LOCK SpinLock)
-{
-    /* Make sure that we don't own the lock already */
-    if (((KSPIN_LOCK)KeGetCurrentThread() | 1) == *SpinLock)
-    {
-        /* We do, bugcheck! */
-        KeBugCheckEx(SPIN_LOCK_ALREADY_OWNED, (ULONG_PTR)SpinLock, 0, 0, 0);
-    }
-
-    for (;;)
-    {
-        /* Try to acquire it */
-        if (InterlockedBitTestAndSet((PLONG)SpinLock, 0))
-        {
-            /* Value changed... wait until it's locked */
-            while (*(volatile KSPIN_LOCK *)SpinLock == 1)
-            {
-#ifdef DBG
-                /* On debug builds, we use a much slower but useful routine */
-                //Kii386SpinOnSpinLock(SpinLock, 5);
-
-                /* FIXME: Do normal yield for now */
-                YieldProcessor();
-#else
-                /* Otherwise, just yield and keep looping */
-                YieldProcessor();
-#endif
-            }
-        }
-        else
-        {
-#ifdef DBG
-            /* On debug builds, we OR in the KTHREAD */
-            *SpinLock = (KSPIN_LOCK)KeGetCurrentThread() | 1;
-#endif
-            /* All is well, break out */
-            break;
-        }
-    }
-}
-
-//
-// Spinlock Release at IRQL >= DISPATCH_LEVEL
-//
-FORCEINLINE
-VOID
-KxReleaseSpinLock(IN PKSPIN_LOCK SpinLock)
-{
-#ifdef DBG
-    /* Make sure that the threads match */
-    if (((KSPIN_LOCK)KeGetCurrentThread() | 1) != *SpinLock)
-    {
-        /* They don't, bugcheck */
-        KeBugCheckEx(SPIN_LOCK_NOT_OWNED, (ULONG_PTR)SpinLock, 0, 0, 0);
-    }
-#endif
-    /* Clear the lock */
-    InterlockedAnd((PLONG)SpinLock, 0);
-}
-
-#else
-
-//
-// Spinlock Acquire at IRQL >= DISPATCH_LEVEL
-//
-FORCEINLINE
-VOID
-KxAcquireSpinLock(IN PKSPIN_LOCK SpinLock)
-{
-    /* On UP builds, spinlocks don't exist at IRQL >= DISPATCH */
-    UNREFERENCED_PARAMETER(SpinLock);
-}
-
-//
-// Spinlock Release at IRQL >= DISPATCH_LEVEL
-//
-FORCEINLINE
-VOID
-KxReleaseSpinLock(IN PKSPIN_LOCK SpinLock)
-{
-    /* On UP builds, spinlocks don't exist at IRQL >= DISPATCH */
-    UNREFERENCED_PARAMETER(SpinLock);
-}
 
-#endif
 
 VOID
 FASTCALL
diff --git a/hal/halx86/mp/amd64/mps.S b/hal/halx86/mp/amd64/mps.S
new file mode 100644 (file)
index 0000000..3543652
--- /dev/null
@@ -0,0 +1,96 @@
+/* 
+ * COPYRIGHT:       See COPYING in the top level directory
+ * PROJECT:         ReactOS kernel
+ * FILE:            ntoskrnl/hal/amd64/generic/mps.S
+ * PURPOSE:         Intel MultiProcessor specification support
+ * PROGRAMMER:      Casper S. Hornstrup (chorns@users.sourceforge.net)
+ */
+
+/* INCLUDES ******************************************************************/
+
+#include <reactos/asm.h>
+#include <ndk/amd64/asm.h>
+
+/* FUNCTIONS *****************************************************************/
+
+#define BEFORE \
+  cld; \
+  push rax; \
+  push rbx; \
+  push rcx; \
+  push rdx; \
+  push rsi; \
+  push rdi; \
+  push fs; \
+  push gs; \
+  
+#define AFTER \
+  pop  gs; \
+  pop  fs; \
+  pop  rdi; \
+  pop  rsi; \
+  pop  rdx; \
+  pop  rcx; \
+  pop  rbx; \
+  pop  rax; \
+
+#ifdef CONFIG_SMP
+PUBLIC MpsIpiInterrupt
+MpsIpiInterrupt:
+    /* Save registers */       
+    BEFORE
+
+    /* Call the C handler */
+    call  MpsIpiHandler
+
+    /* Return to the caller */
+    AFTER
+    iret
+#endif
+  
+PUBLIC MpsErrorInterrupt
+MpsErrorInterrupt:
+    /* Save registers */       
+    BEFORE
+
+    /* Call the C handler */
+    call  MpsErrorHandler
+
+    /* Return to the caller */
+    AFTER
+    iret
+
+
+PUBLIC MpsSpuriousInterrupt
+MpsSpuriousInterrupt:
+    /* Save registers */       
+    BEFORE
+
+    /* Call the C handler */
+    call  MpsSpuriousHandler
+
+    /* Return to the caller */
+    AFTER
+    iret
+
+PUBLIC MpsTimerInterrupt
+MpsTimerInterrupt:
+    /* Save registers */       
+    BEFORE
+
+    mov        ebx, 0xef
+       mov eax, 0xceafbeef
+       push rax
+       push rsp
+       push rbx
+       call MpsTimerHandler
+       pop rax
+       pop rax
+       pop rax
+
+    /* Return to the caller */
+       AFTER
+       iret
+  
+  
+/* EOF */
similarity index 100%
rename from hal/halx86/mp/mps.S
rename to hal/halx86/mp/i386/mps.S
similarity index 89%
rename from hal/halx86/mp/mpsirql.c
rename to hal/halx86/mp/i386/mpsirql.c
index de87b14..643369a 100644 (file)
@@ -144,29 +144,6 @@ KfLowerIrql (KIRQL NewIrql)
 }
 
 
-/**********************************************************************
- * NAME                                                        EXPORTED
- *     KeLowerIrql
- *
- * DESCRIPTION
- *     Restores the irq level on the current processor
- *
- * ARGUMENTS
- *     NewIrql = Irql to lower to
- *
- * RETURN VALUE
- *     None
- *
- * NOTES
- */
-#undef KeLowerIrql
-VOID NTAPI
-KeLowerIrql (KIRQL NewIrql)
-{
-  KfLowerIrql (NewIrql);
-}
-
-
 /**********************************************************************
  * NAME                                                        EXPORTED
  *     KfRaiseIrql
@@ -215,33 +192,6 @@ KfRaiseIrql (KIRQL NewIrql)
   return OldIrql;
 }
 
-
-/**********************************************************************
- * NAME                                                        EXPORTED
- *     KeRaiseIrql
- *
- * DESCRIPTION
- *     Raises the hardware priority (irql)
- *
- * ARGUMENTS
- *     NewIrql = Irql to raise to
- *     OldIrql (OUT) = Caller supplied storage for the previous irql
- *
- * RETURN VALUE
- *     None
- *
- * NOTES
- *     Calls KfRaiseIrql
- */
-#undef KeRaiseIrql
-VOID NTAPI
-KeRaiseIrql (KIRQL     NewIrql,
-       PKIRQL  OldIrql)
-{
-  *OldIrql = KfRaiseIrql (NewIrql);
-}
-
-
 /**********************************************************************
  * NAME                                                        EXPORTED
  *     KeRaiseIrqlToDpcLevel
diff --git a/hal/halx86/mp/spinlock.c b/hal/halx86/mp/spinlock.c
deleted file mode 100644 (file)
index c8506ad..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * COPYRIGHT:       See COPYING in the top level directory
- * PROJECT:         ReactOS kernel
- * FILE:            hal/halx86/mp/spinlock.c
- * PURPOSE:         Implements spinlocks
- * PROGRAMMER:      David Welch (welch@cwcom.net)
- *                  Eric Kohl
- * UPDATE HISTORY:
- *                  09/06/2000 Created
- */
-
-/*
- * NOTE: On a uniprocessor machine spinlocks are implemented by raising
- * the irq level
- */
-
-/* INCLUDES ****************************************************************/
-
-#include <hal.h>
-#define NDEBUG
-#include <debug.h>
-
-/* Hmm, needed for KDBG := 1. Why? */
-#undef KeGetCurrentIrql
-
-/* FUNCTIONS ***************************************************************/
-
-#undef KeAcquireSpinLock
-VOID NTAPI
-KeAcquireSpinLock (
-       PKSPIN_LOCK     SpinLock,
-       PKIRQL          OldIrql
-       )
-/*
- * FUNCTION: Acquires a spinlock
- * ARGUMENTS:
- *         SpinLock = Spinlock to acquire
- *         OldIrql (OUT) = Caller supplied storage for the previous irql
- */
-{
-  *OldIrql = KfAcquireSpinLock(SpinLock);
-}
-
-KIRQL FASTCALL
-KeAcquireSpinLockRaiseToSynch (
-       PKSPIN_LOCK     SpinLock
-       )
-{
-  KIRQL OldIrql;
-
-  OldIrql = KfRaiseIrql(CLOCK2_LEVEL);
-  KiAcquireSpinLock(SpinLock);
-
-  return OldIrql;
-}
-
-#undef KeReleaseSpinLock
-VOID NTAPI
-KeReleaseSpinLock (
-       PKSPIN_LOCK     SpinLock,
-       KIRQL           NewIrql
-       )
-/*
- * FUNCTION: Releases a spinlock
- * ARGUMENTS:
- *        SpinLock = Spinlock to release
- *        NewIrql = Irql level before acquiring the spinlock
- */
-{
-   KfReleaseSpinLock(SpinLock, NewIrql);
-}
-
-LOGICAL
-FASTCALL
-KeTryToAcquireQueuedSpinLock(
-  KSPIN_LOCK_QUEUE_NUMBER LockNumber,
-  PKIRQL OldIrql)
-{
-  UNIMPLEMENTED;
-
-  return FALSE;
-}
-
-
-BOOLEAN
-FASTCALL
-KeTryToAcquireQueuedSpinLockRaiseToSynch(
-  KSPIN_LOCK_QUEUE_NUMBER LockNumber,
-  PKIRQL OldIrql)
-{
-  UNIMPLEMENTED;
-
-  return FALSE;
-}
-
-KIRQL FASTCALL
-KfAcquireSpinLock (
-       PKSPIN_LOCK     SpinLock
-       )
-{
-   KIRQL OldIrql;
-
-   ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL);
-
-   OldIrql = KfRaiseIrql(DISPATCH_LEVEL);
-   KiAcquireSpinLock(SpinLock);
-
-   return OldIrql;
-}
-
-VOID FASTCALL
-KfReleaseSpinLock (
-       PKSPIN_LOCK     SpinLock,
-       KIRQL           NewIrql
-       )
-/*
- * FUNCTION: Releases a spinlock
- * ARGUMENTS:
- *        SpinLock = Spinlock to release
- *        NewIrql = Irql level before acquiring the spinlock
- */
-{
-   ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL || KeGetCurrentIrql() == SYNCH_LEVEL);
-   KiReleaseSpinLock(SpinLock);
-   KfLowerIrql(NewIrql);
-}
-
-
-/*
- * @unimplemented
- */
-VOID
-FASTCALL
-KeAcquireInStackQueuedSpinLock(
-    IN PKSPIN_LOCK SpinLock,
-    IN PKLOCK_QUEUE_HANDLE LockHandle
-    )
-{
-   UNIMPLEMENTED;
-}
-
-/*
- * @unimplemented
- */
-VOID
-FASTCALL
-KeAcquireInStackQueuedSpinLockRaiseToSynch(
-    IN PKSPIN_LOCK SpinLock,
-    IN PKLOCK_QUEUE_HANDLE LockHandle
-    )
-{
-   UNIMPLEMENTED;
-}
-
-
-/*
- * @unimplemented
- */
-VOID
-FASTCALL
-KeReleaseInStackQueuedSpinLock(
-    IN PKLOCK_QUEUE_HANDLE LockHandle
-    )
-{
-   UNIMPLEMENTED;
-}
-
-/*
- * @unimplemented
- */
-KIRQL
-FASTCALL
-KeAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER Number)
-{
-   UNIMPLEMENTED;
-   return 0;
-}
-
-/*
- * @unimplemented
- */
-KIRQL
-FASTCALL
-KeAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber)
-{
-    UNIMPLEMENTED;
-    return 0;
-}
-
-/*
- * @unimplemented
- */
-VOID
-FASTCALL
-KeReleaseQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER Number,
-                        IN KIRQL OldIrql)
-{
-   UNIMPLEMENTED;
-}
-
-/* EOF */
similarity index 100%
rename from hal/halx86/generic/pic.c
rename to hal/halx86/up/pic.c
diff --git a/include/dxsdk/bdatif.idl b/include/dxsdk/bdatif.idl
new file mode 100644 (file)
index 0000000..6c8887e
--- /dev/null
@@ -0,0 +1,270 @@
+#ifndef DO_NO_IMPORTS
+import "unknwn.idl";
+import "strmif.idl";
+import "tuner.idl";
+import "bdaiface.idl";
+#endif
+
+interface IMPEG2_TIF_CONTROL;
+interface IATSCChannelInfo;
+interface IMPEG2PIDMap;
+
+[
+    object,
+    uuid(DFEF4A68-EE61-415f-9CCB-CD95F2F98A3A),
+    pointer_default(unique)
+]
+interface IBDA_TIF_REGISTRATION : IUnknown
+{
+    HRESULT
+    RegisterTIFEx(
+        [in]  IPin * pTIFInputPin,
+        [in, out] ULONG * ppvRegistrationContext,
+        [in, out] IUnknown ** ppMpeg2DataControl);
+
+    HRESULT
+    UnregisterTIF(
+        [in] ULONG pvRegistrationContext);
+}
+
+[
+    object,
+    uuid(F9BAC2F9-4149-4916-B2EF-FAA202326862),
+    pointer_default(unique)
+]
+interface IMPEG2_TIF_CONTROL : IUnknown
+{
+    HRESULT
+    RegisterTIF(
+        [in]  IUnknown * pUnkTIF,
+        [in, out] ULONG * ppvRegistrationContext);
+
+    HRESULT
+    UnregisterTIF(
+        [in] ULONG pvRegistrationContext);
+
+    HRESULT
+    AddPIDs(
+        [in] ULONG ulcPIDs,
+        [in] ULONG * pulPIDs);
+
+    HRESULT
+    DeletePIDs(
+        [in] ULONG ulcPIDs,
+        [in] ULONG * pulPIDs);
+
+    HRESULT
+    GetPIDCount(
+        [out] ULONG * pulcPIDs);
+
+    HRESULT
+    GetPIDs(
+        [out] ULONG * pulcPIDs,
+        [out] ULONG * pulPIDs);
+}
+
+[
+    object,
+    uuid(A3B152DF-7A90-4218-AC54-9830BEE8C0B6),
+    pointer_default(unique)
+]
+interface ITuneRequestInfo : IUnknown
+{
+    HRESULT
+    GetLocatorData(
+        [in]  ITuneRequest *Request);
+
+    HRESULT
+    GetComponentData(
+        [in]  ITuneRequest *CurrentRequest);
+
+    HRESULT
+    CreateComponentList(
+        [in]  ITuneRequest *CurrentRequest);
+
+    HRESULT
+    GetNextProgram (
+        [in]  ITuneRequest *CurrentRequest,
+        [out, retval] ITuneRequest **TuneRequest);
+
+    HRESULT
+    GetPreviousProgram(
+        [in]  ITuneRequest *CurrentRequest,
+        [out, retval] ITuneRequest **TuneRequest);
+
+    HRESULT
+    GetNextLocator(
+        [in]  ITuneRequest *CurrentRequest,
+        [out, retval] ITuneRequest **TuneRequest);
+
+    HRESULT
+    GetPreviousLocator(
+        [in]  ITuneRequest *CurrentRequest,
+        [out, retval] ITuneRequest **TuneRequest);
+}
+
+[
+    object,
+    uuid(EFDA0C80-F395-42c3-9B3C-56B37DEC7BB7),
+    pointer_default(unique)
+]
+interface IGuideDataEvent : IUnknown
+{
+    HRESULT
+    GuideDataAcquired();
+
+    HRESULT ProgramChanged(
+        [in] VARIANT varProgramDescriptionID);
+
+    HRESULT ServiceChanged(
+        [in] VARIANT varServiceDescriptionID);
+
+    HRESULT ScheduleEntryChanged(
+        [in] VARIANT varScheduleEntryDescriptionID);
+
+    HRESULT ProgramDeleted(
+        [in] VARIANT varProgramDescriptionID);
+
+    HRESULT ServiceDeleted(
+        [in] VARIANT varServiceDescriptionID);
+
+    HRESULT ScheduleDeleted(
+        [in] VARIANT varScheduleEntryDescriptionID);
+}
+
+[
+    object,
+    uuid(88EC5E58-BB73-41d6-99CE-66C524B8B591),
+    pointer_default(unique)
+]
+interface IGuideDataProperty : IUnknown
+{
+    HRESULT 
+    get_Name(
+        [out] BSTR *pbstrName);
+
+    HRESULT
+    get_Language(
+        [out] long *idLang);
+
+    HRESULT
+    get_Value(
+        [out] VARIANT *pvar);
+}
+
+[
+    object,
+    uuid(AE44423B-4571-475c-AD2C-F40A771D80EF),
+    pointer_default(unique)
+]
+interface IEnumGuideDataProperties : IUnknown
+{
+    HRESULT
+    Next(
+        [in] unsigned long celt, 
+        [out] IGuideDataProperty **ppprop,
+        [out] unsigned long *pcelt);
+
+    HRESULT
+    Skip(
+        [in] unsigned long celt);
+
+    HRESULT
+    Reset();
+
+    HRESULT
+    Clone(
+        [out] IEnumGuideDataProperties **ppenum);
+}
+
+[
+    object,
+    uuid(1993299C-CED6-4788-87A3-420067DCE0C7),
+    pointer_default(unique)
+]
+interface IEnumTuneRequests : IUnknown
+{
+    HRESULT
+    Next(
+        [in] unsigned long celt,
+        [out] ITuneRequest **ppprop,
+        [out] unsigned long *pcelt);
+
+    HRESULT
+    Skip(
+        [in] unsigned long celt);
+
+    HRESULT
+    Reset();
+
+    HRESULT
+    Clone(
+        [out] IEnumTuneRequests **ppenum);
+}
+
+[
+    object,
+    uuid(61571138-5B01-43cd-AEAF-60B784A0BF93),
+    pointer_default(unique)
+]
+interface IGuideData : IUnknown
+{
+    HRESULT
+    GetServices(
+        [out, retval] IEnumTuneRequests ** ppEnumTuneRequests);
+
+    HRESULT
+    GetServiceProperties(
+        [in] ITuneRequest * pTuneRequest,
+        [out, retval] IEnumGuideDataProperties ** ppEnumProperties);
+
+    HRESULT
+    GetGuideProgramIDs(
+        [out, retval] IEnumVARIANT ** pEnumPrograms);
+
+    HRESULT
+    GetProgramProperties(
+        [in] VARIANT varProgramDescriptionID,
+        [out, retval] IEnumGuideDataProperties ** ppEnumProperties);
+
+    HRESULT
+    GetScheduleEntryIDs(
+        [out, retval] IEnumVARIANT ** pEnumScheduleEntries);
+
+    HRESULT
+    GetScheduleEntryProperties(
+        [in] VARIANT varScheduleEntryDescriptionID,
+        [out, retval] IEnumGuideDataProperties ** ppEnumProperties);
+}
+
+[
+    object,
+    uuid(4764ff7c-fa95-4525-af4d-d32236db9e38),
+    pointer_default(unique)
+]
+interface IGuideDataLoader : IUnknown
+{
+    HRESULT Init([in] IGuideData *pGuideStore);
+    HRESULT Terminate();
+};
+
+[
+    uuid(8224A083-7F8C-432D-B83E-3C5E9BDE3528),
+    version(1.0),
+]
+library PSISLOADLib
+{
+    importlib("stdole32.tlb");
+    importlib("stdole2.tlb");
+
+    [
+        uuid(14EB8748-1753-4393-95AE-4F7E7A87AAD6),
+        helpstring("TIFLoad Class")
+    ]
+    coclass TIFLoad
+    {
+        interface IGuideDataLoader;
+        interface IGuideDataEvent;
+    };
+};
+
index 8183bd3..1d91680 100644 (file)
@@ -3,6 +3,7 @@
 <module name="dxsdk" type="idlheader">
        <file>amstream.idl</file>
        <file>austream.idl</file>
+       <file>bdatif.idl</file>
        <file>ddstream.idl</file>
        <file>dmodshow.idl</file>
        <file>mixerocx.idl</file>
index 37da97e..97dfc1a 100644 (file)
@@ -70,14 +70,13 @@ CmpFreeKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
     KeAcquireGuardedMutex(&CmpAllocBucketLock);
     
     /* Sanity check on lock ownership */
-    //ASSERT((CmpIsKcbLockedExclusive(Kcb) == TRUE) ||
-    //       (CmpTestRegistryLockExclusive() == TRUE));
+    CMP_ASSERT_HASH_ENTRY_LOCK(Kcb->ConvKey);
     
     /* Add us to the free list */
     InsertTailList(&CmpFreeKCBListHead, &Kcb->FreeListEntry);
     
     /* Get the allocation page */
-    AllocPage = (PCM_ALLOC_PAGE)((ULONG_PTR)Kcb & 0xFFFFF000);
+    AllocPage = CmpGetAllocPageFromKcb(Kcb);
     
     /* Sanity check */
     ASSERT(AllocPage->FreeCount != CM_KCBS_PER_PAGE);
@@ -134,7 +133,7 @@ SearchKcbList:
                                            FreeListEntry);
             
             /* Get the allocation page */
-            AllocPage = (PCM_ALLOC_PAGE)((ULONG_PTR)CurrentKcb & 0xFFFFF000);
+            AllocPage = CmpGetAllocPageFromKcb(CurrentKcb);
             
             /* Decrease the free count */
             ASSERT(AllocPage->FreeCount != 0);
@@ -168,7 +167,7 @@ SearchKcbList:
                 /* Set it up */
                 CurrentKcb->PrivateAlloc = TRUE;
                 CurrentKcb->DelayCloseEntry = NULL;
-                InsertHeadList(&CmpFreeKCBListHead,
+                InsertTailList(&CmpFreeKCBListHead,
                                &CurrentKcb->FreeListEntry);
             }
             
@@ -178,9 +177,7 @@ SearchKcbList:
     }
 
     /* Allocate a KCB only */
-    CurrentKcb = CmpAllocate(sizeof(CM_KEY_CONTROL_BLOCK),
-                             TRUE,
-                             TAG_CM);
+    CurrentKcb = CmpAllocate(sizeof(CM_KEY_CONTROL_BLOCK), TRUE, TAG_CM);
     if (CurrentKcb)
     {
         /* Set it up */
@@ -219,7 +216,7 @@ SearchList:
         Entry->ListEntry.Flink = Entry->ListEntry.Blink = NULL;
         
         /* Grab the alloc page */
-        AllocPage = (PCM_ALLOC_PAGE)((ULONG_PTR)Entry & 0xFFFFF000);
+        AllocPage = CmpGetAllocPageFromDelayAlloc(Entry);
         
         /* Decrease free entries */
         ASSERT(AllocPage->FreeCount != 0);
@@ -278,7 +275,7 @@ CmpFreeDelayItem(PVOID Entry)
     InsertTailList(&CmpFreeDelayItemsListHead, &AllocEntry->ListEntry);
     
     /* Get the alloc page */
-    AllocPage = (PCM_ALLOC_PAGE)((ULONG_PTR)Entry & 0xFFFFF000);
+    AllocPage = CmpGetAllocPageFromDelayAlloc(Entry);
     ASSERT(AllocPage->FreeCount != CM_DELAYS_PER_PAGE);
     
     /* Increase the number of free items */
index ed3f3bf..581a336 100644 (file)
@@ -254,3 +254,25 @@ CmpConvertKcbSharedToExclusive(IN PCM_KEY_CONTROL_BLOCK k)
     ExReleasePushLock(&GET_HASH_ENTRY(CmpNameCacheTable,            \
                                       (k)).Lock);                   \
 }
+
+//
+// Asserts that either the registry or the KCB is locked
+//
+#define CMP_ASSERT_HASH_ENTRY_LOCK(k)                               \
+{                                                                   \
+    ASSERT(((GET_HASH_ENTRY(CmpCacheTable, k).Owner ==              \
+            KeGetCurrentThread())) ||                               \
+           (CmpTestRegistryLockExclusive() == TRUE));               \
+}
+
+//
+// Gets the page attached to the KCB
+//
+#define CmpGetAllocPageFromKcb(k)                                   \
+    (PCM_ALLOC_PAGE)(((ULONG_PTR)(k)) & ~(PAGE_SIZE - 1))
+
+//
+// Gets the page attached to the delayed allocation
+//
+#define CmpGetAllocPageFromDelayAlloc(a)                            \
+    (PCM_ALLOC_PAGE)(((ULONG_PTR)(a)) & ~(PAGE_SIZE - 1))
index 0cd9740..8417f27 100644 (file)
@@ -157,6 +157,8 @@ PopAddRemoveSysCapsCallback(IN PVOID NotificationStructure,
        BOOLEAN Arrival;
        ULONG Caps;
        NTSTATUS Status;
+       UNICODE_STRING DeviceName;
+       UNICODE_STRING DeviceNamePrefix = RTL_CONSTANT_STRING(L"\\??\\");
 
        DPRINT("PopAddRemoveSysCapsCallback(%p %p)\n",
                NotificationStructure, Context);
@@ -177,10 +179,20 @@ PopAddRemoveSysCapsCallback(IN PVOID NotificationStructure,
        {
                DPRINT("Arrival of %wZ\n", Notification->SymbolicLinkName);
 
+               DeviceName.Length = 0;
+               DeviceName.MaximumLength = Notification->SymbolicLinkName->MaximumLength + DeviceNamePrefix.MaximumLength;
+               DeviceName.Buffer = ExAllocatePool(PagedPool, DeviceName.MaximumLength);
+               if (!DeviceName.Buffer) return STATUS_INSUFFICIENT_RESOURCES;
+
+               RtlCopyUnicodeString(&DeviceName, &DeviceNamePrefix);
+               RtlAppendUnicodeStringToString(&DeviceName, Notification->SymbolicLinkName);
+
+               DPRINT("Opening handle to %wZ\n", &DeviceName);
+
                /* Open the device */
                InitializeObjectAttributes(
                        &ObjectAttributes,
-                       Notification->SymbolicLinkName,
+                       &DeviceName,
                        OBJ_KERNEL_HANDLE,
                        NULL,
                        NULL);