diff options
| author | ruki <[email protected]> | 2018-05-17 22:53:14 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2018-05-17 11:19:28 +0800 |
| commit | 344d26e6176003b72e8af45ff9202b2f7d11d3dc (patch) | |
| tree | 904de04707b7b8e144046d7f9416e6e4cebba6e9 | |
| parent | 9a143be04c04ab253fc31776ab740f1ccd42e04d (diff) | |
add wdk.wdm rules
| -rw-r--r-- | tests/projects/wdk/wdm/msdsm/SampleDSM.inf (renamed from tests/projects/wdk/kmdf/msdsm/SampleDSM.inf) | bin | 5354 -> 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.lua | 2 | ||||
| -rw-r--r-- | xmake/rules/wdk/load.lua | 89 | ||||
| -rw-r--r-- | xmake/rules/wdk/tracewpp/xmake.lua | 2 | ||||
| -rw-r--r-- | xmake/rules/wdk/xmake.lua | 23 |
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 Binary files differindex f632f6e50..f632f6e50 100644 --- a/tests/projects/wdk/kmdf/msdsm/SampleDSM.inf +++ b/tests/projects/wdk/wdm/msdsm/SampleDSM.inf 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) + |
