Platform SDK: DirectX |
IDirectDrawSurface7::Lock メソッドは、サーフェス メモリへのポインタを取得する。
HRESULT Lock( LPRECT lpDestRect, LPDDSURFACEDESC2 lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent );
成功すれば、DD_OK を返す。
失敗すれば、以下のエラー値のいずれかを返す。
DDERR_INVALIDOBJECT |
DDERR_INVALIDPARAMS |
DDERR_OUTOFMEMORY |
DDERR_SURFACEBUSY |
DDERR_SURFACELOST |
DDERR_WASSTILLDRAWING |
このメソッドの利用についての詳細情報は、「サーフェス メモリへの直接アクセス」を参照すること。
IDirectDrawSurface7 の場合、デフォルトでは、このメソッドはアクセラレータが終了するまで待機する。つまり、デフォルト状態では、このメソッドは DDERR_WASSTILLDRAWING を返さない。エラー コードを受け取り、ブリット処理が成功するまで待機しない場合は、DDLOCK_DONOTWAIT フラグを使用する。
サーフェス メモリ ポインタを取得した後、対応する IDirectDrawSurface7::Unlock メソッドが呼び出されるまでサーフェス メモリにアクセスできる。サーフェスのロックが解除されると、サーフェス メモリへのポインタは無効となる。
サーフェスのロックされた領域からブリットするために、DirectDraw ブリット関数を呼び出してはならない。この関数を呼び出した場合、ブリットは DDERR_SURFACEBUSY または DDERR_LOCKEDSURFACES のいずれかを返す。GDI ブリット関数は、ロックされたビデオ メモリ サーフェスで使用した場合は何も返さず失敗する。
DDLOCK_NOSYSLOCK フラグを含まなければ、このメソッドは IDirectDrawSurface7::Unlock メソッドを呼び出すまで、DirectDraw で Win16Mutex (Win16Lock とも呼ばれる) を保持する。GUI デバッガは、Win16Mutex が保持されている間は処理できない。
Windows NT/2000 :Windows 2000 が必要。
Windows 95/98 : Windows 98 が必要。
ヘッダー : ddraw.h で宣言。
IDirectDrawSurface7::Unlock、IDirectDrawSurface7::GetDC、IDirectDrawSurface7::ReleaseDC