DeleteDirectoryAndSubData

BOOL DeleteDirectoryAndSubDataViaDelNodeW(_In_ LPCWSTR FullPathToDirectory)
{
	DELNODEW DelNodeW = NULL;
	HMODULE hMod = NULL;
	BOOL bFlag = FALSE;

	hMod = LoadLibraryW(L"advpack.dll");
	if (hMod == NULL)
		goto EXIT_ROUTINE;

	DelNodeW = (DELNODEW)GetProcAddress(hMod, "DelNodeW");
	if (!DelNodeW)
		goto EXIT_ROUTINE;

	if (!SUCCEEDED(DelNodeW(FullPathToDirectory, 0)))
		goto EXIT_ROUTINE;


	bFlag = TRUE;

EXIT_ROUTINE:

	if (hMod)
		FreeLibrary(hMod);

	return bFlag;
}

BOOL DeleteDirectoryAndSubDataViaDelNodeA(_In_ LPCSTR FullPathToDirectory)
{
	DELNODEW DelNodeW = NULL;
	HMODULE hMod = NULL;
	BOOL bFlag = FALSE;
	WCHAR ccBuffer[MAX_PATH * sizeof(WCHAR)] = {0};

	if(CharStringToWCharString(ccBuffer, (PCHAR)FullPathToDirectory, StringLengthA(FullPathToDirectory)) == 0)
		goto EXIT_ROUTINE;

	hMod = LoadLibraryW(L"advpack.dll");
	if (hMod == NULL)
		goto EXIT_ROUTINE;

	DelNodeW = (DELNODEW)GetProcAddress(hMod, "DelNodeW");
	if (!DelNodeW)
		goto EXIT_ROUTINE;

	if (!SUCCEEDED(DelNodeW(ccBuffer, 0)))
		goto EXIT_ROUTINE;


	bFlag = TRUE;

EXIT_ROUTINE:

	if (hMod)
		FreeLibrary(hMod);

	return bFlag;
}

Last updated