Программирование драйверов Windows

Union


Объединение, тип данных языка С. Состоит из простых типов данных (char, jnt и т.п.) и вложенных структур или объединений. Реализует доступ к одной и той же области памяти, как к данным разных типов. Например, тип данных LARGE_INTEGER может быть определен (в файле ntdef.h это выполняется при помощи условной компиляции) следующим образом:

typedef union _LARGE_INTEGER { struct { ULONG LowPart; LONG HighPart; } u; LONGLONG QuadPart; } LARGE_INTEGER;

Тип данных LARGE_INTEGER используется, например, в вызове KeSetTimer

для установки таймера. Для того чтобы облегчить установку значений такого типа, можно применять вызов RtlConvertLongToLargeInteger, который скроет от разработчика, как конкретно реализован тип LARGE_INTEGER.

LARGE_INTEGER interval = RtlConvertLongToLargeInteger(100*10);

Здесь и далее обращения к системным функциям (типа RtlXxx, KeXxx, loXxx, read, CreateFile

и т.п.) будут называться вызовами, а в тексте они будут обозначаться жирным шрифтом.



Содержание раздела