Строки формата
Строка формата — это интерпретируемый маркер, понятный обработчику 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 | Неинтерпретированный символ панели. |