HANDLE ObjectManagerCreateDirectory()

in PPLGuard/utils.cpp [370:389]


HANDLE ObjectManagerCreateDirectory(LPCWSTR dirname)
{
	OBJECT_ATTRIBUTES oa = { 0 };
	UNICODE_STRING name = { 0 };
	HANDLE hDirectory = NULL;
	NTSTATUS status = 0;

	RtlInitUnicodeString(&name, dirname);
	InitializeObjectAttributes(&oa, &name, OBJ_CASE_INSENSITIVE, NULL, NULL);

	status = NtCreateDirectoryObjectEx(&hDirectory, DIRECTORY_ALL_ACCESS, &oa, NULL, FALSE);
	SetLastError(RtlNtStatusToDosError(status));
	if (status != 0)
	{
		PrintLastError(L"NtCreateDirectoryObjectEx");
		return NULL;
	}

	return hDirectory;
}