共用方式為


建立音訊驅動程式物件

在使用者模式中,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 Driver Kit (WDK) Fmsynth 範例音訊驅動程式中的 CreateMiniportMidiFM 函式。

另一個慣例是提供類別的新Xxx 函式。 這類函式可讓您輕鬆地具現化 (建立和初始化物件) ,如下列範例所示:

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

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

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