wintun: calculate path of NDIS device object symbolic link
This commit is contained in:
parent
4d5819183e
commit
298d759f3e
@ -311,6 +311,9 @@ func CreateInterface(description string, requestedGUID *windows.GUID) (wintun *W
|
|||||||
waitForRegistryTimeout)
|
waitForRegistryTimeout)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
_, err = registryEx.GetStringValueWait(key, "Name", waitForRegistryTimeout)
|
_, err = registryEx.GetStringValueWait(key, "Name", waitForRegistryTimeout)
|
||||||
|
if err == nil {
|
||||||
|
_, err = registryEx.GetStringValueWait(key, "PnPInstanceId", waitForRegistryTimeout)
|
||||||
|
}
|
||||||
key.Close()
|
key.Close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -614,6 +617,23 @@ func (wintun *Wintun) DataFileName() string {
|
|||||||
return fmt.Sprintf("\\\\.\\Global\\WINTUN%d", wintun.luidIndex)
|
return fmt.Sprintf("\\\\.\\Global\\WINTUN%d", wintun.luidIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NdisFileName returns the Wintun NDIS device object name.
|
||||||
|
func (wintun *Wintun) NdisFileName() (string, error) {
|
||||||
|
key, err := registry.OpenKey(registry.LOCAL_MACHINE, wintun.netRegKeyName(), registry.QUERY_VALUE)
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("Network-specific registry key open failed: %v", err)
|
||||||
|
}
|
||||||
|
defer key.Close()
|
||||||
|
|
||||||
|
// Get the interface name.
|
||||||
|
pnpInstanceID, err := registryEx.GetStringValue(key, "PnPInstanceId")
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("PnpInstanceId registry key read failed: %v", err)
|
||||||
|
}
|
||||||
|
mangledPnpNode := strings.ReplaceAll(fmt.Sprintf("%s\\{cac88484-7515-4c03-82e6-71a87abac361}", pnpInstanceID), "\\", "#")
|
||||||
|
return fmt.Sprintf("\\\\.\\Global\\%s", mangledPnpNode), nil
|
||||||
|
}
|
||||||
|
|
||||||
// GUID returns the GUID of the interface.
|
// GUID returns the GUID of the interface.
|
||||||
func (wintun *Wintun) GUID() windows.GUID {
|
func (wintun *Wintun) GUID() windows.GUID {
|
||||||
return wintun.cfgInstanceID
|
return wintun.cfgInstanceID
|
||||||
|
Loading…
Reference in New Issue
Block a user