LPADAPTER PacketOpenAdapter(LPTSTR AdapterName);
參數:AdapterName 格式如 \Device\NPF_{GUID} (由 PacketGetAdapterNames 取得)。
返回:成功 → 指向完整初始化 ADAPTER 的指標;失敗 → NULL。
OpenSCManager(..., SC_MANAGER_ALL_ACCESS) → 需 Administrators 權限HKLM\SYSTEM\CurrentControlSet\Services\NPF 是否存在PacketInstallDriver("npf.sys") → 先找當前目錄,再找系統目錄OpenService → QueryServiceStatus → 未啟動則 StartService
// 輸入: \Device\NPF_{A67CEC3B-...}
// 組裝: \\.\Packet_NPF_{A67CEC3B-...}
GENERIC_READ | GENERIC_WRITE, OPEN_EXISTINGPacketSetReadEvt 建立 ReadEventhFile、SymbolicLink、ReadTimeOut=0、NumWrites=0npf.sys、Oemsetup.inf 並正確簽章(Win10+ 驅動簽章強制)| 現象 | 可能原因 | 排查 |
|---|---|---|
| 返回 NULL | SCM 連線失敗 | 確認管理員權限、服務啟動類型 |
| CreateFile 失敗 | 符號連結錯誤/驅動未載入 | 用 sc query npf 確認驅動狀態 |
| 權限被拒 | NPF 裝置 ACL 限制 | 檢查 PacketInstallDriver 是否建立正確安全描述子 |