Поделиться через


Функция GetMappedFileNameA (psapi.h)

Проверяет, находится ли указанный адрес в сопоставленном с памятью файле в адресном пространстве указанного процесса. Если да, функция возвращает имя сопоставленного с памятью файла.

Синтаксис

DWORD GetMappedFileNameA(
  [in]  HANDLE hProcess,
  [in]  LPVOID lpv,
  [out] LPSTR  lpFilename,
  [in]  DWORD  nSize
);

Параметры

[in] hProcess

Дескриптор процесса. Дескриптор должен иметь право доступа PROCESS_QUERY_INFORMATION. Дополнительные сведения см. в "Безопасность процессов и доступ".

[in] lpv

Проверяемый адрес.

[out] lpFilename

Указатель на буфер, получающий имя сопоставленного с памятью файла, к которому принадлежит адрес, указанный lpv.

[in] nSize

Размер буфера lpFilename в символах.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение указывает длину строки, скопированной в буфер, в символах.

Если функция завершается ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.

Замечания

Начиная с Windows 7 и Windows Server 2008 R2, Psapi.h устанавливает номера версий для функций PSAPI. Номер версии PSAPI влияет на имя, используемое для вызова функции и библиотеки, которую должна загрузить программа.

Если PSAPI_VERSION равно 2 или больше, эта функция определяется как K32GetMappedFileName в Psapi.h и экспортируется в Kernel32.lib и Kernel32.dll. Если PSAPI_VERSION равно 1, эта функция определяется как GetMappedFileName в Psapi.h и экспортируется в Psapi.lib и Psapi.dll как оболочка, которая вызывает K32GetMappedFileName.

Программы, которые должны выполняться в более ранних версиях Windows, а также Windows 7 и более поздних версиях, всегда должны вызывать эту функцию как GetMappedFileName. Чтобы обеспечить правильное разрешение символов, добавьте Psapi.lib в макрос TARGETLIBS и скомпилируйте программу с помощью -DPSAPI_VERSION=1. Чтобы использовать динамическую компоновку во время выполнения, загрузите Psapi.dll.

В Windows Server 2012 эта функция поддерживается следующими технологиями.

Технологии Поддержанный
Протокол SMB 3.0 Да
Отработка отказа SMB 3.0 (TFO) Да
SMB 3.0 с масштабируемыми общими папками (SO) Да
Файловая система общего тома кластера (CSVFS) Да
Отказоустойчивая файловая система (ReFS) Да
 

Примеры

Пример см. в разделе получение имени файла из дескриптора файлов.

Заметка

Заголовок psapi.h определяет GetMappedFileName как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
целевая платформа Виндоус
заголовка psapi.h
библиотеки Kernel32.lib в Windows 7 и Windows Server 2008 R2; Psapi.lib (если PSAPI_VERSION=1) в Windows 7 и Windows Server 2008 R2; Psapi.lib в Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP
DLL Kernel32.dll в Windows 7 и Windows Server 2008 R2; Psapi.dll (если PSAPI_VERSION=1) в Windows 7 и Windows Server 2008 R2; Psapi.dll в Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP

См. также

EnumProcesses

Memory-Mapped сведения о файлах

функций PSAPI