/*++ Copyright (c) Microsoft Corporation Module Name: FxObjectKm.cpp Abstract: Kernel mode implementations of FxObject APIs Author: Environment: kernel mode only Revision History: --*/ #include "fxobjectpch.hpp" extern "C" { #if defined(EVENT_TRACING) #include "FxObjectKm.tmh" #endif } extern "C" { _Must_inspect_result_ NTSTATUS FxObject::_ObjectQuery( _In_ FxObject* Object, _In_ CONST GUID* Guid, _In_ ULONG QueryBufferLength, _Out_writes_bytes_(QueryBufferLength) PVOID QueryBuffer ) /*++ Routine Description: Query the object handle for specific information This allows dynamic extensions to DDI's. Currently, it is used to allow test hooks for verification which are not available in a production release. Arguments: Object - Object to query Guid - GUID to represent the information/DDI to query for QueryBufferLength - Length of QueryBuffer to return data in QueryBuffer - Pointer to QueryBuffer Returns: NTSTATUS --*/ { // PFX_DRIVER_GLOBALS pFxDriverGlobals = Object->GetDriverGlobals(); // // Design Note: This interface does not look strongly typed // but it is. The GUID defines a specific strongly typed // contract for QueryBuffer and QueryBufferLength. // #if DBG // // These operations are only available on checked builds for deep unit // testing, code coverage analysis, and model verification. // // Add code based on the GUID // IsEqualGUID(guid1, guid2), DEFINE_GUID, INITGUID, inc\wnet\guiddef.h UNREFERENCED_PARAMETER(Object); UNREFERENCED_PARAMETER(Guid); UNREFERENCED_PARAMETER(QueryBufferLength); UNREFERENCED_PARAMETER(QueryBuffer); #else UNREFERENCED_PARAMETER(Object); UNREFERENCED_PARAMETER(Guid); UNREFERENCED_PARAMETER(QueryBufferLength); UNREFERENCED_PARAMETER(QueryBuffer); #endif return STATUS_NOT_FOUND; } } // extern "C"