На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

WriteFile



The WriteFile function writes data to a file and is designed for both synchronous and asynchronous operation. The function starts writing data to the file at the position indicated by the file pointer. After the write operation has been completed, the file pointer is adjusted by the number of bytes actually written, except when the file is opened with FILE_FLAG_OVERLAPPED. If the file handle was created for overlapped input and output (I/O), the application must adjust the position of the file pointer after the write operation is finished.

BOOL WriteFile(

HANDLE hFile, // handle to file to write to
LPCVOID lpBuffer, // pointer to data to write to file
DWORD nNumberOfBytesToWrite, // number of bytes to write
LPDWORD lpNumberOfBytesWritten, // pointer to number of bytes written
LPOVERLAPPED lpOverlapped // pointer to structure needed for overlapped I/O
);


Parameters

hFile

Identifies the file to be written to. The file handle must have been created with GENERIC_WRITE access to the file.

Windows NT

For asynchronous write operations, hFile can be any handle opened with the FILE_FLAG_OVERLAPPED flag by the CreateFile function, or a socket handle returned by the socket or accept functions.

Windows 95

For asynchronous write operations, hFile can be a communications resource, mailslot, or named pipe handle opened with the FILE_FLAG_OVERLAPPED flag by CreateFile, or a socket handle returned by the socket or accept functions. Windows 95 does not support asynchronous write operations on disk files.

lpBuffer

Points to the buffer containing the data to be written to the file.

nNumberOfBytesToWrite

Specifies the number of bytes to write to the file.
Unlike the MS-DOS operating system, Windows NT interprets a value of zero as specifying a null write operation. A null write operation does not write any bytes but does cause the time stamp to change.

Named pipe write operations across a network are limited to 65535 bytes.

lpNumberOfBytesWritten

Points to the number of bytes written by this function call. WriteFile sets this value to zero before doing any work or error checking.
If lpOverlapped is NULL, lpNumberOfBytesWritten cannot be NULL.
If lpOverlapped is not NULL, lpNumberOfBytesWritten can be NULL. If this is an overlapped write operation, you can get the number of bytes written by calling GetOverlappedResult. If hFile is associated with an I/O completion port, you can get the number of bytes written by calling GetQueuedCompletionStatus.

lpOverlapped

Points to an OVERLAPPED structure. This structure is required if hFile was opened with FILE_FLAG_OVERLAPPED.

If hFile was opened with FILE_FLAG_OVERLAPPED, the lpOverlapped parameter must not be NULL. It must point to a valid OVERLAPPED structure. If hFile was opened with FILE_FLAG_OVERLAPPED and lpOverlapped is NULL, the function can incorrectly report that the write operation is complete.
If hFile was opened with FILE_FLAG_OVERLAPPED and lpOverlapped is not NULL, the write operation starts at the offset specified in the OVERLAPPED structure and WriteFile may return before the write operation has been completed. In this case, WriteFile returns FALSE and the GetLastError function returns ERROR_IO_PENDING. This allows the calling process to continue processing while the write operation is being completed. The event specified in the OVERLAPPED structure is set to the signaled state upon completion of the write operation.

If hFile was not opened with FILE_FLAG_OVERLAPPED and lpOverlapped is NULL, the write operation starts at the current file position and WriteFile does not return until the operation has been completed.
If hFile was not opened with FILE_FLAG_OVERLAPPED and lpOverlapped is not NULL, the write operation starts at the offset specified in the OVERLAPPED structure and WriteFile does not return until the write operation has been completed.



Return Values

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

If part of the file is locked by another process and the write operation overlaps the locked portion, this function fails.
Applications must not read from nor write to the output buffer that a write operation is using until the write operation completes. Premature access of the output buffer may lead to corruption of the data written from that buffer.
Characters can be written to the screen buffer using WriteFile with a handle to console output. The exact behavior of the function is determined by the console mode. The data is written to the current cursor position. The cursor position is updated after the write operation.

Unlike the MS-DOS operating system, Windows NT interprets zero bytes to write as specifying a null write operation and WriteFile does not truncate or extend the file. To truncate or extend a file, use the SetEndOfFile function.
When writing to a nonblocking, byte-mode pipe handle with insufficient buffer space, WriteFile returns TRUE with *lpNumberOfBytesWritten < nNumberOfBytesToWrite.
When an application uses the WriteFile function to write to a pipe, the write operation may not finish if the pipe buffer is full. The write operation is completed when a read operation (using the ReadFile function) makes more buffer space available.

If the anonymous read pipe handle has been closed and WriteFile attempts to write using the corresponding anonymous write pipe handle, the function returns FALSE and GetLastError returns ERROR_BROKEN_PIPE.
The WriteFile function may fail with ERROR_INVALID_USER_BUFFER or ERROR_NOT_ENOUGH_MEMORY whenever there are too many outstanding asynchronous I/O requests.
To cancel all pending asynchronous I/O operations, use the CancelIO function. This function only cancels operations issued by the calling thread for the specified file handle. I/O operations that are canceled complete with the error ERROR_OPERATION_ABORTED.

If hFile is a handle to a named pipe, the Offset and OffsetHigh members of the OVERLAPPED structure pointed to by lpOverlapped must be zero, or the function will fail.

See Also

CancelIo, CreateFile, GetLastError, GetOverlappedResult, GetQueuedCompletionStatus, OVERLAPPED, ReadFile, SetEndOfFile, WriteFileEx


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

WriteFile



Функция WriteFile записывает данные в файл и разработана как для синхронной так и асинхронной операции. Функция начинает писать данные в файл в позиции указанный файловым указателем. После того, как записывать операция будет завершена, файловый указатель скорректирован количеством байтов действительно записанных, кроме когда файл открыт FILE_FLAG_OVERLAPPED. Если файловая ручка была создана для перекрытого ввода и выхода (В/В), приложение должно отрегулировать позицию файлового указателя после того, как записывать операция будет завершена.

BOOL WriteFile(

РУЧКА hFile, // оперируется в файл, чтобы записываться на LPCVOID lpBuffer, // указатель в данные, чтобы записываться в файл DWORD nNumberOfBytesToWrite, // количество байтов, чтобы записывать LPDWORD lpNumberOfBytesWritten, // указатель в количество байтов записавших LPOVERLAPPED lpOverlapped // указатель на структурный необходимый для перекрытого В/В
);


Параметры

hFile

Идентифицирует файл, который нужно записывать, чтобы. Файловая ручка по-видимому создана доступом GENERIC_WRITE к файлу.

Windows NT

Для асинхронных записывать операций, hFile может быть любой ручкой открытой флагом FILE_FLAG_OVERLAPPED функцией CreateFile, или ручка розетки возвращалась розеткой или принимала функции.

Windows 95

Для асинхронных записывать операций, hFile может быть ресурсом связи, mailslot, или назвавшее ручку трубы открывался флагом FILE_FLAG_OVERLAPPED CreateFile, или ручка розетки возвращалась розеткой или принимала функции. Windows 95 не поддерживает асинхронные записывать операции в дисковых файлах.

lpBuffer

Точки на буфер, содержащие данные, которые нужно записывать в файл.

nNumberOfBytesToWrite

Определяет количество байтов, чтобы записываться в файл.
В отличие от операционной системы МС-DOS, Windows NT интерпретирует величину нуля как определение недействительной записывать операции. Недействительная записывать операция не записывает любые байты но заставляет марку времени, чтобы изменяться.

Операции записи Поименованной трубы через сеть ограниченные 65535 байтами.

lpNumberOfBytesWritten

Точки на количество байтов записанных этим функциональным вызовом. WriteFile УСТАНАВЛИВАЕТ эту величину в нуль перед занятие любой проверки работы или ошибки.
Если lpOverlapped, НЕДЕЙСТВИТЕЛЬНО, lpNumberOfBytesWritten не может быть НЕДЕЙСТВИТЕЛЕН.
Если lpOverlapped, не НЕДЕЙСТВИТЕЛЬНО, lpNumberOfBytesWritten может быть НЕДЕЙСТВИТЕЛЕН. Если это - перекрытая записывать операция, Вы можете записать количество байтов вызовом GetOverlappedResult. Если hFile связан портом завершения В/В, Вы можете записать количество байтов вызовом GetQueuedCompletionStatus.

lpOverlapped

Точки на ПЕРЕКРЫТУЮ структуру. Эта структура потребовалась если hFile был открыт FILE_FLAG_OVERLAPPED.

Если hFile был открыт FILE_FLAG_OVERLAPPED, lpOverlapped параметр не должен быть НЕДЕЙСТВИТЕЛЕН. Это должно указать на правильную ПЕРЕКРЫТУЮ структуру. Если hFile был открыт FILE_FLAG_OVERLAPPED и lpOverlapped НЕДЕЙСТВИТЕЛЕН, функция может неправильно сообщить, что записывать операция завершенна.
Если hFile был открыт FILE_FLAG_OVERLAPPED и lpOverlapped не НЕДЕЙСТВИТЕЛЕН, записывать операция начинается в смещении определенном в ПЕРЕКРЫТОЙ структуре и WriteFile может возвращаться прежде, чем записывать операция будет завершена. В этом случае, ЛОЖЬ возврата WriteFile и функциональный возврат GetLastError ERROR_IO_PENDING. Это позволяет вызов процесса, чтобы продолжать обрабатывать тогда как записывать операция завершается. Событие определенное в ПЕРЕКРЫТОЙ структуре установлено в сигнальное состояние записывать операции.

Если hFile не был открыт FILE_FLAG_OVERLAPPED и lpOverlapped НЕДЕЙСТВИТЕЛЕН, записывать операция начинается в текущей файловой позиции и WriteFile не возвращается пока операция не завершена.
Если hFile не был открыт FILE_FLAG_OVERLAPPED и lpOverlapped не НЕДЕЙСТВИТЕЛЕН, записывать операция начинается в смещении определенном в ПЕРЕКРЫТОЙ структуре и WriteFile не возвращается пока записывать операция не завершена.



Обратные Величины

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

Замечания

Если часть файла заперта другим процессом и записывать операция перекрывает закрытую часть, эта функция терпит неудачу.
Приложения по-видимому не прочитаются из ни записываются в выходной буфер, что записывать операция использует пока записывать операция не завершится. Преждевременный доступ выходного буфера может провести к коррупции данных записанных из этого буфера.
Символы могут быть записаны в экранный буфер, использовавший WriteFile с ручкой, чтобы утешать выход. Точное поведение функции определено консольным режимом. Данные записаны в текущую позицию курсора. Позиция курсора скорректирована после записывать операции.

В отличие от операционной системы МС-DOS, Windows NT интерпретирует нулевые байты, чтобы записывать как определение недействительной записывать операции и WriteFile не исключает или расширяет файл. Для того, чтобы исключать или расширять файл, используйте функцию SetEndOfFile.
При записи на nonblocking, ручка байтового режима трубы с недостаточным буферным пространством, ИСТИНА возврата WriteFile с *lpNumberOfBytesWritten < nNumberOfBytesToWrite.
Когда приложение использует функцию WriteFile, чтобы записываться в трубу, записывать операция не может завершаться если буфер трубы полный. Записывать операция завершена когда операция чтения (использование функции ReadFile), делает более буферным космическим доступным.

Если ручка трубы анонимного чтения закрыта и попытки WriteFile, чтобы записывать используя соответствующую анонимную записывать ручку трубы, функциональная ЛОЖЬ возврата и возврата GetLastError ERROR_BROKEN_PIPE.
Функция WriteFile может потерпеть неудачу с ERROR_INVALID_USER_BUFFER или ERROR_NOT_ENOUGH_MEMORY всякий раз, когда есть слишком много выдающиеся асинхронные запросы В/В.
Для того, чтобы отменять все незаконченные асинхронные операции В/В, используйте функцию CancelIO. Эта функция только отменяет операции выпущенные вызовом резьбы для определенной файловой ручки. ОПЕРАЦИИ В/В, которые отменены кончать с ошибкой ERROR_OPERATION_ABORTED.

Если hFile - ручка в поименованной трубе, Смещение и участники OffsetHigh ПЕРЕКРЫТОЙ структуры указанной, чтобы lpOverlapped должны быть нуль, или функция потерпит неудачу.

Смотри Также

CancelIo, CreateFile, GetLastError, GetOverlappedResult, GetQueuedCompletionStatus, ПЕРЕКРЫТОЕ, ReadFile, SetEndOfFile, WriteFileEx


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz