+ PDPH_HEAP_ROOT DphRoot;
+ PDPH_HEAP_BLOCK Node;
+
+ /* Get a pointer to the heap root */
+ DphRoot = RtlpDphPointerFromHandle(HeapHandle);
+ if (!DphRoot) return FALSE;
+
+ /* Add heap flags */
+ Flags |= DphRoot->HeapFlags;
+
+ /* Acquire the heap lock */
+ RtlpDphPreProcessing(DphRoot, Flags);
+
+ /* Find busy memory */
+ Node = RtlpDphFindBusyMemory(DphRoot, BaseAddress);
+
+ if (!Node)
+ {
+ /* This block was not found in page heap, try a normal heap instead */
+ //RtlpDphNormalHeapGetUserInfo();
+ ASSERT(FALSE);
+ return FALSE;
+ }
+
+ /* Get user values and flags and store them in user provided pointers */
+ if (UserValue) *UserValue = Node->UserValue;
+ if (UserFlags) *UserFlags = Node->UserFlags;
+
+ /* Leave the heap lock */
+ RtlpDphPostProcessing(DphRoot);
+
+ /* Return success */
+ return TRUE;