Метод IWDFFile2::RetrieveCountedFileName (wudfddi.h)
Предупреждение
UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе начало работы с помощью UMDF.
Метод RetrieveCountedFileName извлекает полное подсчитываемое имя файла, связанного с устройством.
Синтаксис
HRESULT RetrieveCountedFileName(
[out] WCHAR *pCountedFileName,
[in, out] DWORD *pdwCountedFileNameLengthInChars
);
Параметры
[out] pCountedFileName
Указатель на буфер, выделенный вызывающим объектом. Этот буфер получает символьную строку с завершением NULL , представляющую полное имя файла, связанного с устройством. Если указатель имеет значение NULL, RetrieveCountedFileName получает только длину строки.
[in, out] pdwCountedFileNameLengthInChars
Указатель на переменную, выделенную вызывающим объектом. На входных данных драйвер задает для переменной длину (в символах) буфера, на который указывает pdwCountedFileNameLengthInChars . В выходных данных платформа задает для переменной длину (в символах) строки символов (включая завершающий символ NULL ), помещенной в буфер. Если подсчитываемое имя файла не существует, платформа устанавливает для переменной нулевое значение.
Возвращаемое значение
RetrieveCountedFileName возвращает S_OK, если операция выполнена успешно. В противном случае метод может вернуть одно из следующих значений:
Код возврата | Описание |
---|---|
E_POINTER | Указатель pdwCountedFileNameLength имеет значение NULL. |
HRESULT_FROM_WIN32 (ERROR_INVALID_PARAMETER) | Недопустимое имя подсчитываемого файла. |
E_NOT_SUFFICIENT_BUFFER | Буфер, на который указывает pCountedFileName , слишком мал. |
Этот метод может возвращать одно из других значений в Winerror.h.
Комментарии
Подсчитываемое имя файла — это строка, которая может содержать внедренные символы NULL ('\0') в дополнение к завершающее значение NULL. Чтобы получить строку имени без внедренных символов NULL , драйверы могут вызвать IWDFFile::RetrieveFileName.
Как правило, драйвер вызывает RetrieveCountedFileName дважды, выполнив следующие действия:
- Драйвер вызывает Метод RetrieveCountedFileName с параметром pCountedFileName , имеющим значение NULL, чтобы получить необходимую длину буфера.
- Драйвер выделяет буфер требуемого размера.
- Драйвер снова вызывает RetrieveCountedFileName , чтобы получить строку имени файла.
Примеры
В следующем примере кода интерфейс IWDFFile2 получается из интерфейса IWDFFile , который получает функция обратного вызова IQueueCallbackCreate::OnCreateFile драйвера. В этом примере метод RetrieveCountedFileName вызывается дважды; один раз, чтобы получить длину имени файла, и один раз, чтобы получить строку имени файла.
VOID
STDMETHODCALLTYPE
CMyQueue::OnCreateFile(
__in IWDFIoQueue *pWdfQueue,
__in IWDFIoRequest *pWdfRequest,
__in IWDFFile* pWdfFileObject
)
...
IWDFFile2* pWdfFileObject2 = NULL;
WCHAR* countedFileName = NULL;
DWORD countedFileNameCch = 0;
HRESULT hr = S_OK;
//
// Obtain IWDFFile2 interface from IWDFFile.
//
hr = pWdfFileObject->QueryInterface(IID_PPV_ARGS(&pWdfFileObject2));
if (!SUCCEEDED(hr))
{
goto Done;
}
//
// Get length of counted filename.
//
hr = pWdfFileObject2->RetrieveCountedFileName(NULL,
&countedFileNameCch);
if (!SUCCEEDED(hr))
{
goto Done;
}
if (countedFileNameCch != 0)
{
//
// Allocate a buffer.
//
countedFileName = new WCHAR[countedFileNameCch];
if (countedFileName == NULL)
{
hr = E_OUTOFMEMORY;
goto Done;
}
//
// Get counted file name.
//
hr = pWdfFileObject2->RetrieveCountedFileName(countedFileName,
&countedFileNameCch);
if (!SUCCEEDED(hr))
{
goto Done;
}
}
...
Требования
Требование | Значение |
---|---|
Дата окончания поддержки | Недоступно в UMDF 2.0 и более поздних версиях. |
Целевая платформа | Персональный компьютер |
Минимальная версия UMDF | 1,9 |
Верхняя часть | wudfddi.h (включая Wudfddi.h) |
DLL | WUDFx.dll |