IopCreateRootDirectories
UINT8 __stdcall IopCreateRootDirectories(){
UINT8 result;
_UNICODE_STRING DestinationString;
_OBJECT_ATTRIBUTES ObjectAttributes;
VOID *DirectoryHandle;
DirectoryHandle = 0i64;
*(&ObjectAttributes.Length + 1) = 0;
*(&ObjectAttributes.Attributes + 1) = 0;
DestinationString = 0i64;
RtlInitUnicodeString(&DestinationString, L"\\Driver");
ObjectAttributes.RootDirectory = 0i64;
ObjectAttributes.ObjectName = &DestinationString;
ObjectAttributes.Length = 48;
ObjectAttributes.Attributes = 528;
*(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
result = 0;
if( NtCreateDirectoryObject(&DirectoryHandle, 983055, &ObjectAttributes) >= 0 )
{
ObCloseHandle(DirectoryHandle, 0);
RtlInitUnicodeString(&DestinationString, L"\\FileSystem");
if( NtCreateDirectoryObject(&DirectoryHandle, 983055, &ObjectAttributes) >= 0 )
{
ObCloseHandle(DirectoryHandle, 0);
RtlInitUnicodeString(&DestinationString, L"\\FileSystem\\Filters");
if( NtCreateDirectoryObject(&DirectoryHandle, 983055, &ObjectAttributes) >= 0 )
{
ObCloseHandle(DirectoryHandle, 0);
if( IopCreateUmdfDirectory() >= 0 )
return 1;
}
}
}
return result;
}Referenced by:
IoInitSystemPreDrivers