C 實現修改磁碟san策略

2021-08-20 02:26:32 字數 1569 閱讀 8628

最近在公司遇到磁碟映象盤寫io,getlasterror返回錯誤碼19,磁碟受到介質保護,diskpart檢視了一下磁碟的san策略,發現策略為使共享磁碟離線。現在要支援修改san策略為全部磁碟聯機。

c++**如下:

#include #include #include using namespace std;

int shareddiskoperation(int cmd)

sethandleinformation(hchildstdoutrd, handle_flag_inherit, 0);

if (!createpipe(&hchildstdinrd, &hchildstdinwr, &saattr, 0))

sethandleinformation(hchildstdinwr, handle_flag_inherit, 0);

tchar szcmdline = text("diskpart.exe");

process_information piprocinfo;

startupinfo sistartinfo;

bool bfuncretn = false;

zeromemory(&piprocinfo, sizeof(process_information));

zeromemory(&sistartinfo, sizeof(startupinfo));

sistartinfo.cb = sizeof(startupinfo);

sistartinfo.hstderror = hchildstdoutwr;

sistartinfo.hstdoutput = hchildstdoutwr; //控制台視窗

sistartinfo.hstdinput = hchildstdinrd; //鍵盤

sistartinfo.dwflags |= startf_usestdhandles;

bfuncretn = createprocess(null, szcmdline, null, null, true, 0, null, null, &sistartinfo, &piprocinfo);

if (bfuncretn == 0)

else

dword dwwritten;

if (cmd == 1)//san policy = onlineall

else if (cmd == 2)//san policy = offlineshared

else if (cmd == 3)//san policy = offlineall

else

writefile(hchildstdinwr, "exit", sizeof("exit"), &dwwritten, null);

if (hchildstdinrd != null)

if (hchildstdinwr != null)

if (hchildstdoutwr != null)

if (hchildstdoutrd != null)

return 0;

}int main()

c 實現策略模式

策略模式 strategy 它定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。上面是 大話設計模式 中給出的定義,感覺這個概念給的不好,看了之後不能完全清晰明白該模式 可能自己水平太水的原因吧 在 effective c 中指出,策略模式是v...

策略模式 C 實現

include include include 問題 和工廠模式的本質區別?using namespace std abstract sort class strategy class class super sort virtual void sort int a,int l,int r conc...

C 策略模式實現

策略模式 它定義了演算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓演算法的變化,不會影響到使用的客戶。strategy.cpp 定義控制台應用程式的入口點。include stdafx.h includeusing namespace std class strategy class co...