Подпрограмма MRxLowIOSubmit[LOWIO_OP_WRITE]
Подпрограмма MRxLowIOSubmit[LOWIO_OP_WRITE] вызывается RDBSS для отправки запроса на запись в сетевой мини-перенаправление.
Синтаксис
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_WRITE];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_WRITE](
_Inout_ PRX_CONTEXT RxContext
)
{ ... }
Параметры
RxContext [in, out]
Указатель на структуру RX_CONTEXT. Этот параметр содержит IRP, запрашивающий операцию.
Возвращаемое значение
MRxLowIOSubmit[LOWIO_OP_WRITE] возвращает STATUS_SUCCESS при успешном выполнении или соответствующее значение NTSTATUS, например одно из следующих значений:
Код возврата | Описание |
---|---|
STATUS_FILE_CLOSED | Структура FCB была приобретена, но связанная SRV_OPEN структура была закрыта. |
STATUS_INSUFFICIENT_RESOURCES | Недостаточно ресурсов для выполнения запроса. |
STATUS_INVALID_DEVICE_REQUEST | Указан недопустимый запрос устройства. |
STATUS_INVALID_PARAMETER | В RxContext указан недопустимый параметр. |
STATUS_NOT_IMPLEMENTED | Эта подпрограмма не реализована. |
STATUS_NOT_SUPPORTED | Указанный запрос не поддерживается сетевым мини-перенаправлением. |
Комментарии
RDBSS вызывает MRxLowIOSubmit[LOWIO_OP_WRITE] в ответ на получение запроса IRP_MJ_WRITE .
Перед вызовом MRxLowIOSubmit[LOWIO_OP_WRITE], RDBSS изменяет следующие элементы в структуре RX_CONTEXT, на которую указывает параметр RxContext :
Для элемента LowIoContext.Operation задано значение LOWIO_OP_WRITE.
Для элемента LowIoContext.ResourceThreadId задается поток процесса, который инициировал операцию в RDBSS.
Члену LowIoContext.ParamsFor.ReadWrite.Key присваивается значение IrpSp-Parameters.Read.Key>.
В элементе ParamsFor.ReadWrite.Flags задан бит LOWIO_READWRITEFLAG_PAGING_IO, если в Irp-Flags> включен бит IRP_PAGING_IO.
Член ParamsFor.ReadWrite.Buffer имеет значение буфер пользователя, заблокированный для IoWriteAccess.
Члену LowIoContext.ParamsFor.ReadWrite.ByteCount присваивается значение IrpSp-Parameters.Write.Length>.
Запрос на запись обычно реализуется сетевым мини-перенаправителем как асинхронная операция, так как это может занять значительное время. Операция обычно состоит из отправки сетевого запроса на удаленный сервер. Ответ получается при выполнении запроса на запись на сервере. Это пример операции, для которой мини-перенаправлению сети может потребоваться зарегистрировать контекст для обработки отмен, инициированных локально.
Пока обрабатывается подпрограмма MRxLowIOSubmit[LOWIO_OP_WRITE] , элемент LowIoContext.ResourceThreadId RX_CONTEXT гарантированно указывает поток процесса, инициирователя операции в RDBSS. Член LowIoContext.ResourceThreadId можно использовать для освобождения структуры FCB от имени другого потока. После завершения асинхронной процедуры можно освободить структуру FCB, полученную из исходного потока. Структуру FCB можно освободить, вызвав RxReleaseFcbResourceForThreadInMRx.
Требования
Целевая платформа |
Персональный компьютер |
Заголовок |
Mrx.h (включая Mrx.h) |
См. также раздел
MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK]
MRxLowIOSubmit[LOWIO_OP_FSCTL]
MRxLowIOSubmit[LOWIO_OP_IOCTL]
MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]
MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK]