* PROJECT: ReactOS kernel-mode tests
* LICENSE: GPLv2+ - See COPYING in the top level directory
* PURPOSE: Kernel-Mode Test Suite Loader service control functions
- * PROGRAMMER: Thomas Faber <thfabba@gmx.de>
+ * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org>
*/
#include <kmt_test.h>
assert(ServiceHandle);
assert(ServiceName && ServicePath);
- if (!GetCurrentDirectory(sizeof DriverPath / sizeof DriverPath[0], DriverPath))
+ if (!GetModuleFileName(NULL, DriverPath, sizeof DriverPath / sizeof DriverPath[0]))
error_goto(Error, cleanup);
- if (DriverPath[wcslen(DriverPath) - 1] != L'\\')
- {
- DriverPath[wcslen(DriverPath) + 1] = L'\0';
- DriverPath[wcslen(DriverPath)] = L'\\';
- }
+ assert(wcsrchr(DriverPath, L'\\') != NULL);
+ wcsrchr(DriverPath, L'\\')[1] = L'\0';
result = StringCbCat(DriverPath, sizeof DriverPath, ServicePath);
if (FAILED(result))
error_value_goto(Error, result, cleanup);
+ if (GetFileAttributes(DriverPath) == INVALID_FILE_ATTRIBUTES)
+ error_goto(Error, cleanup);
+
*ServiceHandle = CreateService(ScmHandle, ServiceName, DisplayName,
SERVICE_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START,
SERVICE_ERROR_NORMAL, DriverPath, NULL, NULL, NULL, NULL, NULL);