dll: add FSP_SERVICE and EventLog functionality

This commit is contained in:
Bill Zissimopoulos
2016-05-06 11:41:45 -07:00
parent de973fa5ab
commit d7a6f33d26
8 changed files with 554 additions and 0 deletions

View File

@ -17,6 +17,25 @@
#include <dll/library.h>
static ULONG (WINAPI *FspRtlNtStatusToDosError)(NTSTATUS Status);
VOID FspNtStatusInitialize(VOID)
{
/*
* This function is called during DLL_PROCESS_ATTACH. We must therefore keep initialization
* tasks to a minimum.
*
* GetModuleHandle/GetProcAddress is allowed (because they are kernel32 API's)! See:
* https://msdn.microsoft.com/en-us/library/windows/desktop/dn633971(v=vs.85).aspx
*/
HANDLE Handle;
Handle = GetModuleHandleW(L"ntdll.dll");
if (0 != Handle)
FspRtlNtStatusToDosError = (PVOID)GetProcAddress(Handle, "RtlNtStatusToDosError");
}
FSP_API NTSTATUS FspNtStatusFromWin32(DWORD Error)
{
switch (Error)
@ -26,3 +45,11 @@ FSP_API NTSTATUS FspNtStatusFromWin32(DWORD Error)
return STATUS_ACCESS_DENIED;
}
}
FSP_API DWORD FspWin32FromNtStatus(NTSTATUS Status)
{
if (0 == FspRtlNtStatusToDosError)
return ERROR_MR_MID_NOT_FOUND;
return FspRtlNtStatusToDosError(Status);
}