次の方法で共有


RtlZeroDeviceMemory 関数 (wdm.h)

RtlZeroDeviceMemory 関数は、RtlFillDeviceMemory に関する便利なラッパーです。

構文

volatile void * RtlZeroDeviceMemory(
  [out] volatile void *Destination,
  [in]  size_t        Length
);

パラメーター

[out] Destination

ゼロで埋めるメモリ ブロックの開始アドレスへのポインター。

[in] Length

0 で埋めるメモリ ブロックのサイズ (バイト単位)。

戻り値

Destination の値を返 します

注釈

RtlZeroDeviceMemory 関数は、RtlFillDeviceMemory に関する便利なラッパーです。

詳細については、「 RtlFillDeviceMemory」の「解説」セクションを参照してください。

注意

この関数は、最新のバージョンだけでなく、すべてのバージョンの Windows で動作します。 wdm.h ヘッダーから関数宣言を取得するには、最新の WDK を使用する必要があります。 また、最新の WDK のライブラリ (volatileaccessk.lib) も必要です。 ただし、結果として得られるドライバーは、古いバージョンの Windows では正常に実行されます。

// In this scenario we are setting data on memory mapped
// as "device memory" (for example, memory not backed by RAM) to the value zero. On
// some platforms like ARM64, device memory cannot tolerate
// memory accesses that are not naturally aligned (for example, a 4-byte
// load must be 4-byte aligned). Functions like memset, RtlFillMemory,
// and even RtlFillVolatileMemory may perform unaligned memory accesses
// because it is typically faster to do this.
// To ensure only naturally aligned accesses happen, use RtlFillDeviceMemory.
//
// RtlZeroDeviceMemory is an wrapper around RtlFillDeviceMemory that sets the memory
// to zero.

RtlZeroDeviceMemory(DeviceMemoryBuffer, 100);

要件

要件
Header wdm.h (Wdm.h を含む)
Library volatileaccessk.lib (カーネル モード)、volatileaccessu.lib (ユーザー モード)

こちらもご覧ください

RtlFillDeviceMemory