disponibilidade de Win32_MountPoint e Win32_Volume no Windows XP?

Nos artigos do MSDN que encontrei -http://msdn.microsoft.com/en-us/library/aa394515(v=VS.85).aspx - Win32_Volume e Win32_MountPoint não estão disponíveis no Windows XP.

No entanto, estou desenvolvendo um aplicativo C # no Windows XP (64 bits) e posso acessar essas classes WMI perfeitamente. Os usuários do meu aplicativo estarão no Windows XP sp2 com .Net 3.5 sp1.

Pesquisando por aí, não consigo determinar se posso contar com isso ou não. Tenho êxito no meu sistema devido a um ou mais dos seguintes procedimentos: - Windows XP Service Pack 2? - o visual studio 2008 sp1 foi instalado? - .Net 3.5 sp1?

Devo usar algo diferente de WMI para obter as informações de volume / ponto de montagem?

Abaixo está um código de exemplo que está funcionando ...

    public static Dictionary<string, NameValueCollection> GetAllVolumeDeviceIDs()
    {
        Dictionary<string, NameValueCollection> ret = new Dictionary<string, NameValueCollection>();

        // retrieve information from Win32_Volume
        try
        {
            using (ManagementClass volClass = new ManagementClass("Win32_Volume"))
            {
                using (ManagementObjectCollection mocVols = volClass.GetInstances())
                {
                    // iterate over every volume
                    foreach (ManagementObject moVol in mocVols)
                    {
                        // get the volume's device ID (will be key into our dictionary)                            
                        string devId = moVol.GetPropertyValue("DeviceID").ToString();

                        ret.Add(devId,  new NameValueCollection());

                        //Console.WriteLine("Vol: {0}", devId);

                        // for each non-null property on the Volume, add it to our NameValueCollection
                        foreach (PropertyData p in moVol.Properties)
                        {
                            if (p.Value == null)
                                continue;
                            ret[devId].Add(p.Name, p.Value.ToString());
                            //Console.WriteLine("\t{0}: {1}", p.Name, p.Value);
                        }

                        // find the mountpoints of this volume
                        using (ManagementObjectCollection mocMPs = moVol.GetRelationships("Win32_MountPoint"))
                        {
                            foreach (ManagementObject moMP in mocMPs)
                            {
                                // only care about adding directory
                                // Directory prop will be something like "Win32_Directory.Name=\"C:\\\\\""
                                string dir = moMP["Directory"].ToString();

                                // find opening/closing quotes in order to get the substring we want
                                int first = dir.IndexOf('"') + 1;
                                int last = dir.LastIndexOf('"');
                                string dirSubstr = dir.Substring(first , last - first);

                                // use GetFullPath to normalize/unescape any extra backslashes
                                string fullpath = Path.GetFullPath(dirSubstr);

                                ret[devId].Add(MOUNTPOINT_DIRS_KEY, fullpath);

                            }
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Problem retrieving Volume information from WMI. {0} - \n{1}",ex.Message,ex.StackTrace);
            return ret;
        }

        return ret;

    }

questionAnswers(2)

yourAnswerToTheQuestion