CM_Query_And_Remove_SubTree_Ex (cfgmgr32)
Last changed: anonymous

Checks whether a device instance and its children can be removed and, if so, it removes them. If the operation succeeds, the function returns CR_SUCCESS. Otherwise it returns one of the error codes with "CR_" prefix that are defined in Cfgmgr32.h

C# Signature:

[DllImport("Cfgmgr32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
static extern int CM_Query_And_Remove_SubTree_Ex(
    int deviceInstance,
    out PnpVetoType vetoType,
    StringBuilder vetoName,
    uint vetoNameLength,
    CMQueryAndRemoveSubtreeExFlags flags,
    IntPtr machine);


deviceInstance, Caller-supplied device instance handle to the device at the root of the subtree to be removed. This device instance handle is bound to the machine handle supplied by hMachine.

vetoType, If not NULL, this points to a location that, if the removal request fails, receives a PNP_VETO_TYPE-typed value indicating the reason for the failure.

vetoName, If not NULL, this is a caller-supplied pointer to a string buffer that receives a text string. The type of information this string provides is dependent on the value received by pVetoType. For information about these strings, see PNP_VETO_TYPE.

vetoNameLength, Caller-supplied value representing the length (number of characters) of the string buffer supplied by pszVetoName. This should be set to MAX_PATH.

flags, A bitwise OR of the caller-supplied flag constants that are described in the Remarks section.

machine, Caller-supplied machine handle to which the caller-supplied device instance handle is bound.

VB Signature:

Declare Function CM_Query_And_Remove_SubTree_Ex Lib "cfgmgr32.dll" (TODO) As TODO

User-Defined Types:


Alternative Managed API:

Do you know one? Please contribute it!



Tips & Tricks:

Please add some!

Sample Code:

Please add some!