Sample Code
Windows Driver Samples/ Windows Biometric Driver Samples (UMDF Version 1)/ C++/ adapters/ storage_adapter/ StorageAdapter.cpp/
/*++ THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. Copyright (c) Microsoft Corporation. All rights reserved Module Name: Storage.cpp Abstract: This module contains a stub implementation of a Storage Adapter plug-in for the Windows Biometric service. Author: - Environment: Win32, user mode only. Revision History: NOTES: (None) --*/ /////////////////////////////////////////////////////////////////////////////// // // Header files... // /////////////////////////////////////////////////////////////////////////////// #include "precomp.h" #include "winbio_adapter.h" #include "StorageAdapter.h" /////////////////////////////////////////////////////////////////////////////// // // Forward declarations for the Storage Adapter's interface routines... // /////////////////////////////////////////////////////////////////////////////// static HRESULT WINAPI StorageAdapterAttach( _Inout_ PWINBIO_PIPELINE Pipeline ); static HRESULT WINAPI StorageAdapterDetach( _Inout_ PWINBIO_PIPELINE Pipeline ); static HRESULT WINAPI StorageAdapterClearContext( _Inout_ PWINBIO_PIPELINE Pipeline ); static HRESULT WINAPI StorageAdapterCreateDatabase( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ PWINBIO_UUID DatabaseId, _In_ WINBIO_BIOMETRIC_TYPE Factor, _In_ PWINBIO_UUID Format, _In_ LPCWSTR FilePath, _In_ LPCWSTR ConnectString, _In_ SIZE_T IndexElementCount, _In_ SIZE_T InitialSize ); static HRESULT WINAPI StorageAdapterEraseDatabase( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ PWINBIO_UUID DatabaseId, _In_ LPCWSTR FilePath, _In_ LPCWSTR ConnectString ); static HRESULT WINAPI StorageAdapterOpenDatabase( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ PWINBIO_UUID DatabaseId, _In_ LPCWSTR FilePath, _In_ LPCWSTR ConnectString ); static HRESULT WINAPI StorageAdapterCloseDatabase( _Inout_ PWINBIO_PIPELINE Pipeline ); static HRESULT WINAPI StorageAdapterGetDataFormat( _Inout_ PWINBIO_PIPELINE Pipeline, _Out_ PWINBIO_UUID Format, _Out_ PWINBIO_VERSION Version ); static HRESULT WINAPI StorageAdapterGetDatabaseSize( _Inout_ PWINBIO_PIPELINE Pipeline, _Out_ PSIZE_T AvailableRecordCount, _Out_ PSIZE_T TotalRecordCount ); static HRESULT WINAPI StorageAdapterAddRecord( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ PWINBIO_STORAGE_RECORD RecordContents ); static HRESULT WINAPI StorageAdapterDeleteRecord( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ PWINBIO_IDENTITY Identity, _In_ WINBIO_BIOMETRIC_SUBTYPE SubFactor ); static HRESULT WINAPI StorageAdapterQueryBySubject( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ PWINBIO_IDENTITY Identity, _In_ WINBIO_BIOMETRIC_SUBTYPE SubFactor ); static HRESULT WINAPI StorageAdapterQueryByContent( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ WINBIO_BIOMETRIC_SUBTYPE SubFactor, _In_ ULONG IndexVector[], _In_ SIZE_T IndexElementCount ); static HRESULT WINAPI StorageAdapterGetRecordCount( _Inout_ PWINBIO_PIPELINE Pipeline, _Out_ PSIZE_T RecordCount ); static HRESULT WINAPI StorageAdapterFirstRecord( _Inout_ PWINBIO_PIPELINE Pipeline ); static HRESULT WINAPI StorageAdapterNextRecord( _Inout_ PWINBIO_PIPELINE Pipeline ); static HRESULT WINAPI StorageAdapterGetCurrentRecord( _Inout_ PWINBIO_PIPELINE Pipeline, _Out_ PWINBIO_STORAGE_RECORD RecordContents ); static HRESULT WINAPI StorageAdapterControlUnit( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ ULONG ControlCode, _In_ PUCHAR SendBuffer, _In_ SIZE_T SendBufferSize, _In_ PUCHAR ReceiveBuffer, _In_ SIZE_T ReceiveBufferSize, _Out_ PSIZE_T ReceiveDataSize, _Out_ PULONG OperationStatus ); static HRESULT WINAPI StorageAdapterControlUnitPrivileged( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ ULONG ControlCode, _In_ PUCHAR SendBuffer, _In_ SIZE_T SendBufferSize, _In_ PUCHAR ReceiveBuffer, _In_ SIZE_T ReceiveBufferSize, _Out_ PSIZE_T ReceiveDataSize, _Out_ PULONG OperationStatus ); //----------------------------------------------------------------------------- /////////////////////////////////////////////////////////////////////////////// // // Interface dispatch table // /////////////////////////////////////////////////////////////////////////////// static WINBIO_STORAGE_INTERFACE g_StorageInterface = { WINBIO_STORAGE_INTERFACE_VERSION_1, WINBIO_ADAPTER_TYPE_STORAGE, sizeof(WINBIO_STORAGE_INTERFACE), {0x7f6c2610, 0xfdba, 0x41a3, {0xae, 0x1c, 0x8f, 0xd5, 0x84, 0x59, 0x8d, 0x13}}, StorageAdapterAttach, StorageAdapterDetach, StorageAdapterClearContext, StorageAdapterCreateDatabase, StorageAdapterEraseDatabase, StorageAdapterOpenDatabase, StorageAdapterCloseDatabase, StorageAdapterGetDataFormat, StorageAdapterGetDatabaseSize, StorageAdapterAddRecord, StorageAdapterDeleteRecord, StorageAdapterQueryBySubject, StorageAdapterQueryByContent, StorageAdapterGetRecordCount, StorageAdapterFirstRecord, StorageAdapterNextRecord, StorageAdapterGetCurrentRecord, StorageAdapterControlUnit, StorageAdapterControlUnitPrivileged }; //----------------------------------------------------------------------------- /////////////////////////////////////////////////////////////////////////////// // // Mandatory DLL entrypoint function. // /////////////////////////////////////////////////////////////////////////////// BOOL APIENTRY DllMain( HANDLE ModuleHandle, DWORD ReasonForCall, LPVOID Reserved ) { UNREFERENCED_PARAMETER(ModuleHandle); UNREFERENCED_PARAMETER(ReasonForCall); UNREFERENCED_PARAMETER(Reserved); return TRUE; } //----------------------------------------------------------------------------- /////////////////////////////////////////////////////////////////////////////// // // Well-known interface-discovery function exported by the Storage Adapter // /////////////////////////////////////////////////////////////////////////////// HRESULT WINAPI WbioQueryStorageInterface( _Out_ PWINBIO_STORAGE_INTERFACE *StorageInterface ) { *StorageInterface = &g_StorageInterface; return S_OK; } //----------------------------------------------------------------------------- /////////////////////////////////////////////////////////////////////////////// // // Storage Adapter action routines // /////////////////////////////////////////////////////////////////////////////// static HRESULT WINAPI StorageAdapterAttach( _Inout_ PWINBIO_PIPELINE Pipeline ) { UNREFERENCED_PARAMETER(Pipeline); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterDetach( _Inout_ PWINBIO_PIPELINE Pipeline ) { UNREFERENCED_PARAMETER(Pipeline); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterClearContext( _Inout_ PWINBIO_PIPELINE Pipeline ) { UNREFERENCED_PARAMETER(Pipeline); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterCreateDatabase( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ PWINBIO_UUID DatabaseId, _In_ WINBIO_BIOMETRIC_TYPE Factor, _In_ PWINBIO_UUID Format, _In_ LPCWSTR FilePath, _In_ LPCWSTR ConnectString, _In_ SIZE_T IndexElementCount, _In_ SIZE_T InitialSize ) { UNREFERENCED_PARAMETER(Pipeline); UNREFERENCED_PARAMETER(DatabaseId); UNREFERENCED_PARAMETER(Factor); UNREFERENCED_PARAMETER(Format); UNREFERENCED_PARAMETER(FilePath); UNREFERENCED_PARAMETER(ConnectString); UNREFERENCED_PARAMETER(IndexElementCount); UNREFERENCED_PARAMETER(InitialSize); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterEraseDatabase( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ PWINBIO_UUID DatabaseId, _In_ LPCWSTR FilePath, _In_ LPCWSTR ConnectString ) { UNREFERENCED_PARAMETER(Pipeline); UNREFERENCED_PARAMETER(DatabaseId); UNREFERENCED_PARAMETER(FilePath); UNREFERENCED_PARAMETER(ConnectString); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterOpenDatabase( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ PWINBIO_UUID DatabaseId, _In_ LPCWSTR FilePath, _In_ LPCWSTR ConnectString ) { UNREFERENCED_PARAMETER(Pipeline); UNREFERENCED_PARAMETER(DatabaseId); UNREFERENCED_PARAMETER(FilePath); UNREFERENCED_PARAMETER(ConnectString); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterCloseDatabase( _Inout_ PWINBIO_PIPELINE Pipeline ) { UNREFERENCED_PARAMETER(Pipeline); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterGetDataFormat( _Inout_ PWINBIO_PIPELINE Pipeline, _Out_ PWINBIO_UUID Format, _Out_ PWINBIO_VERSION Version ) { UNREFERENCED_PARAMETER(Pipeline); UNREFERENCED_PARAMETER(Format); UNREFERENCED_PARAMETER(Version); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterGetDatabaseSize( _Inout_ PWINBIO_PIPELINE Pipeline, _Out_ PSIZE_T AvailableRecordCount, _Out_ PSIZE_T TotalRecordCount ) { UNREFERENCED_PARAMETER(Pipeline); UNREFERENCED_PARAMETER(AvailableRecordCount); UNREFERENCED_PARAMETER(TotalRecordCount); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterAddRecord( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ PWINBIO_STORAGE_RECORD RecordContents ) { UNREFERENCED_PARAMETER(Pipeline); UNREFERENCED_PARAMETER(RecordContents); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterDeleteRecord( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ PWINBIO_IDENTITY Identity, _In_ WINBIO_BIOMETRIC_SUBTYPE SubFactor ) { UNREFERENCED_PARAMETER(Pipeline); UNREFERENCED_PARAMETER(Identity); UNREFERENCED_PARAMETER(SubFactor); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterQueryBySubject( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ PWINBIO_IDENTITY Identity, _In_ WINBIO_BIOMETRIC_SUBTYPE SubFactor ) { UNREFERENCED_PARAMETER(Pipeline); UNREFERENCED_PARAMETER(Identity); UNREFERENCED_PARAMETER(SubFactor); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterQueryByContent( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ WINBIO_BIOMETRIC_SUBTYPE SubFactor, _In_ ULONG IndexVector[], _In_ SIZE_T IndexElementCount ) { UNREFERENCED_PARAMETER(Pipeline); UNREFERENCED_PARAMETER(SubFactor); UNREFERENCED_PARAMETER(IndexVector); UNREFERENCED_PARAMETER(IndexElementCount); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterGetRecordCount( _Inout_ PWINBIO_PIPELINE Pipeline, _Out_ PSIZE_T RecordCount ) { UNREFERENCED_PARAMETER(Pipeline); UNREFERENCED_PARAMETER(RecordCount); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterFirstRecord( _Inout_ PWINBIO_PIPELINE Pipeline ) { UNREFERENCED_PARAMETER(Pipeline); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterNextRecord( _Inout_ PWINBIO_PIPELINE Pipeline ) { UNREFERENCED_PARAMETER(Pipeline); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterGetCurrentRecord( _Inout_ PWINBIO_PIPELINE Pipeline, _Out_ PWINBIO_STORAGE_RECORD RecordContents ) { UNREFERENCED_PARAMETER(Pipeline); UNREFERENCED_PARAMETER(RecordContents); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterControlUnit( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ ULONG ControlCode, _In_ PUCHAR SendBuffer, _In_ SIZE_T SendBufferSize, _In_ PUCHAR ReceiveBuffer, _In_ SIZE_T ReceiveBufferSize, _Out_ PSIZE_T ReceiveDataSize, _Out_ PULONG OperationStatus ) { UNREFERENCED_PARAMETER(Pipeline); UNREFERENCED_PARAMETER(ControlCode); UNREFERENCED_PARAMETER(SendBuffer); UNREFERENCED_PARAMETER(SendBufferSize); UNREFERENCED_PARAMETER(ReceiveBuffer); UNREFERENCED_PARAMETER(ReceiveBufferSize); UNREFERENCED_PARAMETER(ReceiveDataSize); UNREFERENCED_PARAMETER(OperationStatus); return E_NOTIMPL; } //----------------------------------------------------------------------------- static HRESULT WINAPI StorageAdapterControlUnitPrivileged( _Inout_ PWINBIO_PIPELINE Pipeline, _In_ ULONG ControlCode, _In_ PUCHAR SendBuffer, _In_ SIZE_T SendBufferSize, _In_ PUCHAR ReceiveBuffer, _In_ SIZE_T ReceiveBufferSize, _Out_ PSIZE_T ReceiveDataSize, _Out_ PULONG OperationStatus ) { UNREFERENCED_PARAMETER(Pipeline); UNREFERENCED_PARAMETER(ControlCode); UNREFERENCED_PARAMETER(SendBuffer); UNREFERENCED_PARAMETER(SendBufferSize); UNREFERENCED_PARAMETER(ReceiveBuffer); UNREFERENCED_PARAMETER(ReceiveBufferSize); UNREFERENCED_PARAMETER(ReceiveDataSize); UNREFERENCED_PARAMETER(OperationStatus); return E_NOTIMPL; } //-----------------------------------------------------------------------------
Our Services
-
What our customers say about us?
Read our customer testimonials to find out why our clients keep returning for their projects.
View Testimonials