Windows object file library

Object Windows Library

Object Windows Library (OWL) — библиотека классов, разработанная фирмой Borland для создания оконных приложений на языках Си и Pascal. Данная библиотека использовалась во многих средствах программирования компании Borland, таких как Turbo Pascal for Windows, Borland Pascal, Borland C++, C++ Builder и других. Эта библиотека соперничала с Microsoft Foundation Classes.

Впоследствии Borland разработала новую, более удобную и мощную, библиотеку Visual Component Library, написанную на Object Pascal и включённую в Delphi и C++ Builder.

Содержание

Клоны

Существует несколько «клонов» OWL — совместимых с OWL библиотек, над которыми написаны построители программ:

С их помощью создаются установщики программ («инсталляторы»), а также оболочки над текстовыми программами (например, для записи CD-дисков), позволяющие запускать их в графической среде.

OWLNext

Интернет-сообщество открытого программного обеспечения разработало серию исправлений и улучшений оригинальной OWL под названием «OWLNext», в т. ч. для современных компиляторов C++: (BC++ Builder 5, BCC55, BC++ Builder 6, GCC, MSVC++ 6, MSVC 2003, MSVC 2005, BDS C++ 2006, CodeGear C++ 2007).

Версии

(не полный список)

Продукт Версия OWL
Borland C/C++ 3.1 OWL 1.0
Borland C/C++ 2.0 for OS/2 OWL 2.0
Borland C++ 4.0x OWL 2.0
Borland C++ 4.5x OWL 2.5
Borland C++ 5.0x OWL 5.0
Borland C++ 5.0x Japanese OWL 5.0
Borland C++ Builder 4.0 OWL 5.0
Borland C++ Builder 5.0 OWL 5.0
Borland C++ Builder 2007 OWLNext 6.20
Turbo Pascal for Windows 1.0
Turbo Pascal for Windows 1.5
Borland Pascal with Objects 7.0

Ссылки

Wikimedia Foundation . 2010 .

Смотреть что такое «Object Windows Library» в других словарях:

Object Windows Library — Developer(s) Originally Borland (now Codegear) Initial release 1991 Stable release OWLNext 6.30.9 / September 2, 2010; 14 months ago (2010 09 02) … Wikipedia

Windows library files — Like most modern operating systems, Microsoft Windows supports shared libraries, collections of code which can be used by multiple processes while only being loaded once into memory. Windows terms its shared libraries Dynamic link libraries (DLL… … Wikipedia

Microsoft Windows library files — Like most modern operating systems, Microsoft Windows supports shared libraries, collections of code which can be used by multiple processes while only being loaded once into memory. Windows terms its shared libraries Dynamic link libraries… … Wikipedia

Sound Object (SndObj) Library — The Sound Object (SndObj) Library is a C++ object oriented programming library for music and audio development. It is composed of 100+ classes for signal processing, audio, MIDI and file IO and is available, cross platform, for Linux, Windows,… … Wikipedia

Windows Template Library — Тип библиотека (программирование) Разработчик Nenad Stefanovic Написана на С++ Операционная система Microsoft Windows Последняя версия WTL 8.1.11324 (21.11.2011) Лицензия … Википедия

Windows API — (англ. application programming interfaces) общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Microsoft Windows корпорации «Майкрософт» и совместимой с ними свободной… … Википедия

Windows Application Programming Interface — Windows API (application programming interfaces) общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Windows и Windows NT корпорации «Майкрософт». Является самым прямым способом… … Википедия

Windows API — The Windows API, informally WinAPI, is Microsoft s core set of application programming interfaces (APIs) available in the Microsoft Windows operating systems. It was formerly called the Win32 API; however, the name Windows API more accurately… … Wikipedia

Windows Presentation Foundation — This subsystem is a part of .NET Framework 3.0 Developed by Microsoft, the Windows Presentation Foundation (or WPF) is a computer software graphical subsystem for rendering user interfaces in Windows based applications. WPF, previously known as… … Wikipedia

Windows Presentation Foundation — WPF в составе .NET Framework Windows Presentation Foundation (WPF[1]) система для построения клиентских приложений Windows с визуально привлекательными возможностя … Википедия

Библиотека объектов Windows — Object Windows Library

Библиотека объектов Windows
Оригинальный автор (ы) Borland Software Corporation
изначальный выпуск 1991 ; 29 лет назад ( 1991 )
Стабильный выпуск
Написано в C ++
Операционная система Windows
Тип Программный фреймворк
Лицензия Проприетарный с патчами с открытым исходным кодом
Интернет сайт sourceforge .net / projects / owlnext

Библиотека объектных Windows (OWL) — это объектно-ориентированная среда приложений C ++, предназначенная для упрощения разработки настольных приложений для Windows .

OWL был представлен Borland в 1991 году и в конечном итоге стал устаревшим в 1997 году в пользу их библиотеки визуальных компонентов (VCL). Его основным конкурентом была библиотека Microsoft Foundation Class (MFC). OWLNext, проект с открытым исходным кодом, управляемый сообществом пользователей OWL, продолжил обслуживание OWL, гарантируя, что библиотека и приложения, которые его используют, работают с последней версией Windows и современными компиляторами C ++.

Содержание

История

В начале 1990-х годов Borland доминировала на рынке C ++. В 1991 году Borland представила Borland C ++ 3.0, который включал OWL 1.0. В то время C ++ только начинал заменять C для разработки коммерческого программного обеспечения, чему способствовал рост платформы Windows. В этот период OWL был популярным выбором для разработки приложений Windows.

Читайте также:  Удаленный рабочий стол windows консоль

В 1992 году Microsoft представила MFC как часть Microsoft Visual C ++ 7.0. Как подобная среда приложений C ++ для Windows, MFC сразу же стала основным конкурентом OWL на рынке разработки приложений C ++.

OWL 1.0 зависел от Dynamic Dispatch Virtual Tables (DDVT), проприетарного расширения для C ++, которое позволяло программисту связывать сообщения (события) Windows с функциями (обработчиками событий) простым способом и с небольшими затратами времени выполнения. MFC, с другой стороны, использовала решение, которое не требовало расширения языка.

В 1993 году Borland выпустила Borland C ++ 4.0, который включал OWL 2.0. В этой версии OWL проприетарное расширение DDVT было заменено таблицами ответов , решением на основе макросов, совместимым со стандартом C ++ и аналогичным используемому MFC. Инструмент преобразования (OWLCVT) был включен для миграции кода с OWL 1.0 на OWL 2.0.

В апреле 1993 года Borland и Novell заключили соглашение о переносе OWL на Novell AppWare Foundation. AppWare Foundation — это API, разработанный Novell для кроссплатформенности , позволяющий развертывать приложения на клиентах Mac, Windows и Unix, а также с несколькими сетевыми службами. Основными инструментами разработки в AppWare были OWL и AppBuilder. Однако в конце 1994 года генеральный директор Novell Раймонд Ноорда подал в отставку. Планы расширения Novell были пересмотрены, разработка AppWare была остановлена, как и OWL для AppWare. В 1995 году группа первоначальных членов команды купила AppBuilder. В том же году Software UNO предложила коммерческий порт OWL 2.0 на несколько платформ: AIX 3.2.5, DEC OSF / 1 AXP, HP-UX 9.03, Linux 1.2, Solaris 2.x, Sun OS 4.1.x и SVR4. для x86. Он назывался WM_MOTIF.

В 1995 году был выпущен Borland C ++ 4.5 с OWL 2.5. Поскольку он был выпущен до Windows 95 , Borland пообещал бесплатное обновление в случае любой несовместимости, присутствующей в окончательной версии Windows. В августе 1995 года Microsoft запустила Windows 95 и Visual Studio 4.0. К тому времени Visual Studio уже затмила Borland C ++ в поставках, и было ясно, что OWL уступает позиции MFC.

В 1996 году Borland выпустила Borland C ++ 5 для Windows. Эта версия включала OWL 5, серьезную переработку библиотеки. В то время как OWL 5 получил незначительное обновление с выпуском Borland C ++ 5.02 чуть позже, версия 5 стала последней версией OWL от Borland.

В 1997 году Borland выпустила C ++ Builder и исключила Borland C ++. OWL был включен в сопутствующий компакт-диск , поставляемый с C ++ Builder, но Borland прекратил обслуживание и дальнейшее развитие библиотеки.

В конце 1999 года Borland прекратила продажу Borland C ++ и OWL.

СОВАСледующий

Вскоре после того, как Borland завершила разработку OWL, обслуживание было взято на себя группой пользователей во главе с Юрой Бидусом. Эти усилия переросли в проект с открытым исходным кодом OWLNext, который в настоящее время размещен на сайте SourceForge . OWLNext — это современное обновление и расширение OWL с поддержкой последних версий Windows и современных компиляторов C ++ от Microsoft и Embarcadero.

Отправленные релизы

Версия продукта Версия OWL
Borland C / C ++ 3.0 OWL 1.0
Borland C / C ++ 2.0 для OS / 2 СОВА 2.0
Borland C ++ 4.0x СОВА 2.0
Borland C ++ 4.5x СОВА 2.5
Borland C ++ 5.0x СОВА 5.0
Borland C ++ Builder 4.0 СОВА 5.0
Borland C ++ Builder 5.0 СОВА 5.0
CodeGear C ++ Builder 2007 СОВАСледующая 6.20
Embarcadero C ++ Builder XE OWLследующий 6.30
Embarcadero C ++ Builder XE2 OWLNext 6.32

Более поздние версии OWLNext были выпущены через SourceForge.

FILE_OBJECT structure (wdm.h)

The FILE_OBJECT structure is used by the system to represent a file object. To user-mode protected subsystems, a file object represents an open instance of a file, device, directory, or volume. To device and intermediate drivers, a file object usually represents a device object. To drivers in the file system stack, a file object usually represents a directory or file.

A file object is partially opaque. Certain types of drivers, such as file system drivers and network transport drivers, use some of the fields of file objects.

Syntax

Members

A read-only member used by the system to indicate that the object is a file object. If the object is a file object, the value of this member is 5.

A read-only member that specifies the size, in bytes, of the file object. This size does not include the file object extension, if one is present.

A pointer to the device object on which the file is opened.

A pointer to the volume parameter block associated with the file object.

Note that if the Vpb member is non-NULL, the file resides on a mounted volume.

A pointer to whatever optional state a driver maintains about the file object; otherwise, NULL. For file system drivers, this member must point to a FSRTL_ADVANCED_FCB_HEADER header structure that is contained within a file-system-specific structure; otherwise system instability can result. Usually, this header structure is embedded in a file control block (FCB). However, on some file systems that support multiple data streams, such as NTFS, this header structure is a stream control block (SCB).

Читайте также:  Как активировать windows oem ключом

A pointer to whatever additional state a driver maintains about the file object; otherwise, NULL.

A pointer to the file object’s read-only section object. This member is set only by file systems and used for Cache Manager interaction.

An opaque member, set only by file systems, that points to handle-specific information and that is used for Cache Manager interaction.

A read-only member that is used, in certain synchronous cases, to indicate the final status of the file object’s I/O request.

A pointer to a FILE_OBJECT structure used to indicate that the current file object has been opened relative to an already open file object. The file object pointed to by this member is usually a directory (meaning the current file has been opened relative to this directory). However, a file can be reopened relative to itself, and alternate data streams for a file can be opened relative to an already open primary data stream for that same file. The RelatedFileObject member is only valid during the processing of the IRP_MJ_CREATE requests.

A read-only member. If FALSE, a lock operation (NtLockFile) has never been performed on the file object. If TRUE, at least one lock operation has been performed on the file object. Once set to TRUE, this member always remains TRUE (for example, releasing file locks on the file object does not reset this member to FALSE).

A read-only member. If TRUE, a delete operation for the file associated with the file object exists. If FALSE, there currently is no pending delete operation for the file object.

A read-only member. If TRUE, the file associated with the file object has been opened for read access. If FALSE, the file has been opened without read access. This information is used when checking and/or setting the share access of the file.

A read-only member. If TRUE, the file associated with the file object has been opened for write access. If FALSE, the file has been opened without write access. This information is used when checking and/or setting the share access of the file.

A read-only member. If TRUE, the file associated with the file object has been opened for delete access. If FALSE, the file has been opened without delete access. This information is used when checking and/or setting the share access of the file.

A read-only member. If TRUE, the file associated with the file object has been opened for read sharing access. If FALSE, the file has been opened without read sharing access. This information is used when checking and/or setting the share access of the file.

A read-only member. If TRUE, the file associated with the file object has been opened for write sharing access. If FALSE, the file has been opened without write sharing access. This information is used when checking and/or setting the share access of the file.

A read-only member. If TRUE, the file associated with the file object has been opened for delete sharing access. If FALSE, the file has been opened without delete sharing access. This information is used when checking and/or setting the share access of the file.

A read-only member used by the system to hold one or more (a bitwise inclusive OR combination) of the following private flag values.

Flag Meaning
FO_FILE_OPEN Deprecated.
FO_SYNCHRONOUS_IO The file object is opened for synchronous I/O.
FO_ALERTABLE_IO Any wait in the I/O manager, as a result of a request made to this file object, is alertable.
FO_NO_INTERMEDIATE_BUFFERING The file associated with the file object cannot be cached or buffered in a driver’s internal buffers.
FO_WRITE_THROUGH System services, file system drivers, and drivers that write data to the file must transfer the data into the file before any requested write operation is considered complete.
FO_SEQUENTIAL_ONLY The file associated with the file object was opened for sequential I/O operations only.
FO_CACHE_SUPPORTED The file associated with the file object is cacheable. This flag should be set only by a file system driver, and only if the FsContext member points to a valid FSRTL_ADVANCED_FCB_HEADER structure.
FO_NAMED_PIPE The file object represents a named pipe.
FO_STREAM_FILE The file object represents a file stream.
FO_MAILSLOT The file object represents a mailslot.
FO_GENERATE_AUDIT_ON_CLOSE Deprecated.
FO_QUEUE_IRP_TO_THREAD IRPs will not be queued to this file object.
FO_DIRECT_DEVICE_OPEN The device targeted by this file object was opened directly.
FO_FILE_MODIFIED The file associated with the file object has been modified.
FO_FILE_SIZE_CHANGED The file associated with the file object has changed in size.
FO_CLEANUP_COMPLETE The file system has completed its cleanup for this file object.
FO_TEMPORARY_FILE The file associated with the file object is a temporary file.
FO_DELETE_ON_CLOSE The file associated with the file object will be deleted by the file system upon close.
FO_OPENED_CASE_SENSITIVE The file name case of the file associated with the file object is respected.
FO_HANDLE_CREATED A file handle was created for file object.
FO_FILE_FAST_IO_READ A fast I/O read was performed on this file object.
FO_RANDOM_ACCESS The file associated with the file object was opened for random access.
FO_FILE_OPEN_CANCELLED The create request for this file object was canceled before completing.
FO_VOLUME_OPEN The file object represents a volume open request.
FO_REMOTE_ORIGIN The create request for the file associated with the file object originated on a remote machine.
FO_SKIP_COMPLETION_PORT For a file object associated with a port, determines if the system should skip queuing to the completion port when the IRP is completed synchronously with a non-error status return value.
FO_SKIP_SET_EVENT Skip setting the event for the file object upon IRP completion.
FO_SKIP_SET_FAST_IO Skip setting an event supplied to a system service when the fast I/O path is successful.
Читайте также:  Linux дистрибутивы для nvidia

A UNICODE_STRING structure whose Buffer member points to a read-only Unicode string that holds the name of the file opened on the volume. If the volume is being opened, the Length member of the UNICODE_STRING structure will be zero. Note that the file name in this string is valid only during the initial processing of an IRP_MJ_CREATE request. This file name should not be considered valid after the file system starts to process the IRP_MJ_CREATE request. The storage for the string pointed to by the Buffer member of the UNICODE_STRING structure is allocated in paged system memory. For more information about obtaining a file name, see FltGetFileNameInformation.

A read-only member that specifies the file offset, in bytes, associated with the file object.

A read-only member used by the system to count the number of outstanding waiters on a file object opened for synchronous access.

A read-only member used by the system to indicate whether a file object opened for synchronous access is currently busy.

An opaque pointer to the last lock applied to the file object.

An opaque member used by the system to hold a file object event lock. The event lock is used to control synchronous access to the file object. Applicable only to file objects that are opened for synchronous access.

An opaque member used by the system to hold an event object for the file object. The event object is used to signal the completion of an I/O request on the file object if no user event was supplied or a synchronous API was called.

An opaque pointer to completion port information (port pointer and key) associated with the file object, if any.

An opaque pointer to a KSPIN_LOCK structure that serves as the spin lock used to synchronize access to the file object’s IRP list.

An opaque pointer to the head of the IRP list associated with the file object.

An opaque pointer to the file object’s file object extension (FOBX) structure. The FOBX structure contains various opaque contexts used internally as well as the per-file object contexts available through FsRtlXxx routines.

Remarks

Drivers can use the FsContext and FsContext2 members to maintain driver-determined state about an open file object. A driver cannot use these members unless the file object is accessible in the driver’s I/O stack location of an IRP.

All remaining members in a file object are either opaque or read-only:

  • Opaque members within a file object should be considered inaccessible. Drivers with dependencies on object field locations or access to opaque members might not remain portable and interoperable with other drivers over time.
  • Drivers can use read-only members to acquire relevant information but must not modify read-only members and, if a pointer, the object that the member points to.

During the processing of an IRP_MJ_CREATE request, a file system driver calls the IoSetShareAccess routine (if the client is the first to open the file) or the IoCheckShareAccess routine (for subsequent clients that want to share the file). IoSetShareAccess and IoCheckShareAccess update the ReadAccess, WriteAccess, and DeleteAccess members to indicate the access rights that are granted to the client if the client has exclusive access to the file. Additionally, IoCheckShareAccess updates the SharedRead, SharedWrite, and SharedDelete members to indicate the access rights that are simultaneously granted to two or more clients that share the file. If the driver for a device other than a file system has to monitor the access rights of clients, this driver typically stores access rights information in context buffers that are pointed to by the FsContext and FsContext2 members.

CLFS clients do not directly access the members of a LOG_FILE_OBJECT structure.

Оцените статью