Avshws avshws.h Try004

Avshws(AVStream simulated hardware sample driver)を見ていき、気になったところをピックアップします。

github.com

プロジェクト名と同じ名前のヘッダーファイルavshws.hを見ます。冒頭からのツッコミ…

/*
    AVStream Simulated Hardware Sample
    Copyright (c) 2001, Microsoft Corporation.
*/

をぃ。これ書いている時点で20年前のソースコードorz

ざっと見ました。標準のヘッダーの参照や#define群があります。このファイルは全ソースファイルに入れておくものでしょう。あとこのAvstreamで重要なヘッダーKs.h, Ksmedia.hの参照もこのファイルに記述されています。

docs.microsoft.com

PVOID operator new
(
    size_t iSize,
    _When_((poolType & NonPagedPoolMustSucceed) != 0, __drv_reportError("Must succeed pool allocations are forbidden. Allocation failures cause a system crash")) POOL_TYPE poolType
);

new演算子の定義(deleteもある)…こんなのあるんだね。知らなかったわw というか、C++は全ての演算子をこうして定義できることは知っていたが、このようにわざわざ書くということは、メモリの確保の仕方が標準と違うのだろうな。
これは実際このような時に使われるそうな。

    CClass *cp = new (/* POOLTYPE */ 0) CClass();

あと、見慣れない_When_()は、SALというらしい。パラメーターの補足説明になるらしい。

うむ。定義を見る段階では、これ以上差し当たって問題となるソースコードの内容は無いな。次はDriverEntry関数のあるdevice.cppから見ようっと。

寝る