wprintf(L"Usage: load <ServiceName>\n");
return 0;
}
- ServiceName.Length = (wcslen(argv[1]) + 52) * sizeof(WCHAR);
- ServiceName.Buffer = (LPWSTR)malloc(ServiceName.Length + sizeof(UNICODE_NULL));
+
+ ServiceName.Length = (USHORT)((52 + wcslen(argv[1])) * sizeof(WCHAR));
+ ServiceName.MaximumLength = ServiceName.Length + sizeof(UNICODE_NULL);
+ ServiceName.Buffer = malloc(ServiceName.MaximumLength);
wsprintf(ServiceName.Buffer,
- L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\%S",
+ L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\%s",
argv[1]);
- wprintf(L"%s %u %Id\n", ServiceName.Buffer, ServiceName.Length, wcslen(ServiceName.Buffer));
+ wprintf(L"Loading %wZ\n", &ServiceName);
+
Status = NtLoadDriver(&ServiceName);
free(ServiceName.Buffer);
if (!NT_SUCCESS(Status))
{
- wprintf(L"Failed: %x\n", Status);
+ wprintf(L"Failed: 0x%08lx\n", Status);
return 1;
}
+
return 0;
}