/* We do, query its name */
Status = ObQueryNameString(LogEntry->DeviceObject,
ObjectNameInfo,
- sizeof(OBJECT_NAME_INFORMATION) +
- 100 -
- DriverNameLength,
+ sizeof(Buffer),
&ReturnedLength);
- if ((!NT_SUCCESS(Status)) || !(ObjectNameInfo->Name.Length))
+ if (!NT_SUCCESS(Status) || (ObjectNameInfo->Name.Length == 0))
{
/* Setup an empty name */
ObjectNameInfo->Name.Length = 0;
DeviceNameLength += sizeof(WCHAR);
/* Free the buffer if we had one */
- if (PoolObjectNameInfo) ExFreePool(PoolObjectNameInfo);
+ if (PoolObjectNameInfo)
+ {
+ ExFreePool(PoolObjectNameInfo);
+ PoolObjectNameInfo = NULL;
+ ObjectNameInfo = (POBJECT_NAME_INFORMATION)&Buffer;
+ }
/* Go to the next string buffer position */
ErrorMessage->EntryData.NumberOfStrings++;
break;
}
- /* Derefernece the device object */
+ /* Dereference the device object */
if (LogEntry->DeviceObject) ObDereferenceObject(LogEntry->DeviceObject);
if (DriverObject) ObDereferenceObject(LogEntry->DriverObject);