/************************************************************************** * MCIAVI_drvOpen [internal] */ static DWORD MCIAVI_drvOpen(LPCWSTR str, LPMCI_OPEN_DRIVER_PARMSW modp) { WINE_MCIAVI* wma; static const WCHAR mciAviWStr[] = {'M','C','I','A','V','I',0}; TRACE("%s, %p\n", debugstr_w(str), modp); /* session instance */ if (!modp) return 0xFFFFFFFF; if (!MCIAVI_RegisterClass()) return 0; wma = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WINE_MCIAVI)); if (!wma) return 0; InitializeCriticalSection(&wma->cs); wma->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": WINE_MCIAVI.cs"); wma->hStopEvent = CreateEventW(NULL, FALSE, FALSE, NULL); wma->wDevID = modp->wDeviceID; wma->wCommandTable = mciLoadCommandResource(MCIAVI_hInstance, mciAviWStr, 0); wma->dwStatus = MCI_MODE_NOT_READY; modp->wCustomCommandTable = wma->wCommandTable; modp->wType = MCI_DEVTYPE_DIGITAL_VIDEO; mciSetDriverData(wma->wDevID, (DWORD_PTR)wma); return modp->wDeviceID; }
/************************************************************************** * MCIQTZ_drvOpen [internal] */ static DWORD MCIQTZ_drvOpen(LPCWSTR str, LPMCI_OPEN_DRIVER_PARMSW modp) { WINE_MCIQTZ* wma; static const WCHAR mciAviWStr[] = {'M','C','I','A','V','I',0}; TRACE("(%s, %p)\n", debugstr_w(str), modp); /* session instance */ if (!modp) return 0xFFFFFFFF; wma = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WINE_MCIQTZ)); if (!wma) return 0; modp->wType = MCI_DEVTYPE_DIGITAL_VIDEO; wma->wDevID = modp->wDeviceID; modp->wCustomCommandTable = wma->command_table = mciLoadCommandResource(MCIQTZ_hInstance, mciAviWStr, 0); mciSetDriverData(wma->wDevID, (DWORD_PTR)wma); return modp->wDeviceID; }
/************************************************************************** * MCIQTZ_drvOpen [internal] */ static DWORD MCIQTZ_drvOpen(LPCWSTR str, LPMCI_OPEN_DRIVER_PARMSW modp) { WINE_MCIQTZ* wma; static const WCHAR mciAviWStr[] = {'M','C','I','A','V','I',0}; TRACE("(%s, %p)\n", debugstr_w(str), modp); /* session instance */ if (!modp) return 0xFFFFFFFF; wma = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WINE_MCIQTZ)); if (!wma) return 0; wma->stop_event = CreateEventW(NULL, FALSE, FALSE, NULL); wma->task.notify = CreateEventW(NULL, FALSE, FALSE, NULL); if (!wma->task.notify) goto err; wma->task.done = CreateEventW(NULL, FALSE, FALSE, NULL); if (!wma->task.done) goto err; wma->task.thread = CreateThread(NULL, 0, MCIQTZ_taskThread, &wma->task, 0, NULL); if (!wma->task.thread) goto err; InitializeCriticalSection(&wma->cs); wma->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": WINE_MCIQTZ"); modp->wType = MCI_DEVTYPE_DIGITAL_VIDEO; wma->wDevID = modp->wDeviceID; modp->wCustomCommandTable = wma->command_table = mciLoadCommandResource(MCIQTZ_hInstance, mciAviWStr, 0); mciSetDriverData(wma->wDevID, (DWORD_PTR)wma); return modp->wDeviceID; err: if (wma->task.notify) CloseHandle(wma->task.notify); if (wma->task.done) CloseHandle(wma->task.done); HeapFree(GetProcessHeap(), 0, wma); return 0; }