定义和导出新 GUID - Windows drivers

3597 2026-02-21 17:19:50
在适当的头文件中定义 GUID。 使用 DEFINE_GUID 宏(在 Guiddef.h 中定义)将 GUID 符号名称与其值相关联(请参阅示例 1)。 示例 1:在 GUID-Only 头文件

在适当的头文件中定义 GUID。

使用 DEFINE_GUID 宏(在 Guiddef.h 中定义)将 GUID 符号名称与其值相关联(请参阅示例 1)。

示例 1:在 GUID-Only 头文件中定义 GUID

:

DEFINE_GUID( GUID_BUS_TYPE_PCMCIA, 0x09343630L, 0xaf9f, 0x11d0,

0x92,0x9f, 0x00, 0xc0, 0x4f, 0xc3, 0x40, 0xb1 );

DEFINE_GUID( GUID_BUS_TYPE_PCI, 0xc8ebdfb0L, 0xb510, 0x11d0,

0x80,0xE9, 0x00, 0x00, 0xf8, 0x1e, 0x1b, 0x30 );

:

如果 GUID 是在一个包含除了 GUID 定义之外的其他语句的头文件中定义的,则必须执行额外的步骤,以确保 GUID 在包含该头文件的驱动程序中实现。

DEFINE_GUID 语句必须位于阻止多重包含的任何 #ifdef 语句之外。 否则,如果头文件包含在预编译头中,使用该头文件的驱动程序中就不会实例化 GUID。 有关混合头文件中的示例 GUID 定义,请参阅示例 2。

示例 2:在混合头文件中定义 GUID

#ifndef _NTDDSER_ // this ex. is from a serial driver .h file

#define _NTDDSER_

:

// Put other header file definitions here.

:

#endif // _NTDDSER_

#ifdef DEFINE_GUID // Do not break compiles of drivers that

// include this header but that do not

// want the GUIDs.

//

// Put GUID definitions outside of the multiple inclusion

// protection.

DEFINE_GUID(GUID_CLASS_COMPORT, 0x86e0d1e0L, 0x8089, 0x11d0, 0x9c,

0xe4, 0x08, 0x00, 0x3e, 0x30, 0x1f, 0x73);

DEFINE_GUID (GUID_SERENUM_BUS_ENUMERATOR, 0x4D36E978, 0xE325,

0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18);

:

#endif // DEFINE_GUID

将 GUID 定义放在阻止多个包含的语句外部不会在驱动程序中导致 GUID 的多个实例,因为 DEFINE_GUID 将 GUID 定义为EXTERN_C变量。 只要类型匹配,就允许 EXTERN 变量的多个声明。

“情深义重”的读音、意思、造句|QQ图片缓存在哪?2026最全C盘清理指南:手动vs工具,哪个更靠谱?