CreateHardwareEventMoniker 函数

[此函数可通过具有 Service Pack 2 (SP2) 和 Windows Server 2003 的 Windows XP 使用。 在后续版本的 Windows 中,它可能已更改或不可用。]

创建表示硬件组件及其关联的事件处理程序的名字对象。 自动播放使用此函数允许应用程序使用自动播放事件。

语法

HRESULT CreateHardwareEventMoniker(
  _In_  REFCLSID clsid,
  _In_  LPCTSTR  pszEventHandler,
  _Out_ IMoniker **ppmoniker
);

参数

clsid [in]

类型: REFCLSID

名字对象绑定到的类的 ID。

pszEventHandler [in]

类型: LPCTSTR

事件处理程序的名称。

ppmoniker [out]

类型: IMoniker**

接收 IMoniker 接口指针的指针变量的地址。

返回值

类型: HRESULT

如果此函数成功,则返回 S_OK。 否则,它将返回 HRESULT 错误代码。

备注

注册正在运行的应用程序时,请使用 CreateHardwareEventMoniker ,以便这些应用程序有权访问自动播放事件。 若要在运行的应用程序中使用自动播放事件,必须先创建实现 IHWEventHandler 接口的新组件。 使用 处理程序键下 特定处理程序条目的 InitCmdLine 值初始化此接口,因为 AutoPlay 不调用 Initialize 方法。

应调用 CreateHardwareEventMoniker 以获取表示组件及其事件处理程序的名字对象。 然后,使用 ppmoniker 参数中返回的值在运行的对象表中注册组件, (ROT) ,如示例中所示。

请注意, CreateHardwareEventMoniker 未在头文件中定义。 若要在代码中使用它,必须通过调用 LoadLibrary 获取Shsvcs.dll文件的句柄。 然后,在调用 GetProcAddress 时使用该句柄获取 CreateHardwareEventMoniker 函数的实例。

调用 IRunningObjectTable::Register 需要你在注册表中输入以下 AppID 信息。

HKEY_CLASSES_ROOT
   AppID
      MyApp.exe
         (Default) = MyApplication
         AppID [REG_SZ] = {Your GUID here}
HKEY_CLASSES_ROOT
   AppID
      {The same GUID here}
         (Default) = MyApplication
         RunAs = Interactive User

要求

要求
最低受支持的客户端
Windows XP [仅限桌面应用]
最低受支持的服务器
Windows Server 2003 [仅限桌面应用]
标头
DLL
Shsvcs.dll