IMallocSpy::PreRealloc

Called just before invoking IMalloc::Alloc.

ULONG PreRealloc(
  void * pRequest,  //Pointer the caller is passing to 
                    //IMalloc::Realloc
  ULONG cbRequest,  //Byte count the caller is passing to 
                    //IMalloc::Realloc
  void ** ppNewRequest,
                    //Address of output variable that receives a 
                    //pointer to the requested memory block to be 
                    //reallocated
  BOOL fSpyed       //Whether the original allocation was "spyed"
);
 

Parameters

pRequest
[in] Pointer specified in the original call to IMalloc::Realloc, indicating the the memory block to be reallocated.
cbRequest
[in] Memory block's byte count as specified in the original call to IMalloc::Realloc.
ppNewRequest
[out] Address of pointer variable that receives a pointer to the actual memory block to be reallocated. This may be different from the pointer in pRequest if the implementation of IMallocSpy::PreRealloc extends or modifies the reallocation. This is an out pointer and should always be stored by PreRealloc.
fSpyed
[in] TRUE if the original allocation was done while the spy was active.

Return Value

The actual byte count to be passed to IMalloc::Realloc.

Remarks

The IMallocSpy::PreRealloc implementation may extend and/or modify the allocation to store debug-specific information with the allocation. Thus, the ppNewRequest parameter may differ from pRequest, a pointer to the request specified in the original call to IMalloc::Realloc.

PreRealloc can force memory allocation failure by returning 0, allowing testing to ensure that the application handles allocation failure gracefully in all cases. In this case, PostRealloc is not called and Realloc returns NULL. However, if IMalloc::Realloc encounters a real memory failure and returns NULL, PostRealloc is called. Forcing allocation failure is effective only if cbRequest is not equal to 0.

QuickInfo

  Windows NT: Use version 4.0 or later.
  Windows: Use Windows 95 or later.
  Windows CE: Unsupported.
  Header: Declared in objidl.h.

See Also

IMalloc::Realloc, IMallocSpy::PostRealloc, CoRegisterMallocSpy, CoRevokeMallocSpy