パスワードを忘れた? アカウント作成

plustree (9153) の日記

○ ◎ ●

謎の挙動

plustree による 2007年08月29日 16時31分 の日記 (#413573)

良くあるように、「インタフェース」と「クラス」を分けて、とあるクラスを定義する。

class INTERFACE1
{
};
 
class PUBLIC_CLASS1 : public INTERFACE1
{
};

もう一通りインタフェースとクラスを分けて定義するが、こちらは上記のインタフェース/クラスを返すメソッドも定義する。

class INTERFACE2
{
public:
    virtual INTERFACE1 *f() = 0;
};
 
class PUBLIC_CLASS2 : public INTERFACE2
{
public:
    virtual PUBLIC_CLASS1 *f();
};

ここまでは何の問題もない。

続いて、PUBLIC_CLASS2 の実体は隠蔽したいなあと思い、さらに派生させて

class PUBLIC_CLASS2 : public INTERFACE2
{
public:
    virtual PUBLIC_CLASS1 *f() = 0;
};
 
class IMPLEMENT_CLASS2 : public PUBLIC_CLASS2
{
public:
    virtual PUBLIC_CLASS1 *f();
};

としてみる。これも問題ない。

ちなみに、クラスは DLL でエクスポートしたいので、

class __declspec(dllexport) INTERFACE2
{
public:
    virtual INTERFACE1 *f() = 0;
};
 
class __declspec(dllexport) PUBLIC_CLASS2 : public INTERFACE2
{
public:
    virtual PUBLIC_CLASS1 *f() = 0;
};

としておく。これもOK。

と・こ・ろ・が、である。

ちょっと PUBLIC_CLASS1 に手を加え、別のクラス X を使って

class PUBLIC_CLASS1 : public X, public INTERFACE1
{
};

とした瞬間、事態は起こる。

main.obj : error LNK2001: 外部シンボル ""public: virtual class PUBLIC_CLASS1 * __thiscall PUBLIC_CLASS2::f(void)" (?f@PUBLIC_CLASS2@@UAEPAVPUBLIC_CLASS1@@XZ)" は未解決です。

なんやそら…。

○ ◎ ●

なんてこった

plustree による 2004年02月15日 21時24分 の日記 (#194678)

IntelのオンボードRAIDどころか、SATAすらいまのLinuxは対応してないのかー。
ううう。せっかく買ったディスクをどうしよう。

○ ◎ ●

さらに

plustree による 2004年02月13日 2時06分 の日記 (#193945)

IRP_MJ_READ/WRITE に対しては、irp->IoStatus.Information に読み書きしたバイト数を格納して返さないといけないらしい。

ふむう。

○ ◎ ●

DO_DEVICE_INITIALIZING 恐るべし

plustree による 2004年02月12日 19時12分 の日記 (#193793)

Windows のデバイスドライバを作って遊んでみた。

IoCreateDevice でデバイスを作成したものの、うまく機能しない。どうやら作成自体には成功しているようだが、まるで機能しない。ディスパッチハンドラに制御が飛んでこない。

似たような機能を実現したサンプルと比較してみたら、DO_DEVICE_INITIALIZING なるフラグが立っているみたい。これが残っていると、きっと OS 君は処理を躊躇するのだろう。

というわけで、DO_DEVICE_INITIALIZING をクリアする方法を必死こいて探してみた。初期化処理を完了するためのカーネル API を。しかし、ない。

さらに調べてみると、なんとこのフラグはドライバで勝手にクリアすればいいらしい。
    DeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;

ぬぬぬ。してやられた。

○ ◎ ●

宣言

plustree による 2003年06月11日 0時07分 の日記 (#133225)

一度エントリをクリア。

最近飼いはじめた熱帯魚。
案外照明とかヒーターとか管理面倒なのよねー。

しかも、夏場は暑くなるからヒーターだけでなくクーラー(と言ってもただのファン)の管理もせにゃならんし。

熱帯魚屋に行くとそれなりのグッズはそろっているけど、高いし、設置するにもサイズ合わないしで不満だらけ。

「ないものは作れ」の法則発動ですな。

というわけで、何か作ります。きっと。
サーボ制御はしないけど、PIC は使うでしょう。

| 一覧

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

処理中...