summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2018-05-17 22:53:14 +0800
committerruki <[email protected]>2018-05-17 11:19:28 +0800
commit344d26e6176003b72e8af45ff9202b2f7d11d3dc (patch)
tree904de04707b7b8e144046d7f9416e6e4cebba6e9
parent9a143be04c04ab253fc31776ab740f1ccd42e04d (diff)
add wdk.wdm rules
-rw-r--r--tests/projects/wdk/wdm/msdsm/SampleDSM.inf (renamed from tests/projects/wdk/kmdf/msdsm/SampleDSM.inf)bin5354 -> 5354 bytes
-rw-r--r--tests/projects/wdk/wdm/msdsm/dsmmain.c (renamed from tests/projects/wdk/kmdf/msdsm/dsmmain.c)0
-rw-r--r--tests/projects/wdk/wdm/msdsm/dsmtrace.mof (renamed from tests/projects/wdk/kmdf/msdsm/dsmtrace.mof)0
-rw-r--r--tests/projects/wdk/wdm/msdsm/intrface.c (renamed from tests/projects/wdk/kmdf/msdsm/intrface.c)0
-rw-r--r--tests/projects/wdk/wdm/msdsm/msdsm.h (renamed from tests/projects/wdk/kmdf/msdsm/msdsm.h)0
-rw-r--r--tests/projects/wdk/wdm/msdsm/msdsm.mof (renamed from tests/projects/wdk/kmdf/msdsm/msdsm.mof)0
-rw-r--r--tests/projects/wdk/wdm/msdsm/msdsm.rc (renamed from tests/projects/wdk/kmdf/msdsm/msdsm.rc)0
-rw-r--r--tests/projects/wdk/wdm/msdsm/msdsmdsm.mof (renamed from tests/projects/wdk/kmdf/msdsm/msdsmdsm.mof)0
-rw-r--r--tests/projects/wdk/wdm/msdsm/precomp.h (renamed from tests/projects/wdk/kmdf/msdsm/precomp.h)0
-rw-r--r--tests/projects/wdk/wdm/msdsm/precompsrc.c (renamed from tests/projects/wdk/kmdf/msdsm/precompsrc.c)0
-rw-r--r--tests/projects/wdk/wdm/msdsm/prototypes.h (renamed from tests/projects/wdk/kmdf/msdsm/prototypes.h)0
-rw-r--r--tests/projects/wdk/wdm/msdsm/trace.h (renamed from tests/projects/wdk/kmdf/msdsm/trace.h)0
-rw-r--r--tests/projects/wdk/wdm/msdsm/utils.c (renamed from tests/projects/wdk/kmdf/msdsm/utils.c)0
-rw-r--r--tests/projects/wdk/wdm/msdsm/wmi.c (renamed from tests/projects/wdk/kmdf/msdsm/wmi.c)0
-rw-r--r--tests/projects/wdk/wdm/msdsm/xmake.lua (renamed from tests/projects/wdk/kmdf/msdsm/xmake.lua)5
-rw-r--r--tests/projects/wdk/wdm/perfcounters/kcs.c (renamed from tests/projects/wdk/kmdf/perfcounters/kcs.c)0
-rw-r--r--tests/projects/wdk/wdm/perfcounters/kcs.h (renamed from tests/projects/wdk/kmdf/perfcounters/kcs.h)0
-rw-r--r--tests/projects/wdk/wdm/perfcounters/kcs.man (renamed from tests/projects/wdk/kmdf/perfcounters/kcs.man)0
-rw-r--r--tests/projects/wdk/wdm/perfcounters/kcs.rc (renamed from tests/projects/wdk/kmdf/perfcounters/kcs.rc)0
-rw-r--r--tests/projects/wdk/wdm/perfcounters/xmake.lua (renamed from tests/projects/wdk/kmdf/perfcounters/xmake.lua)2
-rw-r--r--xmake/rules/wdk/inf/xmake.lua2
-rw-r--r--xmake/rules/wdk/load.lua89
-rw-r--r--xmake/rules/wdk/tracewpp/xmake.lua2
-rw-r--r--xmake/rules/wdk/xmake.lua23
24 files changed, 116 insertions, 7 deletions
diff --git a/tests/projects/wdk/kmdf/msdsm/SampleDSM.inf b/tests/projects/wdk/wdm/msdsm/SampleDSM.inf
index f632f6e50..f632f6e50 100644
--- a/tests/projects/wdk/kmdf/msdsm/SampleDSM.inf
+++ b/tests/projects/wdk/wdm/msdsm/SampleDSM.inf
Binary files differ
diff --git a/tests/projects/wdk/kmdf/msdsm/dsmmain.c b/tests/projects/wdk/wdm/msdsm/dsmmain.c
index bdf875184..bdf875184 100644
--- a/tests/projects/wdk/kmdf/msdsm/dsmmain.c
+++ b/tests/projects/wdk/wdm/msdsm/dsmmain.c
diff --git a/tests/projects/wdk/kmdf/msdsm/dsmtrace.mof b/tests/projects/wdk/wdm/msdsm/dsmtrace.mof
index d9e8cf4cc..d9e8cf4cc 100644
--- a/tests/projects/wdk/kmdf/msdsm/dsmtrace.mof
+++ b/tests/projects/wdk/wdm/msdsm/dsmtrace.mof
diff --git a/tests/projects/wdk/kmdf/msdsm/intrface.c b/tests/projects/wdk/wdm/msdsm/intrface.c
index eeebf7f93..eeebf7f93 100644
--- a/tests/projects/wdk/kmdf/msdsm/intrface.c
+++ b/tests/projects/wdk/wdm/msdsm/intrface.c
diff --git a/tests/projects/wdk/kmdf/msdsm/msdsm.h b/tests/projects/wdk/wdm/msdsm/msdsm.h
index e1ddeb52d..e1ddeb52d 100644
--- a/tests/projects/wdk/kmdf/msdsm/msdsm.h
+++ b/tests/projects/wdk/wdm/msdsm/msdsm.h
diff --git a/tests/projects/wdk/kmdf/msdsm/msdsm.mof b/tests/projects/wdk/wdm/msdsm/msdsm.mof
index 53ee61392..53ee61392 100644
--- a/tests/projects/wdk/kmdf/msdsm/msdsm.mof
+++ b/tests/projects/wdk/wdm/msdsm/msdsm.mof
diff --git a/tests/projects/wdk/kmdf/msdsm/msdsm.rc b/tests/projects/wdk/wdm/msdsm/msdsm.rc
index 743640342..743640342 100644
--- a/tests/projects/wdk/kmdf/msdsm/msdsm.rc
+++ b/tests/projects/wdk/wdm/msdsm/msdsm.rc
diff --git a/tests/projects/wdk/kmdf/msdsm/msdsmdsm.mof b/tests/projects/wdk/wdm/msdsm/msdsmdsm.mof
index f85eea270..f85eea270 100644
--- a/tests/projects/wdk/kmdf/msdsm/msdsmdsm.mof
+++ b/tests/projects/wdk/wdm/msdsm/msdsmdsm.mof
diff --git a/tests/projects/wdk/kmdf/msdsm/precomp.h b/tests/projects/wdk/wdm/msdsm/precomp.h
index bca8595db..bca8595db 100644
--- a/tests/projects/wdk/kmdf/msdsm/precomp.h
+++ b/tests/projects/wdk/wdm/msdsm/precomp.h
diff --git a/tests/projects/wdk/kmdf/msdsm/precompsrc.c b/tests/projects/wdk/wdm/msdsm/precompsrc.c
index 5944cf515..5944cf515 100644
--- a/tests/projects/wdk/kmdf/msdsm/precompsrc.c
+++ b/tests/projects/wdk/wdm/msdsm/precompsrc.c
diff --git a/tests/projects/wdk/kmdf/msdsm/prototypes.h b/tests/projects/wdk/wdm/msdsm/prototypes.h
index ebcf42029..ebcf42029 100644
--- a/tests/projects/wdk/kmdf/msdsm/prototypes.h
+++ b/tests/projects/wdk/wdm/msdsm/prototypes.h
diff --git a/tests/projects/wdk/kmdf/msdsm/trace.h b/tests/projects/wdk/wdm/msdsm/trace.h
index b9449cc8f..b9449cc8f 100644
--- a/tests/projects/wdk/kmdf/msdsm/trace.h
+++ b/tests/projects/wdk/wdm/msdsm/trace.h
diff --git a/tests/projects/wdk/kmdf/msdsm/utils.c b/tests/projects/wdk/wdm/msdsm/utils.c
index 91d8f44ce..91d8f44ce 100644
--- a/tests/projects/wdk/kmdf/msdsm/utils.c
+++ b/tests/projects/wdk/wdm/msdsm/utils.c
diff --git a/tests/projects/wdk/kmdf/msdsm/wmi.c b/tests/projects/wdk/wdm/msdsm/wmi.c
index 0ee882192..0ee882192 100644
--- a/tests/projects/wdk/kmdf/msdsm/wmi.c
+++ b/tests/projects/wdk/wdm/msdsm/wmi.c
diff --git a/tests/projects/wdk/kmdf/msdsm/xmake.lua b/tests/projects/wdk/wdm/msdsm/xmake.lua
index 31dfaf236..66f09a9b1 100644
--- a/tests/projects/wdk/kmdf/msdsm/xmake.lua
+++ b/tests/projects/wdk/wdm/msdsm/xmake.lua
@@ -6,7 +6,7 @@ add_rules("mode.debug", "mode.release")
target("msdsm")
-- add rules
- add_rules("wdk.kmdf.driver")
+ add_rules("wdk.wdm.driver")
-- add flags for rule: wdk.tracewpp
add_values("wdk.tracewpp.flags", "-func:TracePrint((LEVEL,FLAGS,MSG,...))")
@@ -25,6 +25,3 @@ target("msdsm")
-- add links
add_links("mpio", "ucrt")
- -- set entry
- add_ldflags("-entry:GsDriverEntry" .. (is_arch("x86") and "@8" or ""), {force = true})
-
diff --git a/tests/projects/wdk/kmdf/perfcounters/kcs.c b/tests/projects/wdk/wdm/perfcounters/kcs.c
index 9996addcb..9996addcb 100644
--- a/tests/projects/wdk/kmdf/perfcounters/kcs.c
+++ b/tests/projects/wdk/wdm/perfcounters/kcs.c
diff --git a/tests/projects/wdk/kmdf/perfcounters/kcs.h b/tests/projects/wdk/wdm/perfcounters/kcs.h
index f575b816d..f575b816d 100644
--- a/tests/projects/wdk/kmdf/perfcounters/kcs.h
+++ b/tests/projects/wdk/wdm/perfcounters/kcs.h
diff --git a/tests/projects/wdk/kmdf/perfcounters/kcs.man b/tests/projects/wdk/wdm/perfcounters/kcs.man
index a5a16ffbd..a5a16ffbd 100644
--- a/tests/projects/wdk/kmdf/perfcounters/kcs.man
+++ b/tests/projects/wdk/wdm/perfcounters/kcs.man
diff --git a/tests/projects/wdk/kmdf/perfcounters/kcs.rc b/tests/projects/wdk/wdm/perfcounters/kcs.rc
index 7ebb6b97b..7ebb6b97b 100644
--- a/tests/projects/wdk/kmdf/perfcounters/kcs.rc
+++ b/tests/projects/wdk/wdm/perfcounters/kcs.rc
diff --git a/tests/projects/wdk/kmdf/perfcounters/xmake.lua b/tests/projects/wdk/wdm/perfcounters/xmake.lua
index 17fd5d5cb..fb0bc3d54 100644
--- a/tests/projects/wdk/kmdf/perfcounters/xmake.lua
+++ b/tests/projects/wdk/wdm/perfcounters/xmake.lua
@@ -6,7 +6,7 @@ add_rules("mode.debug", "mode.release")
target("kcs")
-- add rules
- add_rules("wdk.kmdf.driver")
+ add_rules("wdk.wdm.driver")
-- add flags for rule: wdk.man
add_values("wdk.man.prefix", "Kcs")
diff --git a/xmake/rules/wdk/inf/xmake.lua b/xmake/rules/wdk/inf/xmake.lua
index 83d46db8e..7c3e37790 100644
--- a/xmake/rules/wdk/inf/xmake.lua
+++ b/xmake/rules/wdk/inf/xmake.lua
@@ -72,7 +72,7 @@ rule("wdk.inf")
end
local wdk = target:data("wdk")
if wdk then
- if wdk.kmdfver and (target:rule("wdk.kmdf.driver") or target:rule("wdk.kmdf.binary")) then
+ if wdk.kmdfver and (target:rule("wdk.kmdf.driver") or target:rule("wdk.kmdf.binary") or target:rule("wdk.wdm.driver") or target:rule("wdk.wdm.binary")) then
table.insert(args, "-k")
table.insert(args, wdk.kmdfver)
elseif wdk.umdfver then
diff --git a/xmake/rules/wdk/load.lua b/xmake/rules/wdk/load.lua
index 3e8b54a9c..6af486a12 100644
--- a/xmake/rules/wdk/load.lua
+++ b/xmake/rules/wdk/load.lua
@@ -197,3 +197,92 @@ function kmdf_binary(target)
target:add("links", "kernel32", "user32", "gdi32", "winspool", "comdlg32")
target:add("links", "advapi32", "shell32", "ole32", "oleaut32", "uuid", "odbc32", "odbccp32", "setupapi")
end
+
+-- load for wdm driver
+function wdm_driver(target)
+
+ -- get wdk
+ local wdk = target:data("wdk")
+
+ -- set kind
+ target:set("kind", "binary")
+
+ -- set filename: xxx.sys
+ target:set("filename", target:basename() .. ".sys")
+
+ -- add defines
+ local arch = config.arch()
+ local kmdfver = wdk.kmdfver:split('%.')
+ if arch == "x64" then
+ target:add("defines", "_WIN64", "_AMD64_", "AMD64")
+ else
+ target:add("cxflags", "-Gz", {force = true})
+ target:add("defines", "_X86_=1", "i386=1", "STD_CALL")
+ end
+ target:add("defines", "WIN32_LEAN_AND_MEAN=1", "_WIN32_WINNT=0x0A00", "WINVER=0x0A00", "WINNT=1", "NTDDI_VERSION=0x0A000004", "_WINDLL")
+ target:add("defines", "KMDF_VERSION_MAJOR=" .. kmdfver[1], "KMDF_VERSION_MINOR=" .. kmdfver[2], "KMDF_USING_NTSTATUS")
+
+ -- add include directories
+ target:add("includedirs", path.join(wdk.includedir, wdk.sdkver, "km"))
+ target:add("includedirs", path.join(wdk.includedir, "wdf", "kmdf", wdk.kmdfver))
+
+ -- add link directories
+ target:add("linkdirs", path.join(wdk.libdir, wdk.sdkver, "km", arch))
+ target:add("linkdirs", path.join(wdk.libdir, "wdf", "kmdf", arch, wdk.kmdfver))
+
+ -- add links
+ target:add("links", "BufferOverflowFastFailK", "ntoskrnl", "hal", "wmilib", "ntstrsafe")
+
+ -- compile as kernel driver
+ target:add("cxflags", "-kernel", {force = true})
+ target:add("ldflags", "-kernel", "-driver", {force = true})
+
+ -- set subsystem: native, TODO 10.00
+ target:add("ldflags", "-subsystem:native,10.00", {force = true})
+
+ -- set default driver entry if does not exist
+ local entry = false
+ for _, ldflag in ipairs(target:get("ldflags")) do
+ ldflag = ldflag:lower()
+ if ldflag:find("[/%-]entry:") then
+ entry = true
+ break
+ end
+ end
+ if not entry then
+ target:add("ldflags", "-entry:GsDriverEntry" .. (is_arch("x86") and "@8" or ""), {force = true})
+ end
+end
+
+-- load for wdm binary
+function wdm_binary(target)
+
+ -- get wdk
+ local wdk = target:data("wdk")
+
+ -- set kind
+ target:set("kind", "binary")
+
+ -- add defines
+ local arch = config.arch()
+ local kmdfver = wdk.kmdfver:split('%.')
+ if arch == "x64" then
+ target:add("defines", "_WIN64", "_AMD64_", "AMD64")
+ else
+ target:add("defines", "_X86_=1", "i386=1", "STD_CALL")
+ end
+ target:add("defines", "WIN32_LEAN_AND_MEAN=1", "_WIN32_WINNT=0x0A00", "WINVER=0x0A00", "WINNT=1", "NTDDI_VERSION=0x0A000004", "_WINDLL")
+ target:add("defines", "KMDF_VERSION_MAJOR=" .. kmdfver[1], "KMDF_VERSION_MINOR=" .. kmdfver[2])
+
+ -- add include directories
+ target:add("includedirs", path.join(wdk.includedir, wdk.sdkver, "km"))
+ target:add("includedirs", path.join(wdk.includedir, "wdf", "kmdf", wdk.kmdfver))
+
+ -- add link directories
+ target:add("linkdirs", path.join(wdk.libdir, wdk.sdkver, "km", arch))
+ target:add("linkdirs", path.join(wdk.libdir, "wdf", "kmdf", arch, wdk.kmdfver))
+
+ -- add links
+ target:add("links", "kernel32", "user32", "gdi32", "winspool", "comdlg32")
+ target:add("links", "advapi32", "shell32", "ole32", "oleaut32", "uuid", "odbc32", "odbccp32", "setupapi")
+end
diff --git a/xmake/rules/wdk/tracewpp/xmake.lua b/xmake/rules/wdk/tracewpp/xmake.lua
index 382669584..1d86d3751 100644
--- a/xmake/rules/wdk/tracewpp/xmake.lua
+++ b/xmake/rules/wdk/tracewpp/xmake.lua
@@ -72,7 +72,7 @@ rule("wdk.tracewpp")
-- init args
local args = {}
- if target:rule("wdk.kmdf.driver") then
+ if target:rule("wdk.kmdf.driver") or target:rule("wdk.wdm.driver") then
table.insert(args, "-km")
table.insert(args, "-gen:{km-WdfDefault.tpl}*.tmh")
end
diff --git a/xmake/rules/wdk/xmake.lua b/xmake/rules/wdk/xmake.lua
index 2415e17e7..95e9b2a78 100644
--- a/xmake/rules/wdk/xmake.lua
+++ b/xmake/rules/wdk/xmake.lua
@@ -82,3 +82,26 @@ rule("wdk.kmdf.binary")
target:data_add("wdk.cleanfiles", os.files(path.join(target:targetdir(), "*.dll")))
end)
+
+-- define rule: wdm driver
+rule("wdk.wdm.driver")
+
+ -- add rules
+ add_deps("wdk.inf", "wdk.man", "wdk.mc", "wdk.mof")
+
+ -- on load
+ on_load(function (target)
+ import("load").wdm_driver(target)
+ end)
+
+-- define rule: wdm binary
+rule("wdk.wdm.binary")
+
+ -- add rules
+ add_deps("wdk.inf", "wdk.man", "wdk.mc", "wdk.mof")
+
+ -- on load
+ on_load(function (target)
+ import("load").wdm_binary(target)
+ end)
+