簡體   English   中英

如何將 HANDLE 移動到 winapi 中的另一個 HANDLE?

[英]How to move HANDLE to another HANDLE in winapi?

考慮這樣打開驅動文件:

HANDLE h = CreateFile(TEXT("\\\\.\\" DRIVER_NAME_DOS),
                GENERIC_READ | GENERIC_WRITE,
                0,
                NULL,
                OPEN_EXISTING,
                FILE_ATTRIBUTE_NORMAL,
                NULL);

我的問題是,如果驅動程序被指定為獨占設備(這意味着當時只能由一個實體打開),如何將“所有權”從一個句柄傳遞給另一個句柄?

我不想先CloseHandle(h)然后h1=createfile(...)而是做類似的事情(它是我的偽代碼,希望它可以理解)

h1 = std::move(h)
//h1 has handle to driver file, h is freed

HANDLE 只是引擎蓋下的指針

typedef PVOID HANDLE;
typedef void *PVOID;

您可以簡單地將其分配給相同類型的另一個指針:

HANDLE h1 = h;

作為一種良好的編碼習慣,您最好取消前一個:

h = nullptr;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM