MmSecureVirtualMemoryEx 関数 (ntddk.h)
このルーチンは、要求されたアドレス範囲をプローブし、指定されたアドレス範囲を保護して、保護をより制限し、削除されないようにします。
構文
HANDLE MmSecureVirtualMemoryEx(
PVOID Address,
SIZE_T Size,
ULONG ProbeMode,
ULONG Flags
);
パラメーター
Address
プローブしてセキュリティで保護するベース アドレスへのポインター。
Size
セキュリティで保護する範囲のサイズをバイト単位で指定します。
ProbeMode
許可される最も制限の厳しいページ保護を指定します。 PAGE_READWRITEを使用して、アドレス範囲を読み取り可能と書き込み可能の両方に保つ必要があることを指定するか、PAGE_READONLYを使用してアドレス範囲を読み取り可能な状態に保つ必要があることを指定します。
ProbeMode | 意味 |
---|---|
PAGE_READWRITE | 保護をPAGE_NOACCESSまたはPAGE_READONLYに変更することはできません。 その他の保護の変更はすべて許可されます。 |
PAGE_READONLY | 保護をPAGE_NOACCESSに変更することはできません。 その他の保護の変更はすべて許可されます。 |
Flags
次のフラグの 1 つ以上を指定します。
旗 | 形容 |
---|---|
MM_SECURE_EXCLUSIVE | セキュリティ保護は、問題の VAD に固定されている他のセキュリティで保護されていない場合にのみ成功します。 |
MM_SECURE_NO_CHANGE | 一度適用すると、指定された仮想アドレスリージョンに対する保護の変更は許可されません。 プロセスが終了している場合でも、リージョンを削除できます。 |
MM_SECURE_USER_MODE_ONLY | このセキュリティ保護で指定された保護は、保護を変更しようとしているユーザー モードからの後続の呼び出しにのみ適用されます (カーネル モードの呼び出し元はこのセキュリティ保護をバイパスします)。 |
MM_SECURE_NO_INHERIT | プロセスが複製されている場合、親プロセスとは異なり、子プロセスの VAD はセキュリティで保護されません。 |
戻り値
範囲のセキュリティ保護を解除するためにのみ使用されるハンドルに似た値を返します。
保護の問題、コミットされていないメモリ、または無効なパラメーターのために範囲をロックできなかった場合、このルーチンは NULL を返します。
備考
指定されたビューで保護の変更を許可しないように MM_SECURE_NO_CHANGE を指定する必要がある場合は、mmSecureVirtualMemoryではなく、mmSecureVirtualMemoryEx を使用します。
この関数からの戻り値は、mmUnsecureVirtualMemoryでのみ使用できます。 ドライバーは、通常の状態に範囲を返すルーチンを呼び出します。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 10 バージョン 1809 |
ヘッダー | ntddk.h |
IRQL | APC_LEVEL |