17const GUID KSPROPTYPESETID_General = {0x97E99BA0L, 0xBDEA, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}};
22 IN const KSPROPERTY_SET* PropertySet,
28 OUT PFNKSHANDLER *PropertyHandler,
42 for(ItemIndex = 0; ItemIndex < PropertySet[
Index].PropertiesCount; ItemIndex++)
46 *
Set = (PKSPROPERTY_SET)&PropertySet[
Index];
71 *PropertyHandler = PropertySet[
Index].PropertyItem[ItemIndex].SupportHandler;
102 IoStatus->Information = PropertySet[
Index].PropertyItem[ItemIndex].MinProperty;
109 IoStatus->Information = PropertySet[
Index].PropertyItem[ItemIndex].MinData;
117 *PropertyHandler = PropertySet[
Index].PropertyItem[ItemIndex].SetPropertyHandler;
124 *PropertyHandler = PropertySet[
Index].PropertyItem[ItemIndex].GetPropertyHandler;
141 IN const KSPROPERTY_SET* PropertySet,
150 PFNKSHANDLER PropertyHandler =
NULL;
163 if (OutputBufferLength < IoStack->
Parameters.DeviceIoControl.OutputBufferLength)
190 if (!
Irp->AssociatedIrp.SystemBuffer)
272 ASSERT(PropertyItemSize == 0 || PropertyItemSize ==
sizeof(KSPROPERTY_ITEM));
280 KSPROPERTY_SET_IRP_STORAGE(
Irp) =
Set;
283 if (PropertyItemSize)
330 Irp->IoStatus.Information =
sizeof(
GUID) * PropertySetsCount;
361 IN const KSPROPERTY_SET* PropertySet)
374KsPropertyHandlerWithAllocator(
377 _In_reads_(PropertySetsCount)
const KSPROPERTY_SET* PropertySet,
387 IN const KSFASTPROPERTY_ITEM * FastIoTable,
389 OUT PFNKSFASTHANDLER * FastPropertyHandler)
400 if (FastIoTable[
Index].SetSupported)
402 *FastPropertyHandler = FastIoTable[
Index].SetPropertyHandler;
409 if (FastIoTable[
Index].GetSupported)
411 *FastPropertyHandler = FastIoTable[
Index].GetPropertyHandler;
437 IN const KSPROPERTY_SET* PropertySet)
443 PFNKSFASTHANDLER FastPropertyHandler;
478 if (PropertySetsCount)
500 }
while(
Index < PropertySetsCount);
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER Handler
_In_ PSTORAGE_PROPERTY_ID PropertyId
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
#define NT_SUCCESS(StatCode)
static const WCHAR Description[]
KSDDKAPI BOOLEAN NTAPI KsFastPropertyHandler(IN PFILE_OBJECT FileObject, IN PKSPROPERTY UNALIGNED Property, IN ULONG PropertyLength, IN OUT PVOID UNALIGNED Data, IN ULONG DataLength, OUT PIO_STATUS_BLOCK IoStatus, IN ULONG PropertySetsCount, IN const KSPROPERTY_SET *PropertySet)
const GUID KSPROPTYPESETID_General
NTSTATUS KspPropertyHandler(IN PIRP Irp, IN ULONG PropertySetsCount, IN const KSPROPERTY_SET *PropertySet, IN PFNKSALLOCATOR Allocator OPTIONAL, IN ULONG PropertyItemSize OPTIONAL)
NTSTATUS FindFastPropertyHandler(IN ULONG FastIoCount, IN const KSFASTPROPERTY_ITEM *FastIoTable, IN PKSPROPERTY PropertyId, OUT PFNKSFASTHANDLER *FastPropertyHandler)
KSDDKAPI NTSTATUS NTAPI KsPropertyHandler(IN PIRP Irp, IN ULONG PropertySetsCount, IN const KSPROPERTY_SET *PropertySet)
KSDDKAPI NTSTATUS NTAPI KsDispatchSpecificProperty(IN PIRP Irp, IN PFNKSHANDLER Handler)
NTSTATUS FindPropertyHandler(IN PIO_STATUS_BLOCK IoStatus, IN const KSPROPERTY_SET *PropertySet, IN ULONG PropertySetCount, IN PKSPROPERTY Property, IN ULONG InputBufferLength, IN ULONG OutputBufferLength, OUT PVOID OutputBuffer, OUT PFNKSHANDLER *PropertyHandler, OUT PKSPROPERTY_SET *Set, OUT PKSPROPERTY_ITEM *PropertyItem)
#define _IRQL_requires_max_(irql)
#define KSPROPERTY_TYPE_SET
#define KSPROPERTY_TYPE_SETSUPPORT
#define KSPROPERTY_TYPE_BASICSUPPORT
struct KSIDENTIFIER * PKSPROPERTY
#define KSPROPERTY_TYPE_GET
#define ExGetPreviousMode
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
#define EXCEPTION_EXECUTE_HANDLER
struct KSPROPERTY_DESCRIPTION * PKSPROPERTY_DESCRIPTION
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
#define STATUS_INVALID_BUFFER_SIZE
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
#define STATUS_BUFFER_TOO_SMALL
PULONG MinorVersion OPTIONAL
struct _IO_STACK_LOCATION::@1575::@1576 DeviceIoControl
union _IO_STACK_LOCATION::@1575 Parameters
#define RtlCopyMemory(Destination, Source, Length)
#define RtlMoveMemory(Destination, Source, Length)
#define STATUS_INVALID_PARAMETER
#define STATUS_MORE_ENTRIES
#define STATUS_INSUFFICIENT_RESOURCES
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
_In_ WDFREQUEST _In_ size_t OutputBufferLength
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
_Must_inspect_result_ _In_ WDFOBJECT _In_ CONST GUID * Guid
#define IsEqualGUIDAligned(guid1, guid2)
_Must_inspect_result_ _In_ ULONG Flags
#define IRP_DEALLOCATE_BUFFER
#define IRP_INPUT_OPERATION