Zhiyi Zhang zzhang@codeweavers.com writes:
+/******************************************************************************
D3DKMTOpenAdapterFromGdiDisplayName [GDI32.@]
- */
+NTSTATUS WINAPI D3DKMTOpenAdapterFromGdiDisplayName( D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME *desc ) +{
- static const WCHAR display1W[] = {'\','\','.','\','D','I','S','P','L','A','Y','1',0};
- static D3DKMT_HANDLE handle_start = 0;
- struct d3dkmt_adapter *adapter;
- TRACE("(%p) semi-stub\n", desc);
- if (!desc)
return STATUS_UNSUCCESSFUL;
- /* FIXME: Support multiple monitors */
- if (lstrcmpiW( desc->DeviceName, display1W ))
- {
FIXME("%s is unsupported\n", wine_dbgstr_w( desc->DeviceName ));
return STATUS_UNSUCCESSFUL;
- }
- adapter = heap_alloc( sizeof( *adapter ) );
- if (!adapter)
return STATUS_NO_MEMORY;
- /* D3DKMT_HANDLE is UINT, so we can't use pointer as handle */
- adapter->handle = ++handle_start;
You should use interlocked functions, or do that inside the critical section.