📄 qci_ioctl.cpp
字号:
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES OR INDEMNITIES.
//
//
// (C) Copyright 2006 Marvell International Ltd.
// All Rights Reserved
//
#include <windows.h>
#include <ceddk.h>
#include "pdd_private.h"
#include "qci.h"
void CCameraPdd::qci_clock_enable(BOOL is_on)
{
DWORD bytes_return;
BusIoControl(qci_bus, IOCTL_QCI_CLOCK_ENABLE,
(LPVOID)&is_on, sizeof(is_on),
NULL, 0,
&bytes_return,
NULL);
}
// to access qci bus driver
void CCameraPdd::qci_enable()
{
DWORD bytes_return;
BusIoControl(qci_bus, IOCTL_QCI_ENABLE,
NULL, 0,
NULL, 0,
&bytes_return,
NULL);
}
void CCameraPdd::qci_start_capture(int still_skips)
{
DWORD bytes_return;
BusIoControl(qci_bus, IOCTL_QCI_START_CAPTURE,
(LPVOID)&still_skips, sizeof(still_skips),
NULL, 0,
&bytes_return,
NULL);
}
void CCameraPdd::qci_stop_capture()
{
DWORD bytes_return;
BusIoControl(qci_bus, IOCTL_QCI_STOP_CAPTURE,
NULL, 0,
NULL, 0,
&bytes_return,
NULL);
}
void CCameraPdd::qci_set_master_timing(qci_master_timing_t* timing)
{
DWORD bytes_return;
BusIoControl(qci_bus, IOCTL_QCI_SET_MASTER_TIMING,
(LPVOID)timing, sizeof(*timing),
NULL, 0,
&bytes_return,
NULL);
}
void CCameraPdd::qci_set_image_format(int in_format, int out_format)
{
DWORD bytes_return;
int input[2];
input[0] = in_format;
input[1] = out_format;
BusIoControl(qci_bus, IOCTL_QCI_SET_IMAGE_FORMAT,
(LPVOID)input, sizeof(input),
NULL, 0,
&bytes_return,
NULL);
}
void CCameraPdd::qci_set_interface(qci_interface_t* qci_interface)
{
DWORD bytes_return;
BusIoControl(qci_bus, IOCTL_QCI_SET_INTERFACE,
(LPVOID)qci_interface, sizeof(*qci_interface),
NULL, 0,
&bytes_return,
NULL);
}
void CCameraPdd::qci_set_capture_callback(capture_callback_t callback,
ULONG user,
ULONG mode)
{
DWORD bytes_return;
callback_data_t callback_data = {
callback,
user,
mode,
&qci_frame
};
//NKDbgPrintfW(L"CCameraPdd::qci_frame addr is 0x%x\r\n",qci_frame);
BusIoControl(qci_bus, IOCTL_QCI_SET_CAPTURE_CALLBACK,
(LPVOID)&callback_data, sizeof(callback_data),
NULL, 0,
&bytes_return,
NULL);
}
void CCameraPdd::qci_notify_formats(format_t* format)
{
DWORD bytes_return;
BusIoControl(qci_bus, IOCTL_QCI_NOTIFY_FORMAT,
(LPVOID)format, sizeof(*format),
NULL, 0,
&bytes_return,
NULL);
}
void CCameraPdd::qci_set_frame_format(format_t* format)
{
DWORD bytes_return;
BusIoControl(qci_bus, IOCTL_QCI_SET_FRAME_FORMAT,
(LPVOID)format, sizeof(*format),
NULL, 0,
&bytes_return,
NULL);
}
void CCameraPdd::qci_set_image_proc_cfg(qci_image_proc_cfg_t* cfg)
{
DWORD bytes_return;
BusIoControl(qci_bus, IOCTL_QCI_SET_IMAGE_PROC_CFG,
(LPVOID)cfg, sizeof(*cfg),
NULL, 0,
&bytes_return,
NULL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -