You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
4.2 KiB
166 lines
4.2 KiB
/*++
|
|
|
|
Copyright (c) 1998-1999 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
wmi.c
|
|
|
|
Abstract:
|
|
|
|
WMI entry points for ARP1394.
|
|
|
|
Revision History:
|
|
|
|
Who When What
|
|
-------- -------- ----------------------------------------------
|
|
josephj 11-23-98 Created
|
|
|
|
Notes:
|
|
|
|
--*/
|
|
#include <precomp.h>
|
|
|
|
|
|
//
|
|
// File-specific debugging defaults.
|
|
//
|
|
#define TM_CURRENT TM_WMI
|
|
|
|
|
|
NTSTATUS
|
|
ArpWmiDispatch(
|
|
IN PDEVICE_OBJECT pDeviceObject,
|
|
IN PIRP pIrp
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
System dispatch function for handling IRP_MJ_SYSTEM_CONTROL IRPs from WMI.
|
|
|
|
Arguments:
|
|
|
|
pDeviceObject - Pointer to device object. The device extension field
|
|
contains a pointer to the Interface
|
|
|
|
pIrp - Pointer to IRP.
|
|
|
|
Return Value:
|
|
|
|
NT status code.
|
|
|
|
--*/
|
|
{
|
|
PIO_STACK_LOCATION pIrpSp = IoGetCurrentIrpStackLocation(pIrp);
|
|
PVOID DataPath = pIrpSp->Parameters.WMI.DataPath;
|
|
ULONG BufferSize = pIrpSp->Parameters.WMI.BufferSize;
|
|
PVOID pBuffer = pIrpSp->Parameters.WMI.Buffer;
|
|
NTSTATUS Status = STATUS_UNSUCCESSFUL;
|
|
ULONG ReturnSize;
|
|
ENTER("WmiDispatch", 0x9141e00e)
|
|
|
|
#if 0
|
|
PATMARP_INTERFACE pInterface;
|
|
|
|
pInterface = AA_PDO_TO_INTERFACE(pDeviceObject);
|
|
|
|
AA_STRUCT_ASSERT(pInterface, aai);
|
|
|
|
ReturnSize = 0;
|
|
|
|
switch (pIrpSp->MinorFunction)
|
|
{
|
|
case IRP_MN_REGINFO:
|
|
|
|
Status = AtmArpWmiRegister(
|
|
pInterface,
|
|
PtrToUlong(DataPath),
|
|
pBuffer,
|
|
BufferSize,
|
|
&ReturnSize
|
|
);
|
|
break;
|
|
|
|
case IRP_MN_QUERY_ALL_DATA:
|
|
|
|
Status = AtmArpWmiQueryAllData(
|
|
pInterface,
|
|
(LPGUID)DataPath,
|
|
(PWNODE_ALL_DATA)pBuffer,
|
|
BufferSize,
|
|
&ReturnSize
|
|
);
|
|
break;
|
|
|
|
case IRP_MN_QUERY_SINGLE_INSTANCE:
|
|
|
|
Status = AtmArpWmiQuerySingleInstance(
|
|
pInterface,
|
|
pBuffer,
|
|
BufferSize,
|
|
&ReturnSize
|
|
);
|
|
|
|
break;
|
|
|
|
case IRP_MN_CHANGE_SINGLE_INSTANCE:
|
|
|
|
Status = AtmArpWmiChangeSingleInstance(
|
|
pInterface,
|
|
pBuffer,
|
|
BufferSize,
|
|
&ReturnSize
|
|
);
|
|
break;
|
|
|
|
case IRP_MN_CHANGE_SINGLE_ITEM:
|
|
|
|
Status = AtmArpWmiChangeSingleItem(
|
|
pInterface,
|
|
pBuffer,
|
|
BufferSize,
|
|
&ReturnSize
|
|
);
|
|
break;
|
|
|
|
case IRP_MN_ENABLE_EVENTS:
|
|
|
|
Status = AtmArpWmiSetEventStatus(
|
|
pInterface,
|
|
(LPGUID)DataPath,
|
|
TRUE // Enable
|
|
);
|
|
break;
|
|
|
|
case IRP_MN_DISABLE_EVENTS:
|
|
|
|
Status = AtmArpWmiSetEventStatus(
|
|
pInterface,
|
|
(LPGUID)DataPath,
|
|
FALSE // Disable
|
|
);
|
|
break;
|
|
|
|
case IRP_MN_ENABLE_COLLECTION:
|
|
case IRP_MN_DISABLE_COLLECTION:
|
|
default:
|
|
|
|
Status = STATUS_INVALID_DEVICE_REQUEST;
|
|
break;
|
|
}
|
|
|
|
pIrp->IoStatus.Status = Status;
|
|
pIrp->IoStatus.Information = (NT_SUCCESS(Status) ? ReturnSize: 0);
|
|
|
|
AADEBUGP(AAD_INFO,
|
|
("WmiDispatch done: IF x%p, MinorFn %d, Status x%p, ReturnInfo %d\n",
|
|
pInterface, pIrpSp->MinorFunction, Status, pIrp->IoStatus.Information));
|
|
|
|
IoCompleteRequest(pIrp, IO_NO_INCREMENT);
|
|
|
|
#endif // 0
|
|
|
|
EXIT()
|
|
return (Status);
|
|
}
|