3ds Max has a built-in system for handling undo and redo. This allows users to undo their previous modifications to the scene state and redo previously undone modifications. The user may undo several operations, and also redo several undo operations.
Many SDK samples demonstrate the undo/redo mechanism. We suggest looking at the sample: \samples\objects\light.cpp
The undo system is managed by the global variable theHold which is an instance of the class Hold.