mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 21:05:43 +00:00
[UMPNPMGR] Implement PNP_DisableDevInst()
This commit is contained in:
parent
db02f87d7b
commit
b39c55e5d2
1 changed files with 63 additions and 2 deletions
|
@ -286,6 +286,52 @@ SetDeviceStatus(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static
|
||||||
|
CONFIGRET
|
||||||
|
DisableDeviceInstance(
|
||||||
|
_In_ LPWSTR pszDeviceInstance,
|
||||||
|
_Inout_opt_ PPNP_VETO_TYPE pVetoType,
|
||||||
|
_Inout_opt_ LPWSTR pszVetoName,
|
||||||
|
_In_ DWORD ulNameLength)
|
||||||
|
{
|
||||||
|
PLUGPLAY_CONTROL_QUERY_REMOVE_DATA QueryRemoveData;
|
||||||
|
CONFIGRET ret = CR_SUCCESS;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
DPRINT1("DisableDeviceInstance(%S %p %p %lu)\n",
|
||||||
|
pszDeviceInstance, pVetoType, pszVetoName, ulNameLength);
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&QueryRemoveData.DeviceInstance,
|
||||||
|
pszDeviceInstance);
|
||||||
|
|
||||||
|
QueryRemoveData.Flags = 0;
|
||||||
|
QueryRemoveData.VetoType = 0;
|
||||||
|
QueryRemoveData.VetoName = pszVetoName;
|
||||||
|
QueryRemoveData.NameLength = ulNameLength;
|
||||||
|
|
||||||
|
Status = NtPlugPlayControl(PlugPlayControlQueryAndRemoveDevice,
|
||||||
|
&QueryRemoveData,
|
||||||
|
sizeof(PLUGPLAY_CONTROL_QUERY_REMOVE_DATA));
|
||||||
|
if (Status == STATUS_NO_SUCH_DEVICE)
|
||||||
|
{
|
||||||
|
ret = CR_INVALID_DEVNODE;
|
||||||
|
}
|
||||||
|
else if (Status == STATUS_PLUGPLAY_QUERY_VETOED)
|
||||||
|
{
|
||||||
|
if (pVetoType != NULL)
|
||||||
|
*pVetoType = QueryRemoveData.VetoType;
|
||||||
|
|
||||||
|
ret = CR_REMOVE_VETOED;
|
||||||
|
}
|
||||||
|
else if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
ret = NtStatusToCrError(Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static
|
static
|
||||||
BOOL
|
BOOL
|
||||||
IsValidDeviceInstanceID(
|
IsValidDeviceInstanceID(
|
||||||
|
@ -3038,10 +3084,25 @@ PNP_DisableDevInst(
|
||||||
DWORD ulNameLength,
|
DWORD ulNameLength,
|
||||||
DWORD ulFlags)
|
DWORD ulFlags)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNREFERENCED_PARAMETER(hBinding);
|
||||||
return CR_CALL_NOT_IMPLEMENTED;
|
|
||||||
|
DPRINT1("PNP_DisableDevInst(%p %S %p %p %lu 0x%08lx)\n",
|
||||||
|
hBinding, pDeviceID, pVetoType, pszVetoName, ulNameLength, ulFlags);
|
||||||
|
|
||||||
|
if (ulFlags & ~CM_DISABLE_BITS)
|
||||||
|
return CR_INVALID_FLAG;
|
||||||
|
|
||||||
|
if (!IsValidDeviceInstanceID(pDeviceID) ||
|
||||||
|
IsRootDeviceInstanceID(pDeviceID))
|
||||||
|
return CR_INVALID_DEVINST;
|
||||||
|
|
||||||
|
return DisableDeviceInstance(pDeviceID,
|
||||||
|
pVetoType,
|
||||||
|
pszVetoName,
|
||||||
|
ulNameLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Function 33 */
|
/* Function 33 */
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue