共用方式為


PcNewRegistryKey 函式 (portcls.h)

PcNewRegistryKey 函式會開啟或建立新的登錄機碼,並建立 IRegistryKey 物件來代表機碼。 呼叫端會透過這個物件存取金鑰。

語法

PORTCLASSAPI NTSTATUS PcNewRegistryKey(
  [out]           PREGISTRYKEY       *OutRegistryKey,
  [in, optional]  PUNKNOWN           OuterUnknown,
  [in]            ULONG              RegistryKeyType,
  [in]            ACCESS_MASK        DesiredAccess,
  [in, optional]  PVOID              DeviceObject,
  [in, optional]  PVOID              SubDevice,
  [in, optional]  POBJECT_ATTRIBUTES ObjectAttributes,
  [in, optional]  ULONG              CreateOptions,
  [out, optional] PULONG             Disposition
);

參數

[out] OutRegistryKey

輸出此函式所建立之登錄機碼物件的指標。 此參數指向呼叫端配置的指標變數,函式會將指標輸出至 IRegistryKey 物件。 物件代表要開啟或建立的登錄機碼。 指定此參數的有效非NULL 指標值。

[in, optional] OuterUnknown

需要匯總 OutRegistryKey 物件的物件 IUnknown 介面指標。 除非需要匯總,否則請將此參數設定為 NULL

[in] RegistryKeyType

指定呼叫端想要建立或開啟的登錄機碼類型。 如需詳細資訊,請參閱接下來的<備註>一節。

[in] DesiredAccess

指定訪問控制遮罩。 此參數是類型 ACCESS_MASK的結構。 它指出呼叫端要求要開啟或建立之登錄機碼的存取類型。 如需詳細資訊,請參閱接下來的<備註>一節。

[in, optional] DeviceObject

配接器驅動程式裝置物件的指標。 此指標會轉換成 PVOID 類型。 如果 RegistryKeyTypeGeneralRegistryKey 以外的任何值,此參數必須指向 DEVICE_OBJECT類型的有效初始化系統結構。 如果 RegistryKeyType 的值是 GeneralRegistryKey則 PcNewRegistryKey 函式不會使用此參數。 如需詳細資訊,請參閱接下來的<備註>一節。

[in, optional] SubDevice

指定要提供給客戶端的裝置層面。 配接器驅動程式 必須將NULL值 指派給此參數。

[in, optional] ObjectAttributes

要建立或開啟之索引鍵之物件屬性的指標。 如果 RegistryKeyType 具有 GeneralRegistryKey 值,此參數必須指向具有密鑰有效 ObjectName 字串之類型OBJECT_ATTRIBUTES的有效初始化系統結構;否則,函式不會使用此參數。 如需詳細資訊,請參閱接下來的<備註>一節。

[in, optional] CreateOptions

指定建立選項。 如果不需要的話,可以為零。 如果 RegistryKeyType 不是 GeneralRegistryKey,PcNewRegistryKey 函式會忽略此參數。 如需詳細資訊,請參閱接下來的<備註>一節。

[out, optional] Disposition

接收值的變數指標,指出是否已建立索引鍵或開啟現有的索引鍵。 此參數是選擇性的,可以指定為 NULL。 如果 RegistryKeyTypeGeneralRegistryKey 以外的任何值, 則 PcNewRegistryKey 函式會忽略此參數。 如需詳細資訊,請參閱接下來的<備註>一節。

傳回值

如果呼叫成功,PcNewRegistryKey 會傳回STATUS_SUCCESS。 否則,它會傳回適當的錯誤碼。

備註

如果 RegistryKeyType 參數的值是 GeneralRegistryKey則 PcNewRegistryKey 函式會開啟現有的機碼或在登錄中建立新的機碼,如函式透過 Disposition 參數輸出的值所指出。 如果機碼屬於 GeneralRegistryKey 以外的任何類型,則函式會開啟先前在 隨插即用 裝置列舉期間建立的現有索引鍵。

DesiredAccessObjectAttributesCreateOptionsDisposition 參數會採用針對 ZwCreateKey 呼叫中具有相同名稱的參數所定義的值。

RegistryKeyType 參數應該設定為下表所示的其中一個列舉值。

RegistryKeyType 值 意義
GeneralRegistryKey 提供任何索引鍵類型的泛型存取。 如果指定索引鍵已經存在,或如果沒有,請開啟指定的索引鍵。
DeviceRegistryKey 開啟包含裝置特定資訊的現有金鑰。 金鑰位於 DeviceObject 所指定之裝置實例的密鑰底下。
DriverRegistryKey 開啟包含驅動程式特定資訊的現有金鑰。
HwProfileRegistryKey 開啟與包含裝置或驅動程式資訊之目前硬體配置檔相對的現有金鑰。 這可讓驅動程式存取硬體配置檔專屬的組態資訊。
DeviceInterfaceRegistryKey 未搭配 PcNewRegistryKey使用。 如需詳細資訊,請參閱 IPort::NewRegistryKey
 

對於 GeneralRegistryKeyRegistryKeyType 值,呼叫端必須提供有效的 ObjectAttributes 參數值,而 CreateOptionsDisposition 參數是選擇性的。 對於任何其他 RegistryKeyType 值,呼叫端必須提供有效的 DeviceObject 參數值,而且不會使用 CreateOptionsDisposition 參數。

ObjectAttributes 參數指向類型OBJECT_ATTRIBUTES的不透明結構,其中包含密鑰名稱和安全性描述元等物件屬性。 使用 InitializeObjectAttributes 宏來初始化 結構。 在此宏的 Attributes 參數中,除非您想要允許非安全、使用者模式應用程式具有登錄機碼的讀取/寫入存取權,否則請設定OBJ_KERNEL_HANDLE旗標。

DesiredAccess 參數是訪問控制遮罩。 它會指定呼叫端透過 OutRegistryKey 物件存取它時,必須具有新登錄機碼的訪問控制類型。 此遮罩不應與訪問控制清單混淆 (ACL) ,以控制使用者對登錄機碼的存取。 呼叫 PcNewRegistryKey 以建立 GeneralRegistryKey 類型的登錄機碼時, ObjectAttributes 參數會指定密鑰的屬性,包括包含 ACL 的安全性描述元。 不過,如果新索引鍵的類型為 GeneralRegistryKey ,且 ObjectAttributes 結構中的安全性描述元指標為 NULL ,或安全性描述元中的 ACL 指標為 NULL,則新密鑰預設會繼承父密鑰的 ACL。

如果機碼屬於 GeneralRegistryKey 以外的任何類型,則密鑰會保留 ACL,該 ACL 會在裝置列舉期間建立密鑰時 隨插即用 指派給密鑰。

PcNewRegistryKey 函式類似於 IPort::NewRegistryKey 方法,但裝置物件和埠對象必須在 PcNewRegistryKey 呼叫中明確指定,但只是在 NewRegistryKey 呼叫中隱含。 PcNewRegistryKey 主要是由適配卡驅動程式使用。 迷你埠驅動程式通常會改為呼叫 NewRegistryKey

OutRegistryKeyOuterUnknown 參數遵循 COM 對象的參考計數慣例

規格需求

需求
最低支援的用戶端 PortCls 系統驅動程式會在 Microsoft Windows 98/Me 和 Windows 2000 和更新版本的操作系統中實作 PcNewRegistryKey 函式。
目標平台 Universal
標頭 portcls.h (包括 Portcls.h)
程式庫 Portcls.lib
IRQL PASSIVE_LEVEL

另請參閱

ACCESS_MASK

DEVICE_OBJECT

IPort::NewRegistryKey

IRegistryKey

InitializeObjectAttributes

OBJECT_ATTRIBUTES

ZwCreateKey