次の方法で共有


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
ターゲット プラットフォーム 万国
ヘッダー d3dkmthk.h (D3dkmthk.h を含む)
ライブラリ Gdi32.lib
DLL Gdi32.dll

関連項目

D3DKMT_LOCK