Код статьи: 959573 - Последнее изменение :: 19 июня 2011 г. - Редакция: 4.0 PRB: GetVolumeNameForVolumeMountPoint API может вернуть неправильное имя тома с несколькими именами
Источник: Поддержка Майкрософт БЫСТРАЯ ПУБЛИКАЦИЯБЫСТРАЯ ПУБЛИКАЦИЯ ДАННЫХ СОДЕРЖАТСЯ СВЕДЕНИЯ НЕПОСРЕДСТВЕННО В СЛУЖБУ ТЕХНИЧЕСКОЙ ПОДДЕРЖКИ МАЙКРОСОФТ ОРГАНИЗАЦИИ. СВЕДЕНИЯ, СОДЕРЖАЩИЕСЯ В НАСТОЯЩЕМ ДОКУМЕНТЕ СОЗДАЕТСЯ В ОТВЕТ НА НОВЫХ ИЛИ УНИКАЛЬНЫЙ РАЗДЕЛЫ, ИЛИ ПРЕДНАЗНАЧЕНА ДОПОЛНЕНИЯ ДРУГИХ ЗНАНИЙ СВЕДЕНИЯ. СимптомВ операционной системе Windows каждый тому присваивается уникальное имя тома в формате \\Volume\{GUID}\, где однозначно определяет идентификатор GUID тома. В определенных ситуациях, описанных в разделе «Дополнительная информация» можно назначить несколько имен уникальный тома и таким образом быть назначено несколько идентификаторов GUID тома. При этом функции GetVolumeNameForVolumeMountPoint() Win32 API будет возвращать одно из назначенных имен, но он может возвращать имя, которое не может использоваться. ПричинаПричиной проблемы является ошибка в функции GetVolumeNameForVolumeMountPoint Win32 API в продуктах, перечисленных в разделе «Относится к» данной статьи. Проблема возникает только для томов, которые были назначены несколько имен тома уникальные (идентификаторы GUID). Проблема была исправлена в следующих продуктах:
РазрешениеПриложения, которые должны выполняться на уязвимые продукты можно обойти эту ошибку в одном из двух способов. Первый — это открыть том с помощью функции CreateFile Win32 и последующего вызова функции DeviceIoControl для выполнения команды IOCTL_MOUNTMGR_QUERY_POINTS. Второй способ — путем вызова GetVolumeNameForVolumeMountPoint в два раза. В первом вызове, передайте имя целевого тома описаны (обычно в виде буквы диска в формат X:\) в lpszVolumeMountPoint параметр. Этот вызов будет возвращен один назначенный уникальные имена в lpszVolumeName параметр. Во втором вызове передать имя тома, возвращаемые при первом вызове в lpszVolumeMountPoint параметр. Это приведет к GetVolumeNameForVolumeMountPoint для возвращения имени ожидаемый тома. Пример ниже, чтобы увидеть, как вызвать GetVolumeNameForVolumeMountPoint() два раза, чтобы получить ожидаемые результаты. # include<windows.h></windows.h> # include<stdio.h></stdio.h> # include<tchar.h> </tchar.h> int _tmain (int argc, TCHAR * argv[]) { TCHAR szGUID1 [MAX_PATH]; TCHAR szGUID2 [MAX_PATH]; Если (argc! = 2) { wprintf (L "" % s " <x:\\> \n\n", argv[0]);<b00></b00></x:\\> Возвращает значение 0; } _tprintf (текст («вызов GetVolumeNameForVolumeMountPoint для %s\n»), argv[1]); / / При первом вызове к GetVolumeNameForVolumeMountPoint / / передать все, что вы обычно передаются в Если (GetVolumeNameForVolumeMountPoint (argv [1], szGUID1, MAX_PATH)) { _tprintf (текст ("GUID1: %s\n\n"), szGUID1); } / / На второй вызов передает имя тома, полученных от первого / / вызов GetVolumeNameForVolumeMountPoint Если (GetVolumeNameForVolumeMountPoint (szGUID1, szGUID2, MAX_PATH)) { _tprintf (текст ("GUID2: %s\n\n"), szGUID2); } Возвращает значение 0; } Функция CreateFile DeviceIoControl и IOCTL_MOUNTMGR_QUERY_POINTS описаны в библиотеке MSDN на http://msdn.microsoft.com (эта ссылка может указывать на содержимое полностью или частично на английском языке) (http://msdn.microsoft.com) . Дополнительные сведенияТом может быть несколько имен уникальный тома (и таким образом несколько идентификаторов GUID) при использовании с несколькими работающей установки Windows. Это может произойти в следующих случаях и в подобных ситуациях, где несколько экземпляров Windows доступ к тому:
В этих случаях каждый запущенный экземпляр Windows присваивается собственный GUID тома. Кроме того каждый экземпляр будет перечислять все имена томов и точки подключения тома и таким образом, будет отображено несколько идентификаторов GUID. Однако не все идентификаторы GUID может использоваться с определенным экземпляром Windows, которая выполняется в данный момент. Поэтому возможно, имя тома, возвращенный GetVolumeNameForVolumeMountPoint «неправильный». MOUNTVOL.EXE всегда возвращает имя правильного тома. ОТКАЗ ОТ ОТВЕТСТВЕННОСТИMICROSOFT И/ИЛИ ЕЕ ПОСТАВЩИКИ НЕ ДЕЛАТЬ ПРЕДСТАВЛЕНИЯ ИЛИ ГАРАНТИЙ О ПРИГОДНОСТИ, НАДЕЖНОСТЬ И ТОЧНОСТЬ ИНФОРМАЦИИ СОДЕРЖАТСЯ В ДОКУМЕНТЫ И СВЯЗАННЫХ РИСУНКОВ ПУБЛИКАЦИИ НА ЭТОМ ВЕБ-САЙТЕ (ДАЛЕЕ "МАТЕРИАЛЫ") ДЛЯ ЛЮБЫХ ЦЕЛЕЙ. МАТЕРИАЛЫ МОГУТ СОДЕРЖАТЬ ТЕХНИЧЕСКИЕ НЕТОЧНОСТИ ИЛИ ОПЕЧАТОК И МОЖЕТ БЫТЬ ИЗМЕНЕН В ЛЮБОЕ ВРЕМЯ БЕЗ ПРЕДВАРИТЕЛЬНОГО УВЕДОМЛЕНИЯ. В МАКСИМАЛЬНОЙ СТЕПЕНИ, ДОПУСКАЕМОЙ ПРИМЕНИМО ЗАКОНОДАТЕЛЬСТВОМ, КОРПОРАЦИЯ МАЙКРОСОФТ ИЛИ ЕЕ ПОСТАВЩИКИ DISCLAIM И ИСКЛЮЧИТЬ ВСЕ ПРЕДСТАВЛЕНИЯ ГАРАНТИЙ И УСЛОВИЙ ЛИ EXPRESS, КОСВЕННЫХ ИЛИ УСТАНОВЛЕННЫХ ЗАКОНОМ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЕТСЯ, ГАРАНТИЙ, УСЛОВИЙ ИЛИ ЗАГОЛОВКА, ОТЛИЧНЫХ ОТ КОНТРАФАКЦИИ, ИСПРАВИВ ОШИБКУ ИЛИ КАЧЕСТВА, ЛЮБЫЕ ГАРАНТИИ ТОВАРНОСТИ ИЛИ ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ, ОТНОСЯЩИЕСЯ К МАТЕРИАЛАМ. Примечание. Это ЭКСПРЕСС-ПУБЛИКАЦИЯ, подготовленная непосредственно службой технической поддержки Майкрософт . Сведения, содержащиеся в данном документе, предоставлены в качестве отклика на возникшие проблемы. Из-за срочности в материалах могут быть опечатки, и в любое время и без уведомления в них могут быть внесены изменения. Чтобы получить дополнительные сведения, см. Условия использования
(http://go.microsoft.com/fwlink/?LinkId=151500)
. Информация в данной статье относится к следующим продуктам.
Переведено с помощью машинного переводаВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода. Эта статья на английском языке:959573
(http://support.microsoft.com/kb/959573/en-us/
)
| Другие ресурсы Cайты поддержки
СообществоПомощь сейчасПереводы статьи
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Перейти к началу страницы
