1

AllocationSize関数のパラメータの目的は何Ntcreatefileですか?

ゼロ以外の値を使用しAllocationSizeてファイルを。で閉じるNtClose場合、実際のファイルサイズは。に等しくありません AllocationSize

なんで ?

このパラメータは役に立たないようです。

ありがとう

4

1 に答える 1

4

NtCreateFile()は引数に対して特別なことは何もせず、MJ_CREATE要求でファイルシステムドライバーに渡すだけです。WDKがどのように使用されているかを確認するには、WDKが必要です。確認するのに適したのはFATドライバーです。これは、src / filesys / fastfat / w2k/create.cで使用されているAllocationSizeにあります。allocsup.c、FatAllocateDiskSpace()への呼び出しチェーンに従います。

予想される割り当てサイズを事前に知っておく機会はたくさんあります。ディスクドライブヘッドがファイルアロケーションテーブルを更新するための適切な場所にすでにある状態で、クラスターを事前に割り当てることができます。また、使用可能なすべてのクラスターを消費する前にボリュームのスペースが不足している場合、create呼び出しに失敗する可能性があります。逆に、失敗しないようにすると、ディスク領域を使い果たすことなくファイルに書き込むことができます。とにかくあなたが求めた以上に書かない限り。

そして確かに、ファイルを閉じると、ファイルサイズは実際に書き込まれたバイト数に更新されます。AllocationSizeは単なるヒントです。

于 2012-12-25T14:25:42.523 に答える