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)
|
||||
if err == nil {
|
||||
_, err = registryEx.GetStringValueWait(key, "Name", waitForRegistryTimeout)
|
||||
if err == nil {
|
||||
_, err = registryEx.GetStringValueWait(key, "PnPInstanceId", waitForRegistryTimeout)
|
||||
}
|
||||
key.Close()
|
||||
}
|
||||
}
|
||||
@ -614,6 +617,23 @@ func (wintun *Wintun) DataFileName() string {
|
||||
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.
|
||||
func (wintun *Wintun) GUID() windows.GUID {
|
||||
return wintun.cfgInstanceID
|
||||
|
Loading…
Reference in New Issue
Block a user