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


Интерфейс IFileOperationProgressSink (shobjidl_core.h)

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

Наследование

Интерфейс IFileOperationProgressSink наследуется от интерфейса IUnknown . IFileOperationProgressSink также имеет следующие типы элементов:

Методы

Интерфейс IFileOperationProgressSink содержит следующие методы.

 
IFileOperationProgressSink::FinishOperations

Выполняет действия, реализованные вызывающим абонентом, после завершения последней операции, выполненной вызовом IFileOperation.
IFileOperationProgressSink::P auseTimer

Не поддерживается. (IFileOperationProgressSink.PauseTimer)
IFileOperationProgressSink::P ostCopyItem

Выполняет действия, реализованные вызывающим абонентом, после завершения процесса копирования для каждого элемента.
IFileOperationProgressSink::P ostDeleteItem

Выполняет действия, реализованные вызывающим абонентом, после завершения процесса удаления для каждого элемента.
IFileOperationProgressSink::P ostMoveItem

Выполняет действия, реализованные вызывающим абонентом, после завершения процесса перемещения для каждого элемента.
IFileOperationProgressSink::P ostNewItem

Выполняет действия, реализованные вызывающим абонентом, после создания нового элемента.
IFileOperationProgressSink::P ostRenameItem

Выполняет действия, реализованные вызывающим абонентом, после завершения процесса переименования для каждого элемента.
IFileOperationProgressSink::P reCopyItem

Выполняет действия, реализованные вызывающим абонентом, до начала процесса копирования для каждого элемента.
IFileOperationProgressSink::P reDeleteItem

Выполняет действия, реализованные вызывающим абонентом, перед началом процесса удаления для каждого элемента.
IFileOperationProgressSink::P reMoveItem

Выполняет действия, реализованные вызывающим абонентом, до начала процесса перемещения для каждого элемента.
IFileOperationProgressSink::P reNewItem

Выполняет действия, реализованные вызывающим абонентом, до начала процесса создания нового элемента.
IFileOperationProgressSink::P reRenameItem

Выполняет действия, реализованные вызывающим абонентом, перед началом процесса переименования для каждого элемента.
IFileOperationProgressSink::ResetTimer

Не поддерживается. (IFileOperationProgressSink.ResetTimer)
IFileOperationProgressSink::ResumeTimer

Не поддерживается. (IFileOperationProgressSink.ResumeTimer)
IFileOperationProgressSink::StartOperations

Выполняет действия, реализованные вызывающим абонентом, перед выполнением каких-либо определенных операций с файлами.
IFileOperationProgressSink::UpdateProgress

Предоставляет оценку общего объема выполненных в данный момент работ по отношению к общему объему работ.

Комментарии

Когда следует реализовать

Приложения должны сами реализовывать IFileOperationProgressSink . Windows не предоставляет реализацию по умолчанию.

Когда следует использовать

IFileOperationProgressSink — это, по сути, обработчики для определенных событий. Обычно они используются для отображения сведений о конкретном действии, обрабатываемом в это время, таких как имя файла, источник и назначение, а также новое имя элемента в месте назначения. Методы Post получают HRESULT каждой части операции, чтобы вызывающий объект смог определить, где происходит сбой процесса. Значения параметров метода IFileOperation передаются соответствующим методам IFileOperationProgressSink, чтобы они имели доступ к той же информации.

Чтобы присоединить реализацию IFileOperationProgressSink к вызову IFileOperation, есть два варианта:

  • Чтобы узнать обо всех операциях, выполняемых вызовом IFileOperation, используйте метод IFileOperation::Advise .
  • Чтобы получать уведомления только о ходе выполнения определенных операций, передайте IFileOperationProgressSink в один или несколько отдельных методов IFileOperation :
При вызове Метода Совет нет необходимости передавать IFileOperationProgressSink определенным методам IFileOperation , так как это приводит к избыточным вызовам методов IFileOperationProgressSink и дублированию уведомлений.

Если вы решили передать IFileOperationProgressSink только для выбора методов, для них можно использовать один и тот же экземпляр IFileOperationProgressSink .

Примере

В следующем примере метод IFileOperationProgressSink передается экземпляру IFileOperation путем вызова метода Advise .
IFileOperation *pfo;
CoCreateInstance(CLSID_FileOperation, NULL, CLSCTX_ALL, IID_IFileOperation, (void **)&m_pFO)
HRESULT hr = SHCreateFileOperation(hwnd, 0, IID_PPV_ARGS(&pfo));
if (SUCCEEDED(hr))
{
    // Advise to get notifications
    DWORD dwCookie;
    hr = pfo->Advise(SAFECAST(this, IFileOperationProgressSink*), &dwCookie);
}

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header shobjidl_core.h (включая Shobjidl.h)

См. также раздел

IFileOperation