Windows 2000 における OBJECT_ATTRIBUTES の Attribute サポート

_OBJECT_ATTRIBUTES (ntdef.h) - Win32 apps | Microsoft Docs

typedef struct _OBJECT_ATTRIBUTES {
ULONG           Length;
HANDLE          RootDirectory;
PUNICODE_STRING ObjectName;
ULONG           Attributes;
PVOID           SecurityDescriptor;
PVOID           SecurityQualityOfService;
} OBJECT_ATTRIBUTES;

Windows の OBJECT_ATTRIBUTES 構造体
Attributes 変数について

#define OBJ_INHERIT  0x00000002
#define OBJ_PERMANENT  0x00000010
#define OBJ_EXCLUSIVE  0x00000020
#define OBJ_CASE_INSENSITIVE  0x00000040
#define OBJ_OPENIF  0x00000080
#define OBJ_OPENLINK  0x00000100
#define OBJ_KERNEL_HANDLE  0x00000200
#define OBJ_FORCE_ACCESS_CHECK  0x00000400

#define OBJ_IGNORE_IMPERSONATED_DEVICEMAP 0x00000800
#define OBJ_DONT_REPARSE 0x00001000

下2つは Vista 以降のものだと思われます
水色の2つは Windows 2000では非対応だというサイトを多く見かけるので調べてみました。

下記コードは最新版のWindows 2000用 NTOSKRNL.EXE です

 L004D7649:
          cmp    dword ptr [eax],00000018h
          jnz    L004D7711
          test    dword ptr [eax+0Ch],FFFFF80Dh // OBJ_VALID_ATTRIBUTES
          jnz    L004D7711
          mov    ecx,[eax+04h]
          mov    [ebx+04h],ecx
          mov    ecx,[eax+0Ch]
          and    ecx,000007F2h
          mov    [ebx],ecx
          cmp    byte ptr [ebp+10h],00h
          jz     L004D767B
          and    ch,FDh
          mov    [ebx],ecx

OBJ_VALID_ATTRIBUTES  の値が  0xFFFFF80D なので、水色の部分までサポートしているのが分かります

 

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です