共用方式為


建立音訊驅動程序物件

在使用者模式中,COM 對像是使用 CoCreateInstance 等函式來建立的(如 Microsoft Windows SDK 檔中所述),其中用戶端不知道如何配置物件所需的記憶體。 不過,在核心模式中,記憶體配置往往受到嚴格控制,則需要建立不同的物件方法。

音訊驅動程式模型會使用 COM 介面的概念,如 IUnknown 介面所定義。 不過,音訊驅動程式並不需要存取登錄或使用進程內部伺服器等機制。 迷你埠驅動程式不需要支持匯總功能。

依照慣例,用來建立特定物件類別的函式一律採用相同的形式:

NTSTATUS CreateMyObject(
   OUT PUNKNOWN  *Unknown,
   IN REFGUID ClassId,
   IN PUNKNOWN OuterUnknown OPTIONAL,
   IN POOL_TYPE PoolType
 );

參數

未知
指向IUnknown介面指標的指標。 函式會透過 Unknown 輸出新建立對象的參考。

ClassId
指定透過參考傳遞的類別 GUID。 只有當函式建立多個類別的物件時,才會使用此參數。 否則,它會設定為 NULL

OuterUnknown
指定用於匯總新物件的 IUnknown 介面。 此參數可以設定為 NULL ,表示不需要匯總。

PoolType
指定要從中配置物件的記憶體集區類型(請參閱 POOL_TYPE)。

前三個參數與 COM CoCreateInstance 函式的參數相同。 如需此類型建立函式的範例,請參閱 Microsoft Windows 驅動程式套件 (WDK) 中 Fmsynth 範例音訊驅動程式中的 CreateMiniportMidiFM 函式。

另一個慣例是提供 類別的新Xxx 函式。 這類函式提供簡單的方式來具現化 (建立和初始化) 物件,如下列範例所示:

NTSTATUS NewMyObject(
 OUT PMYINTERFACE  *InterfacePointer,
 IN PUNKNOWN  OuterUnknown OPTIONAL,
 IN POOL_TYPE  PoolType,
  // ...more parameters
 );

NewMyObject 函式會建立並初始化對象,然後將指標傳回介面。 因為初始化參數是類別特定的,所以 NewXxx 函式的原型也是如此。 NewXxx 函式可讓您方便存取 物件的建構函式。

如需此類型之 NewXxx 函式的範例,請參閱 PcNewDmaChannel