set_module_type(kmtest_drv kernelmodedriver)
target_link_libraries(kmtest_drv kmtest_printf ${PSEH_LIB})
add_importlibs(kmtest_drv ntoskrnl hal)
-set_property(TARGET kmtest_drv PROPERTY COMPILE_DEFINITIONS KMT_KERNEL_MODE)
+set_property(TARGET kmtest_drv PROPERTY COMPILE_DEFINITIONS KMT_KERNEL_MODE NTDDI_VERSION=NTDDI_WS03SP1)
-add_cd_file(TARGET kmtest_drv DESTINATION reactos/system32/drivers FOR all)
+add_cd_file(TARGET kmtest_drv DESTINATION reactos/bin FOR all)
add_library(kmtest_printf
kmtest_drv/printf_stubs.c
add_importlibs(example_drv ntoskrnl hal)
set_property(TARGET example_drv PROPERTY COMPILE_DEFINITIONS KMT_STANDALONE_DRIVER)
-add_cd_file(TARGET example_drv DESTINATION reactos/system32/drivers FOR all)
+add_cd_file(TARGET example_drv DESTINATION reactos/bin FOR all)
-<module name="example_drv" type="kernelmodedriver" installbase="system32/drivers" installname="example_drv.sys">
+<module name="example_drv" type="kernelmodedriver" installbase="bin" installname="example_drv.sys">
<include base="kmtest_drv">include</include>
<library>ntoskrnl</library>
<library>hal</library>
-<module name="kmtest" type="win32cui" installbase="system32" installname="kmtest.exe">
+<module name="kmtest" type="win32cui" installbase="bin" installname="kmtest.exe">
<include base="kmtest">include</include>
<library>advapi32</library>
<define name="KMT_USER_MODE" />
LocalFree(Message);
}
+/**
+ * @name CompareTestNames
+ *
+ * strcmp that skips a leading '-' on either string if present
+ *
+ * @param Str1
+ * @param Str2
+ * @return see strcmp
+ */
+static
+INT
+CompareTestNames(
+ IN PCSTR Str1,
+ IN PCSTR Str2)
+{
+ if (*Str1 == '-')
+ ++Str1;
+ if (*Str2 == '-')
+ ++Str2;
+ while (*Str1 && *Str1 == *Str2)
+ {
+ ++Str1;
+ ++Str2;
+ }
+ return *Str1 - *Str2;
+}
+
/**
* @name ListTests
*
}
else
{
- int Result = strcmp(TestEntry->TestName, TestName);
+ INT Result = CompareTestNames(TestEntry->TestName, TestName);
if (Result == 0)
{
-<module name="kmtest_drv" type="kernelmodedriver" installbase="system32/drivers" installname="kmtest_drv.sys">
+<module name="kmtest_drv" type="kernelmodedriver" installbase="bin" installname="kmtest_drv.sys">
<include base="kmtest_drv">include</include>
<library>ntoskrnl</library>
<library>hal</library>
<library>pseh</library>
<library>kmtest_printf</library>
<define name="KMT_KERNEL_MODE" />
+ <define name="NTDDI_VERSION">NTDDI_WS03SP1</define>
<directory name="kmtest_drv">
<file>kmtest_drv.c</file>
<file>testlist.c</file>
const KMT_TEST TestList[] =
{
- { "Example", Test_Example },
{ "ExHardError", Test_ExHardError },
{ "-ExHardErrorInteractive", Test_ExHardErrorInteractive },
{ "ExInterlocked", Test_ExInterlocked },
{ "ExPools", Test_ExPools },
{ "ExResource", Test_ExResource },
{ "ExTimer", Test_ExTimer },
+ { "Example", Test_Example },
{ "FsRtlExpression", Test_FsRtlExpression },
{ "IoDeviceInterface", Test_IoDeviceInterface },
{ "IoIrp", Test_IoIrp },
__declspec(dllimport) int __stdcall Exi386InterlockedIncrementLong(long *);
__declspec(dllimport) int __stdcall Exi386InterlockedDecrementLong(long *);
-#undef NTDDI_VERSION
-#define NTDDI_VERSION NTDDI_WS03SP1
#include <ntddk.h>
#include <pseh/pseh2.h>
PKSPIN_LOCK pSpinLock = &SpinLock;
PROCESSOR_STATE OldState, NewState;
- /* on x86, most of these are supported intrinsicly and don't need a spinlock! */
+ /* on x86, most of these are supported intrinsically and don't need a spinlock! */
#if defined _M_IX86 || defined _M_AMD64
pSpinLock = NULL;
#endif
* PROGRAMMER: Thomas Faber <thfabba@gmx.de>
*/
-#undef NTDDI_VERSION
-#define NTDDI_VERSION NTDDI_WS03SP1
#include <ntddk.h>
#include <ntifs.h>
#include <ndk/extypes.h>
* PROGRAMMER: Thomas Faber <thfabba@gmx.de>
*/
-#undef NTDDI_VERSION
-#define NTDDI_VERSION NTDDI_WS03SP1
#include <ntddk.h>
#include <kmt_test.h>
IN PVOID SystemArgument1,
IN PVOID SystemArgument2)
{
- PKPCR Pcr = KeGetPcr();
- PKPRCB Prcb = Pcr->Prcb;
+ PKPRCB Prcb = KeGetCurrentPrcb();
ok_irql(DISPATCH_LEVEL);
InterlockedIncrement(&DpcCount);
ok_eq_pointer(Dpc->SystemArgument1, SystemArgument1);
ok_eq_pointer(Dpc->SystemArgument2, SystemArgument2);
ok_eq_pointer(Dpc->DpcData, NULL);
-
+
ok_eq_uint(Prcb->DpcRoutineActive, 1);
/* this DPC is not in the list anymore, but it was at the head! */
ok_eq_pointer(Prcb->DpcData[DPC_NORMAL].DpcListHead.Flink, Dpc->DpcListEntry.Flink);