Click here to Skip to main content
16,005,682 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
QuestionSTL Qs Pin
RalfPeter9-Apr-06 6:10
RalfPeter9-Apr-06 6:10 
AnswerRe: STL Qs Pin
Chris Losinger9-Apr-06 7:07
professionalChris Losinger9-Apr-06 7:07 
AnswerRe: STL Qs Pin
Jörgen Sigvardsson9-Apr-06 10:40
Jörgen Sigvardsson9-Apr-06 10:40 
QuestionCArray of CBrush and CRgn Pin
stifmeister_ro9-Apr-06 6:10
stifmeister_ro9-Apr-06 6:10 
AnswerRe: CArray of CBrush and CRgn Pin
Michael Dunn9-Apr-06 7:15
sitebuilderMichael Dunn9-Apr-06 7:15 
QuestionKeyboard hook code explanation Pin
EvScott9-Apr-06 5:42
EvScott9-Apr-06 5:42 
AnswerRe: Keyboard hook code explanation Pin
David Crow10-Apr-06 3:32
David Crow10-Apr-06 3:32 
Questionstack trace Pin
LiYS9-Apr-06 4:17
LiYS9-Apr-06 4:17 
void foo1()
{
    foo2();
}
void foo2()
{
    foo3();
}
void foo3()
{
   STACKFRAME64 frame;
   DWORD_PTR    programcounter;
   programcounter = getprogramcounter();

    // Initialize the STACKFRAME64 structure.
    memset(&frame, 0x0, sizeof(frame));
    frame.AddrPC.Offset    = programcounter;
    frame.AddrPC.Mode      = AddrModeFlat;
    frame.AddrFrame.Offset = framepointer;
    frame.AddrFrame.Mode   = AddrModeFlat;
    // use some kind of loop, till this funtion reach foo1()
    StackWalk64(, , , &frame, , NULL, , , NULL); 
}

DWORD_PTR getprogramcounter()
{
    DWORD_PTR programcounter;

    __asm mov AXREG, [BPREG + SIZEOFPTR] // Get the return address out of the current stack frame
    __asm mov [programcounter], AXREG    // Put the return address into the variable we'll return

    return programcounter;

}


My assumption about the above code snippet is that foo3 obtain the address of "getprogramcounter()(program counter?)" by calling getprogramcounter(), and it is
from there the foo3 begin to trace back. So in this case getprogramcounter()->foo3()-2()->1()? But What's the relation between foo3()'s getprogramcounter()'s address and its frame pointer, as the "frame.AddrPC.Offset" and "frame.AddrFrame.Offset" indicate.Doesn't the frame pointer alone enough to get its caller's stack frame? why use program counter? How the StackWalk64 deal with them. What exactly happened?




QuestionC++ ISO Compliance Pin
HalfWayMan9-Apr-06 4:11
HalfWayMan9-Apr-06 4:11 
AnswerRe: C++ ISO Compliance Pin
Hans9-Apr-06 7:03
Hans9-Apr-06 7:03 
GeneralRe: C++ ISO Compliance Pin
HalfWayMan10-Apr-06 7:34
HalfWayMan10-Apr-06 7:34 
Questionproblem in retrieving records Pin
swapna_signsin9-Apr-06 3:11
swapna_signsin9-Apr-06 3:11 
AnswerRe: problem in retrieving records Pin
thatsme_cool9-Apr-06 21:09
thatsme_cool9-Apr-06 21:09 
QuestionRe: problem in retrieving records Pin
David Crow10-Apr-06 3:41
David Crow10-Apr-06 3:41 
AnswerRe: problem in retrieving records Pin
swapna_signsin10-Apr-06 21:42
swapna_signsin10-Apr-06 21:42 
Questionhow can i get the main window after shellexecuteex Pin
supertianqu9-Apr-06 1:57
supertianqu9-Apr-06 1:57 
AnswerRe: how can i get the main window after shellexecuteex Pin
YaronNir9-Apr-06 2:23
YaronNir9-Apr-06 2:23 
QuestionHow to run a console application in MFC Pin
kflrei9-Apr-06 1:50
kflrei9-Apr-06 1:50 
AnswerRe: How to run a console application in MFC Pin
mehrdadov9-Apr-06 1:55
mehrdadov9-Apr-06 1:55 
GeneralRe: How to run a console application in MFC Pin
supertianqu9-Apr-06 1:58
supertianqu9-Apr-06 1:58 
AnswerRe: How to run a console application in MFC Pin
David Crow10-Apr-06 3:44
David Crow10-Apr-06 3:44 
QuestionMove Window Pin
mehrdadov9-Apr-06 1:49
mehrdadov9-Apr-06 1:49 
AnswerRe: Move Window Pin
YaronNir9-Apr-06 2:28
YaronNir9-Apr-06 2:28 
AnswerRe: Move Window Pin
PJ Arends9-Apr-06 11:14
professionalPJ Arends9-Apr-06 11:14 
AnswerRe: Move Window Pin
ThatsAlok9-Apr-06 19:13
ThatsAlok9-Apr-06 19:13 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.