summaryrefslogtreecommitdiff
path: root/AVStream/avscamera/sys/AvsCameraDevice.cpp
diff options
context:
space:
mode:
authorkarlf <[email protected]>2016-08-11 13:28:13 -0700
committerkarlf <[email protected]>2016-08-11 13:28:13 -0700
commit96eb96dfb613e4c745db6bd1f53a92fe7e2290fc (patch)
treead5f3ede5cbcd6b598677ce41bcf8318471bdd92 /AVStream/avscamera/sys/AvsCameraDevice.cpp
parent687b274aa38fd05c8c26e3068932121876d7f745 (diff)
Updated for "Windows 10 Anniversary Update" (Version 1607)
Diffstat (limited to 'AVStream/avscamera/sys/AvsCameraDevice.cpp')
-rw-r--r--AVStream/avscamera/sys/AvsCameraDevice.cpp99
1 files changed, 99 insertions, 0 deletions
diff --git a/AVStream/avscamera/sys/AvsCameraDevice.cpp b/AVStream/avscamera/sys/AvsCameraDevice.cpp
new file mode 100644
index 00000000..8916e2ef
--- /dev/null
+++ b/AVStream/avscamera/sys/AvsCameraDevice.cpp
@@ -0,0 +1,99 @@
+/**************************************************************************
+
+ A/V Stream Camera Sample
+
+ Copyright (c) 2015, Microsoft Corporation.
+
+ File:
+
+ AvsCameraDevice.cpp
+
+ Abstract:
+
+ Device class implementation. Derived from CCaptureDevice.
+ This class overloads our base device class implementation.
+
+ History:
+
+ created 02/24/2015
+
+**************************************************************************/
+
+#include "Common.h"
+
+/**************************************************************************
+
+ PAGEABLE CODE
+
+**************************************************************************/
+
+#ifdef ALLOC_PRAGMA
+#pragma code_seg("PAGE")
+#endif // ALLOC_PRAGMA
+
+//
+// DispatchCreate():
+//
+// This is the Add Device dispatch for the capture device. It creates
+// the CCaptureDevice and associates it with the device via the bag.
+//
+NTSTATUS
+CAvsCameraDevice::
+DispatchCreate (
+ _In_ PKSDEVICE Device
+)
+{
+ PAGED_CODE();
+
+ DBG_ENTER("()");
+
+ CAvsCameraDevice *CapDevice = new (NonPagedPoolNx, 'eviD') CAvsCameraDevice (Device);
+ if( !CapDevice)
+ {
+ //
+ // Return failure if we couldn't create the device.
+ //
+ return STATUS_INSUFFICIENT_RESOURCES;
+ }
+
+ NTSTATUS Status = CapDevice->Prepare();
+ if (!NT_SUCCESS (Status))
+ {
+ // Init failure.
+ delete CapDevice;
+ }
+
+ DBG_LEAVE("()");
+ return Status;
+}
+
+NTSTATUS
+CAvsCameraDevice::
+Initialize()
+{
+ PAGED_CODE();
+
+ static
+ CSensorContext Context[] =
+ {
+ { L"RFC", &AvsCameraFilterDescriptor, AcpiPldPanelBack, AcpiPldRotation0 },
+ { L"FFC", &AvsCameraFilterDescriptorFFC, AcpiPldPanelFront, AcpiPldRotation90 }
+ };
+
+ m_FilterDescriptorCount = SIZEOF_ARRAY(Context);
+ m_Context = Context;
+
+ return CCaptureDevice::Initialize();
+}
+
+CSensor *
+CAvsCameraDevice::
+CreateSensor(
+ _In_ const KSFILTER_DESCRIPTOR *Descriptors
+)
+{
+ PAGED_CODE();
+
+ return new (NonPagedPoolNx, 'sneS') CSensorSimulation( this, Descriptors );
+}
+