Entries:
Comments:
Posts:

Loading User Information from Channel 9

Something went wrong getting user information from Channel 9

Latest Achievement:

Loading User Information from MSDN

Something went wrong getting user information from MSDN

Visual Studio Achievements

Latest Achievement:

Loading Visual Studio Achievements

Something went wrong getting the Visual Studio Achievements

Application Restart and Recovery on Windows 7 in Native Code

Download

Right click “Save as…”

Application Recovery and Restart (ARR) technologies enable developers to customize an application's behavior when Windows Error Reporting (WER) terminates the application due to an unrecoverable error. For example, it enables an application to perform data recovery and cleanup operations such as capturing application state and releasing resources before termination. It also allows developers to specify that WER should automatically restart an application that it has terminated.

In this screencast, Kate Gregory (@gregcons) provides an overview of ARR on Windows 7. Kate also demonstrates how to integrate ARR into your native applications via Win32.

Update (March 22, 2011 - 5:40 PM): The Windows Restart and Recovery Recipe is now available to download.

Tags:

Follow the Discussion

  • Um doing it in MFC shouldnt count as native code... But good stuff none the less. More C++ stuff please
  • John Bristowejbristowe John Bristowe (Developer Evangelist, Telerik)

    I labelled this screencast as native code for developers who draw a comparison to managed code (i.e. CLR). And, don't worry: more C++ stuff is on the way! Let me know if there's anything in particular that you'd like to see!

  • Surprised this was not up on the Channel9 Zune podcasts.  Good work Kate.

  • CharlesCharles Welcome Change

    , jfoegen wrote

    Surprised this was not up on the Channel9 Zune podcasts.  Good work Kate.

    Now it is Smiley

    John, please let me know when you are going to post content created by Kate and I will ensure it shows up in our main feed. Go Kate. Go!

    C

  • John Bristowejbristowe John Bristowe (Developer Evangelist, Telerik)

    @Charles: Will do. We have one more in the hopper.

  • felix9felix9 the cat that walked by itself

    , Mr Crash wrote

    Um doing it in MFC shouldnt count as native code...

    But why ? Scared

  • LunowLunow

    Clearly this is native, since you should be able to use the code in NativeAndRestartRecovery.h even for non-MFC C++ applications (not tested).
    But I am not too happy, because the recipe is full of memory leaks.
    In NativeTestDlg.cpp there is a memory leak on line 66 (the memory pointed to by former doc is lost).
    In NativeTestDlg.cpp there is a memory leak on line 70 (the memory pointed to by rrh lost).
    CNativeTestHarnessDlg has no destructor, so the memory pointed to by doc leaks.
    NativeAndRestartRecovery.h there is a potential memory leak on line 66 if the supplied 'T::operator >>' throws.
    If you dont want to handle it, use RAII (in these cases unique_ptr or shared_ptr or even auto_ptr, since the code was written a year ago).

    Another problem I see is that the recovery may fail due to dead lock/races as your program is in an undefined state and you launch a new thread; what if the program crashes in HeapAlloc due to Heap corruption or your gui is not responding but some thread is updating the recovery document structure.
    These problems seem not to be handled by this 'recipe', but I dont know what magic Windows does under the covers. Another issue are Blue Screens or power failures. So it would be still appropiate to save application state as the application is in a known state.

    But I might have missed the point of this cast.

    Daniel

  • Mike HarnadMike Harnad

    Has anyone tried to build the sample NativeTestHarness in Visual Studio 2010? I built the sample, but, it will not crash. I've entered data and clicked the "Crash" button, but, the app stays alive.
    Any idea whats goig on here?

Remove this comment

Remove this thread

close

Comments Closed

Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums,
or Contact Us and let us know.