D3DKMTLock 関数 (d3dkmthk.h)

D3DKMTLock 関数は、割り当て全体または割り当て内の特定のページをロックします。

構文

NTSTATUS D3DKMTLock(
  D3DKMT_LOCK *unnamedParam1
);

パラメーター

unnamedParam1

pData [in, out]

割り当てをロックするためのパラメーターを記述する D3DKMT_LOCK 構造体へのポインター。

戻り値

D3DKMTLock は 、次のいずれかの値を返します。

リターン コード 説明
STATUS_SUCCESS 割り当てが正常にロックされました。
STATUS_DEVICE_REMOVED グラフィックス アダプターが停止したか、ディスプレイ デバイスがリセットされました。
STATUS_INVALID_PARAMETER パラメーターが検証され、正しくないと判断されました。
STATUS_GRAPHICS_ALLOCATION_BUSY 割り当ては現在使用中であり、ロックできませんでした。
STATUS_GRAPHICS_TOO_MANY_REFERENCES 割り当てで保留中の参照が多すぎます。
STATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION 割り当てをロックできませんでした。これは、デスワイズリングの絞りが使用できなかったため、および割り当てがピン留めされ、削除できなかったためです。

この関数は、他の NTSTATUS 値も返す場合があります。

注釈

D3DKMTLock 関数は、システム メモリ割り当てとビデオ メモリ割り当てにアクセスするために呼び出されます。

次のコード例では、OpenGL ICD で D3DKMTLock を使用して割り当て全体をロックする方法を示します。

VOID* LockEntireAllocation(D3DKMT_HANDLE hDevice, D3DKMT_HANDLE hAllocation, UINT PrivateData)
{
    D3DKMT_LOCK LockAllocation = {0};

    LockAllocation.hDevice = hDevice;
    LockAllocation.hAllocation = LockData.hAllocation;
    LockAllocation.Flags.LockEntire = TRUE;
    LockAllocation.PrivateDriverData = PrivateData;
    LockAllocation.NumPages = 0;
    LockAllocation.pPages = NULL;
 
    if (NT_SUCCESS((*pfnKTLock)(&LockAllocation))) {
        return LockAllocation.pData;
    }
    return NULL;
}

要件

要件
サポートされている最小のクライアント Windows Vista
対象プラットフォーム ユニバーサル
Header d3dkmthk.h (D3dkmthk.h を含む)
Library Gdi32.lib
[DLL] Gdi32.dll

こちらもご覧ください

D3DKMT_LOCK