Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "dep/wil"]
path = dep/wil
url = https://github.com/microsoft/wil
1 change: 1 addition & 0 deletions dep/wil
Submodule wil added at c7bfb4
8 changes: 7 additions & 1 deletion inc/eclib.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,13 @@ SOFTWARE.

#pragma once

#define ECLIB_API __declspec(dllexport)
#ifdef __cplusplus
#define EXTERN_C extern "C"
#else
#define EXTERN_C
#endif

#define ECLIB_API EXTERN_C __declspec(dllexport)

ECLIB_API int GetKMDFDriverHandle(
_In_ DWORD flags,
Expand Down
42 changes: 21 additions & 21 deletions lib/eclib.c → lib/eclib.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ SOFTWARE.
#include "..\inc\eclib.h"
#include "..\inc\ectest.h"

#include <wil/resource.h>
#include <wil/result.h>

#define MAX_DEVPATH_LENGTH 64

// GUID defined in the KMDF INX file for ectest.sys
Expand Down Expand Up @@ -195,34 +198,31 @@ int EvaluateAcpi(

// Look up handle to ACPI entry
wchar_t* dpath = GetGUIDPath(GUID_DEVCLASS_ECTEST, L"ETST0001", pathbuf, sizeof(pathbuf));
if (dpath == NULL) {
if (dpath == nullptr) {
return ERROR_INVALID_PARAMETER;
}

HANDLE hDevice = CreateFile(dpath,
wil::unique_handle hDevice(CreateFile(dpath,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);

if (hDevice != INVALID_HANDLE_VALUE) {
if( DeviceIoControl(hDevice,
(DWORD)IOCTL_ACPI_EVAL_METHOD_EX,
acpi_input,
(DWORD)input_len,
buffer,
(DWORD)*buf_len,
&bytesReturned,
NULL) == TRUE )
{
*buf_len = bytesReturned;
return ERROR_SUCCESS;
}
}

return ERROR_INVALID_PARAMETER;
NULL));

RETURN_LAST_ERROR_IF(!hDevice.is_valid());
RETURN_IF_WIN32_BOOL_FALSE(DeviceIoControl(
hDevice.get(),
static_cast<DWORD>(IOCTL_ACPI_EVAL_METHOD_EX),
acpi_input,
static_cast<DWORD>(input_len),
buffer,
static_cast<DWORD>(*buf_len),
&bytesReturned,
nullptr));

*buf_len = bytesReturned;
return ERROR_SUCCESS;
}

/*
Expand Down Expand Up @@ -314,7 +314,7 @@ UINT32 WaitForNotification(UINT32 event)
// Make sure Initialization has been done
if(g_notify.handle == INVALID_HANDLE_VALUE) {
return 0;
}
}

// Loop until we get event we are looking for
for(;;) {
Expand Down
13 changes: 7 additions & 6 deletions lib/eclib.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -97,11 +97,16 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<ItemDefinitionGroup>
<ClCompile>
<LanguageStandard>stdcpp20</LanguageStandard>
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(WindowsSdkDir)\Include\$(Version_Number)\um;$(WindowsSdkDir)\Include\$(Version_Number)\shared;$(WindowsSdkDir)\Include\$(Version_Number)\ucrt;$(MSBuildThisFileDirectory)\..\dep\wil\include</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(WindowsSdkDir)\Include\$(Version_Number)\um;$(WindowsSdkDir)\Include\$(Version_Number)\shared;$(WindowsSdkDir)\Include\$(Version_Number)\ucrt</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
Expand All @@ -118,7 +123,6 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(WindowsSdkDir)\Include\$(Version_Number)\um;$(WindowsSdkDir)\Include\$(Version_Number)\shared;$(WindowsSdkDir)\Include\$(Version_Number)\ucrt</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
Expand All @@ -133,7 +137,6 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(WindowsSdkDir)\Include\$(Version_Number)\um;$(WindowsSdkDir)\Include\$(Version_Number)\shared;$(WindowsSdkDir)\Include\$(Version_Number)\ucrt</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
Expand Down Expand Up @@ -165,7 +168,6 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(WindowsSdkDir)\Include\$(Version_Number)\um;$(WindowsSdkDir)\Include\$(Version_Number)\shared;$(WindowsSdkDir)\Include\$(Version_Number)\ucrt</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
Expand All @@ -185,7 +187,6 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(WindowsSdkDir)\Include\$(Version_Number)\um;$(WindowsSdkDir)\Include\$(Version_Number)\shared;$(WindowsSdkDir)\Include\$(Version_Number)\ucrt</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
Expand All @@ -200,7 +201,7 @@
<ClInclude Include="eclib.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="eclib.c" />
<ClCompile Include="eclib.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
Expand Down
Loading