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


Строки формата

Строка формата — это интерпретируемый маркер, понятный обработчику NDR. Строки форматирования часто называются MOP; В этой документации используется термин "строка формата".

Точнее, символ формата — это отдельный (атомарный) интерпретируемый токен. Каждый символ формата имеет размер в один байт. Строка форматирования — это последовательность символов форматирования или символов форматирования и числовых данных. Термин дескриптор также используется для именования общих последовательностей; Например, строка формата параметра или дескриптор параметра — это строка формата, используемая для описания параметра подпрограммы.

Символы формата имеют символические имена, например FC_LONG или FC_STRUCT. Все строковые символы формата, используемые MIDL и подсистемой недоставки, определяются в файле Ndrtypes.h.

Форматирование строковых таблиц

Подсистема использует две основные таблицы строк формата: таблица строк формата процедуры __MIDL_ProcFormatString, в которых хранятся дескрипторы процедур; и таблица строк формата типов , __MIDL_TypeFormatString, которая хранит дескрипторы типа данных. Компилятор создает оба файла main заглушки (*_c.c, *_s.c, *_p.c). Таблица строк формата процедуры используется в основном различными интерпретаторами, но она также используется для преобразования буфера независимо от режима компилятора. Таблица строк формата типов используется при вызове основного обработчика NDR, чтобы указать определенные типы данных, с которыми нужно работать.

Формат строкового нотации

Нотация, используемая в этом документе, соответствует общим рекомендациям по описанию программирования, а линейчатая строка ( | ) используется для обозначения альтернативных конструкций и квадратные скобки ( [ ] ), используемые для обозначения необязательных элементов. Строки формата часто складываются для удобства чтения (подотчетности). В этом документе fc обозначает один символ формата. Символы формата представлены во всех CAPS с использованием их фактических символьных имен. Другие произвольные поля представлены именем и размером.

Угловые скобки ( <> ) используются для обозначения размеров дескрипторов. Используются соглашения, показанные в следующей таблице.

Notation Значение
< N> Размер дескриптора составляет n байтов.
<> Размер дескриптора зависит.
{<>}* Дескриптор повторяется любое количество раз (0,1,2 ...).

 

Следующие символы формата имеют особое значение.

Знак Значение
FC_END Указывает конец некоторых строк формата.
FC_PAD Неинтерпретированный символ панели.