2

Mac OS でネットワーク カーネル エクステンションを開発したいと考えています。関数 sf_data_in() で gzip 形式のデータを取得しました。という名前のヘッダー ファイルをインクルードしました<libkern/zlib.h>。「kextload」で kext をロードした後、以下のコードを実行すると、Mac がクラッシュしました。

z_stream strm;
bzero(&strm, sizeof(z_stream));

if (Z_OK != inflateInit2(&strm))
{
    printf("inflateInit error.\n");

    inflateEnd(&strm);

    return 0;
}

カーネルプログラミングでの使用方法を教えてくれる人. いくつかのサンプルを提供する方がはるかに優れています。どうもありがとう。

4

2 に答える 2

2

に間違った数のパラメータを渡していinflateInit2()ます。ストリームへのポインタとビット単位のウィンドウサイズの両方が必要です。後者を設定したくない場合は、inflateInit()代わりに使用してください。

zlib、 ppp_deflate.cipcomp_core.cを使用してカーネルコードの一部を確認することもできます。

于 2011-08-18T10:58:33.763 に答える
0

arch/powerpc/boot/gunzip_util.cファイルでzlib カーネル ライブラリが使用されていることがわかりました。コードの出発点として適しているかもしれません。

于 2011-08-18T08:13:22.820 に答える