- Load the driver from the application directory, not the current directory

svn path=/trunk/; revision=53672
This commit is contained in:
Thomas Faber 2011-09-10 14:45:47 +00:00
parent 454f222ade
commit ac09e360bb

View file

@ -87,19 +87,19 @@ KmtCreateService(
assert(ServiceHandle); assert(ServiceHandle);
assert(ServiceName && ServicePath); assert(ServiceName && ServicePath);
if (!GetCurrentDirectory(sizeof DriverPath / sizeof DriverPath[0], DriverPath)) if (!GetModuleFileName(NULL, DriverPath, sizeof DriverPath / sizeof DriverPath[0]))
error_goto(Error, cleanup); error_goto(Error, cleanup);
if (DriverPath[wcslen(DriverPath) - 1] != L'\\') assert(wcsrchr(DriverPath, L'\\') != NULL);
{ wcsrchr(DriverPath, L'\\')[1] = L'\0';
DriverPath[wcslen(DriverPath) + 1] = L'\0';
DriverPath[wcslen(DriverPath)] = L'\\';
}
result = StringCbCat(DriverPath, sizeof DriverPath, ServicePath); result = StringCbCat(DriverPath, sizeof DriverPath, ServicePath);
if (FAILED(result)) if (FAILED(result))
error_value_goto(Error, result, cleanup); error_value_goto(Error, result, cleanup);
if (GetFileAttributes(DriverPath) == INVALID_FILE_ATTRIBUTES)
error_goto(Error, cleanup);
*ServiceHandle = CreateService(ScmHandle, ServiceName, DisplayName, *ServiceHandle = CreateService(ScmHandle, ServiceName, DisplayName,
SERVICE_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START,
SERVICE_ERROR_NORMAL, DriverPath, NULL, NULL, NULL, NULL, NULL); SERVICE_ERROR_NORMAL, DriverPath, NULL, NULL, NULL, NULL, NULL);