|
George_George wrote: Here is my output, which item do you think is the preferred load address?
In the middle of the first "Lump":
180000000 image base (0000000180000000 to 000000018000CFFF)
Though I'd look at the sysinternals tool, as they're more digestible!
Iain.
|
|
|
|
|
Thanks for sharing your perspective, Iain!
regards,
George
|
|
|
|
|
HMODULE hModule=LoadLibrary("Drive:\\folder\\sth.dll");
if(!hModule)
{
MessageBox("Load sth.dll failed!);
return;
}
FARPROC address= GetProcAddress(hModule, ("Drive:\\folder\\sth.dll");
if(!address)
{
MessageBox("GetProcAddress failed!);
return;
}
|
|
|
|
|
Hi anminxin,
Sorry I disagree with your code. I am asking how to get the preferred load address, but you get the actual load address. Any comments?
regards,
George
|
|
|
|
|
Hi,
I have a C code that calls an assembly procedure with a parameter that is a pointer to a structure.
typedef struct _SOMESTRUCT {
ULONG arg1;
CHAR arg2[10];
} SOMESTRUCT, *PSOMESTRUCT;
Then in C code, im calling an assembly proc like this:
SOMESTRUCT mySomeStruct;
ret = AssemblyFunction(&mySomeStruct);
In assembly code, how can i access arg1 and arg2?
Any idea?
|
|
|
|
|
OK - it has been a long time since I did any x86 assembly (remember int 21h, everyone? )...
But presuming correct alignment, since you are passing the address of the structure, the first member of the structure (arg1 ) should be at that same address. The second member (arg2 ) should be at Address + sizeof( arg1 ) or Address + 4 , if talking about a normal Win32 build.
Note that you should be specifying the packing of that structure, and I would suggest no padding (packing of 1) to make it easier to use the structure from assembly.
Peace!
-=- James Please rate this message - let me know if I helped or not!<hr></hr> If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong! Remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road! See DeleteFXPFiles
|
|
|
|
|
James R. Twine wrote: remember int 21h, everyone?
Yes! And I have hazy recollections of int 13h as well.
And, of course, int 10h was where I got my start
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
I understand that. But please be more specific. You mean BP+4 in the stack?
|
|
|
|
|
IIRC, BP (base or frame pointer) is set to the value of the stack where your parameters are. So, yes, BP should contain a value that is the address of the structure, you will need to get to that address (start of the structure) and move past the first member of the structure to get to the second one.
Peace!
-=- James Please rate this message - let me know if I helped or not!<hr></hr> If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong! Remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road! See DeleteFXPFiles
|
|
|
|
|
Hai !
Is the any other function other than fopen(), to open a file and write some data into it, as fopen doesn't work in my system!!
|
|
|
|
|
kapardhi wrote: s fopen doesn't work in my system
why?
kapardhi wrote: Is the any other function other than fopen()
You can use CStdioFile (MFC) etc to do file operations and there are few others that you can try searching for
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
I would say: "my application isn't able to take advantage of fopen ", because I'm pretty sure fopen works fine on your system.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
kapardhi wrote: ...fopen doesn't work in my system!!
Actually it does if used correctly. Care to show us a code snippet?
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
TRY.log file is what i want to create
pchFilePath = ""c:\\Documents and Settings\\Kapardhi\\Desktop\\Oct22\\\\TRY.log";
CFile *fp;
fp = fopen(pchFilePath, "a+");
it gives unhandled exception error after execution of fopen ();
|
|
|
|
|
kapardhi wrote: pchFilePath = ""c:\\Documents and Settings\\Kapardhi\\Desktop\\Oct22\\\\TRY.log";
Why are you doing this?
kapardhi wrote: it gives unhandled exception error after execution of fopen ();
So why do you not show what is happening after execution of fopen() ?
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
that is the path where i want to create the file
At the end there are \\\\ i.e computer takes as
"c:\Documents and Settings\Kapardhi\Desktop\Oct22\\MyTry.log"
this"\\" implies any string before "\\" is path, and string after "\\" is the name of the file to be created
|
|
|
|
|
You totally missed the question. Why are you using the 2 extra backslashes?
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
that is the path where i want to create the file
At the end there are \\\\ i.e computer takes as
"c:\Documents and Settings\Kapardhi\Desktop\Oct22\\MyTry.log"
this"\\" implies any string before "\\" is path, and string after "\\" is the name of the file to be created
|
|
|
|
|
kapardhi wrote: this"\\" implies any string before "\\" is path, and string after "\\" is the name of the file to be created
While the compiler may excuse the "error" and the file is indeed getting opened, I would consider changing it to a single backslash to avoid any future problems.
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
kapardhi wrote: this"\\" implies any string before "\\" is path, and string after "\\" is the name of the file to be created
You should create your own OS in order to fullfill such a requirement.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Believe me, It was working previously !
|
|
|
|
|
Until what?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Actually i made some changes in other part of my code after making those changes this fopen() started to fail !!
|
|
|
|
|
Actually there are rules on building paths. Your path is invalid. Stop.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
If you think i am wrong you may try it !!
Actually i wasted my time, expecting that you may give a good suggestion !!
|
|
|
|