Управляющий код FSCTL_OPLOCK_BREAK_NOTIFY дает возможность вызывающей программе ожидать завершения прерывания уступающей блокировки.
Эта операция бесполезна для разработчиков приложений и документируется здесь только для полноты материала. Функция CreateFile обрабатывает проблему, для которой эта операция была разработана.
Чтобы выполнить эту операцию, вызовите функцию DeviceIoControl, используя ниже перечисленные параметры.
BOOL DeviceIoControl( (HANDLE) hDevice, // дескриптор файла FSCTL_OPLOCK_BREAK_NOTIFY, // dwIoControlCode NULL, // lpInBuffer 0, // nInBufferSize NULL, // lpOutBuffer 0, // nOutBufferSize (LPDWORD) lpBytesReturned, // возвращаемое число байтов (LPOVERLAPPED) lpOverlapped // структура OVERLAPPED ); |
Не используется с этой операцией; устанавливается в нуль ('0').
Не используется с этой операцией; устанавливается в нуль ('0').
Если lpOverlapped - NULL, lpBytesReturned не может быть NULL. Даже тогда, когда операция не возвращает никакого вывода данных, а lpOutBuffer - NULL, DeviceIoControl использует lpBytesReturned. После такой операции, значение lpBytesReturned становится бессмысленным.
Если lpOverlapped - не NULL, lpBytesReturned может быть NULL. Если этот параметр - не NULL, и операция возвращает данные, lpBytesReturned имеет значение не имеющего смысла до тех пор, пока асинхронная операция не завершиться. Чтобы извлечь информацию о числе возвращаемых данных, вызовите GetOverlappedResult. Если параметр hDevice связан с портом завершения ввода-вывода данных (I/O), Вы можете извлечь число возвращаемых данных при помощи вызова функции GetQueuedCompletionStatus.
lpOverlapped
[in] Указатель на структуру OVERLAPPED.Если параметр hDevice открывался без определения FILE_FLAG_OVERLAPPED, параметр lpOverlapped игнорируется.
Если параметр hDevice открывался с флажком FILE_FLAG_OVERLAPPED, операция выполняется как перекрывающая (асинхронная) операция. В этой ситуации, параметр lpOverlapped должен указать на допустимую структуру OVERLAPPED, которая содержит дескриптор объекта события. В противном случае, функция завершается ошибкой непредсказуемыми способами.
Для асинхронных операций, DeviceIoControl возвращает значение немедленно, а объект события подает сигнал, когда операция завершается. В противном случае, функция не возвращает значение до тех пор, пока операция не завершится или не произойдет ошибка.
Возвращаемые значения
Если операция завершается успешно, DeviceIoControl возвращает ненулевое значение.
Если операция завершается ошибкой, DeviceIoControl возвращает нуль. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.
Замечания
Эта операция используется только клиентскими приложениями, которые затребовали уступающую блокировку от локального сервера. Клиентские прикладные программы, запрашивающие уступающие блокировки от удаленных серверов не должны требовать их непосредственно - сетевая система переадресации прозрачно запрашивает уступающие блокировки для приложения.
Включение асинхронного выполнения ввода/вывода (I/O) этой операции, смотри в разделе Замечаний описания функции DeviceIoControl.
Смотри также
Управляющие коды, используемые файловыми системами, Уступающие блокировки, DeviceIoControl, CreateFile, GetOverlappedResult, HasOverlappedIoCompleted ,OVERLAPPED
Размещение и совместимость FSCTL_OPLOCK_BREAK_NOTIFY |
||
К |
Windows XP |
Да |
л |
Windows 2000 Professional |
Да |
и |
Windows NT |
Нет |
е |
Windows Me |
Нет |
н |
Windows 98 |
Нет |
т |
Windows 95 |
Нет |
С |
Windows Server 2003 |
Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Нет |
в | ||
е | ||
р | ||
Используемая библиотека |
- |
|
Используемая DLL | - | |
Заголовочный файл | ||
- объявлено в |
Winioctl.h |
|
- включено в |
- |
|
Unicode |
- |
|
Замечания по платформе |
Не имеется |