[WDF] Fix KMDF so it can compile with ReactOS SDK

Not all files are included, but these are necessary to compile cdrom driver.
So far it can only be statically linked with drivers, a proper
implementation requires wdfldr helper driver
This commit is contained in:
Victor Perevertkin 2020-10-16 06:30:51 +03:00
parent 8a978a179f
commit 1f377076d7
No known key found for this signature in database
GPG key ID: C750B7222E9C7830
258 changed files with 4047 additions and 2387 deletions

View file

@ -0,0 +1,72 @@
#include <stdarg.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include <ntverp.h>
extern "C" {
#include <ntddk.h>
#include <ntstrsafe.h>
}
#define FX_DYNAMICS_GENERATE_TABLE 1
#include "fx.hpp"
// #include <fxldr.h>
// #include "fxbugcheck.h"
//----------------------------------------- ------------------------------------
extern "C" {
#include "fxdynamics.h"
// #include "FxLibraryCommon.h"
typedef VOID (*WDFFUNC) (VOID);
const WDFFUNC *WdfFunctions_01017 = (WDFFUNC *)(&WdfVersion.Functions);
// DECLSPEC_ALIGN(MAX_NATURAL_ALIGNMENT) UINT8 WdfDriverGlobalsVal[248] = { 0 }; // sizeof(FX_DRIVER_GLOBALS)
// PWDF_DRIVER_GLOBALS WdfDriverGlobals = &((PFX_DRIVER_GLOBALS)&WdfDriverGlobalsVal)->Public;
WDF_BIND_INFO WdfBindInfo = {0};
PWDF_DRIVER_GLOBALS WdfDriverGlobals;
#define KMDF_DEFAULT_NAME "Wdf01000"
PCHAR WdfLdrType = KMDF_DEFAULT_NAME;
WDFAPI
NTSTATUS
STDCALL
WdfApiNotImplemented()
{
DbgPrint("ReactOS KMDF: %s non-implemented API called\n");
__debugbreak();
return STATUS_UNSUCCESSFUL;
}
// called in WdfDriverCreate in fxdriverapi.cpp
VOID
RosInitWdf()
{
WdfDriverGlobals = FxAllocateDriverGlobals();
PFX_DRIVER_GLOBALS fxDriverGlobals = GetFxDriverGlobals(WdfDriverGlobals);
WdfBindInfo.Size = sizeof(WDF_BIND_INFO);
WdfBindInfo.Version.Major = 1;
WdfBindInfo.Version.Minor = 9;
WdfBindInfo.Version.Build = 7600;
WdfBindInfo.FuncCount = WdfVersion.FuncCount;
WdfBindInfo.FuncTable = (WDFFUNC *)(&WdfVersion.Functions);
fxDriverGlobals->WdfBindInfo = &WdfBindInfo;
}
void
__cxa_pure_virtual()
{
__debugbreak();
}
} // extern "C"