WinAPI - Как мне интерпретировать битовую маску 0 (LMShare.h / STYPE_DISKTREE)? - PullRequest
2 голосов
/ 23 ноября 2011

Я работаю с функцией NetShareEnum в Windows API.Он может вернуть структуру SHARE_INFO_2 .Эта структура содержит элемент shi2_type, который определен как «битовая маска флагов, которые определяют тип общего ресурса».Значения битовой маски определены в LMSHare.h

#define STYPE_DISKTREE       0    // Disk drive.
#define STYPE_PRINTQ         1    // Print queue.
#define STYPE_DEVICE         2    // Communication device.
#define STYPE_IPC            3    // Interprocess communication (IPC).

Я не знаю, как интерпретировать STYPE_DISKTREE.Поскольку это битовая маска с нулем, я не могу использовать побитовое И для маски и сравнивать ее с маской, чтобы увидеть, установлена ​​ли она.То есть

(shi2_type & STYPE_DISKTREE) == STYPE_DISKTREE

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

shi2_type == STYPE_DISKTREE

, что означает, что общий ресурс диска является исключительно общим диском и ничего больше.

1 Ответ

3 голосов
/ 23 ноября 2011

Из документации :

Битовая маска флагов, указывающих тип общего ресурса.При вызовах функции NetShareSetInfo этот элемент игнорируется.

Можно указать один из следующих флагов.

STYPE_DISKTREE

STYPE_PRINTQ

STYPE_DEVICE

STYPE_IPC

Кроме того, можно указать один или оба из следующих флагов.

STYPE_SPECIAL

STYPE_TEMPORARY

Таким образом, нижняя часть shi2_type будет представлять собой DISKTREE, PRINTQ, DEVICE или IPC, а верхняя часть может содержать SPECIAL и / или TEMPORARY.К сожалению, документация не содержит явных указаний о размере частей, но поскольку существует только 4 типа, вы можете просто взять младший байт.Вы также можете просто отбросить старший байт, так как именно здесь определены 2 флага.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...