+/**********************************************************************
+ * NAME PRIVATE
+ * ObpSetPermanentObject/2
+ *
+ * DESCRIPTION
+ * Fast general purpose routine to set an object's permanent
+ * attribute, given a pointer to the object's body.
+ */
+VOID FASTCALL
+ObpSetPermanentObject (IN PVOID ObjectBody, IN BOOLEAN Permanent)
+{
+ POBJECT_HEADER ObjectHeader;
+
+ ObjectHeader = BODY_TO_HEADER(ObjectBody);
+ ASSERT (ObjectHeader->PointerCount > 0);
+ if (Permanent)
+ {
+ ObjectHeader->Flags |= OB_FLAG_PERMANENT;
+ }
+ else
+ {
+ ObjectHeader->Flags &= ~OB_FLAG_PERMANENT;
+ if (ObjectHeader->HandleCount == 0 && HEADER_TO_OBJECT_NAME(ObjectHeader)->Directory)
+ {
+ /* Remove the object from the namespace */
+ ObpRemoveEntryDirectory(ObjectHeader);
+ }
+ }
+}
+