Hi Zebediah,
Thanks for the feedback.
Not sure how to quote in Gmail but I'll add > for each line I reply to.
>This debug channel is unused, and should generate a warning.
I can remove it but I plan on adding stub functions��to the dll. CurrentIP is the first function the Microsoft Media Creation tool calls upon, ConstructPartialMsgVW after. Not sure how many others it will try to call. Based on your method, I think��ConstructPartialMsgVW takes 3 arguments, but I checked it a few weeks ago so I don't remember if this is the exact number.
In any case, the debug channel would be used for those arguments. While we're on this subject, is there a method to determine the function return type, argument types and possibly names? I see DWORD and sometimes void is used for undocumented functions, would this be appropriate?
>No reason to make this a separate function; you can use
__ASM_STDCALL_FUNC() to declare it.
Thanks, is this correct so far?
__ASM_STDCALL_FUNC(CurrentIP, 0,
�� �� "mov 0(%esp), %eax\n\t"
�� �� "ret\n\t" )
>Please try to avoid whitespace errors.
I see a lot of files have��a newline at the end, I'm assuming a newline avoids whitespace errors?
>Giovanni points out that this also won't compile on anything other than
i386. You'll need to use #ifdef guards to handle separate architectures.
I see, I'm not really sure what to do for the other architectures or which ones are appropriate in this context. I'm not familiar with arm assembly. I looked at the assembly code in kernelbase/thread.c for reference and this is what I have so far:
#ifdef __i386__
__ASM_STDCALL_FUNC(CurrentIP, 0,
�� �� "movl 0(%esp), %eax\n\t"
�� �� "ret" )
#elif defined(__x86_64__)
__ASM_STDCALL_FUNC(CurrentIP, 0,
�� �� "movq 0(%rsp), %rax\n\t"
�� �� "ret" )
#elif defined(__arm__)
__ASM_STDCALL_FUNC(CurrentIP, 0,
�� �� "mov r13, r0\n\t"
�� �� "ret" )
#elif defined(__aarch64__)
__ASM_STDCALL_FUNC(CurrentIP, 0,
�� �� "mov sp, x0\n\t"
�� �� "ret" )
#else
int WINAPI CurrentIP()
{
�� �� FIXME( "not implemented\n" );
�� �� return 0;
}
#endif
Is this a good start? What parts are incorrect?