Home | Info | Community | Development | myReactOS | Contact Us
Definition at line 104 of file image.c.
Referenced by KsMapModuleName().
{ NTSTATUS Status; ULONG ImageLength; WCHAR ImagePath[] = {L"\\SystemRoot\\system32\\drivers\\"}; /* first clear the provided ImageName */ ImageName->Buffer = NULL; ImageName->Length = ImageName->MaximumLength = 0; ImageLength = 0; /* retrieve length of image name */ Status = KspQueryRegValue(RegKey, L"Image", NULL, &ImageLength, NULL); if (Status != STATUS_BUFFER_OVERFLOW) { /* key value doesnt exist */ return Status; } /* allocate image name buffer */ ImageName->MaximumLength = sizeof(ImagePath) + ImageLength; ImageName->Buffer = AllocateItem(PagedPool, ImageName->MaximumLength); /* check for success */ if (!ImageName->Buffer) { /* insufficient memory */ return STATUS_INSUFFICIENT_RESOURCES; } /* copy image name */ RtlCopyMemory(ImageName->Buffer, ImagePath, sizeof(ImagePath)); /* retrieve image name */ Status = KspQueryRegValue(RegKey, L"Image", &ImageName->Buffer[sizeof(ImagePath) / sizeof(WCHAR)], &ImageLength, NULL); if (!NT_SUCCESS(Status)) { /* unexpected error */ FreeItem(ImageName->Buffer); return Status; } /* now query for resource id length*/ ImageLength = 0; Status = KspQueryRegValue(RegKey, L"ResourceId", NULL, &ImageLength, ValueType); /* allocate resource id buffer*/ *ResourceId = (ULONG_PTR)AllocateItem(PagedPool, ImageLength); /* check for success */ if (!*ResourceId) { /* insufficient memory */ FreeItem(ImageName->Buffer); return STATUS_INSUFFICIENT_RESOURCES; } /* now query for resource id */ Status = KspQueryRegValue(RegKey, L"ResourceId", (PVOID)*ResourceId, &ImageLength, ValueType); if (!NT_SUCCESS(Status)) { /* unexpected error */ FreeItem(ImageName->Buffer); FreeItem((PVOID)*ResourceId); } /* return result */ return Status; }