>
Adding the debug channel declaration should be deferred until the first
> patch that uses it.
I was going to remove it but since the #ifdef guards ends with an unknown architecture, it would require the debug channel to display the fixme message, no?
> I am sort of led to wonder, though, is there really a point in trying to
> use this program with builtin wdscore? It sounds like the DLL is rather
> private to the program in question. As long as you're copying the Media
> Creation tool from a windows 10 installation (since I don't see any
> other way to acquire it?) I'd imagine that one should copy native
> wdscore.dll as well.
You can download the tool directly from Microsoft.com and also the archive link in the wine bug report. But you're right, there's no real point to using the builtin wdscore. Personally, I'd use the native dll for something like this. I figured since it was already in the wine tree and the bug report was accepted, it would be a good learning exercise.
> No, you pretty much have to guess just from figuring out what the
> arguments look like. If you can't tell I'd recommend using "void *" or
> "DWORD_PTR" so that the entire value is captured.
I see, thank you.
>Yes, that looks correct. Note that you don't need the \n\t after the
> last instruction.
Thanks, I figured as much and removed the \n\t afterwards.
> A missing newline at the end of a file is considered a whitespace error;
> I believe Git should warn you about those.
That's odd, I don't think it warned me. Perhaps I need to configure it for that?
> I'm not an expert in ARM assembly, but I believe you want:
>
> mov lr, r0
> bx lr
>
> for ARM, and
>
> mov lr, x0
> ret
>
> for ARM64.
>
> The rest looks correct to me.
Thank you so much, I really appreciate all the help you've given me. You're a great teacher!
> Is there any indication this function should be doing something like
> this at all?
I'm testing it out in Windows to get a sense of what it does. Here's my code in C++, let me know if it's incorrect:
typedef int (*CurrentIP)();
HMODULE hDLL = LoadLibraryA("wdscore.dll");
CurrentIP ip = (CurrentIP)GetProcAddress(hDLL, "CurrentIP");
std::cout << "CurrentIP() = " << ip() << "\n";
FreeLibrary(hDLL);
It returns random numbers, e.g. 10424371, 1249331, 6033459. So doesn't this mean it's returning the instruction pointer?
If so, I don't know how to write a conformance test for it. Would it be necessary in this case?